@synergenius/flow-weaver 0.9.1 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9498,7 +9498,7 @@ function isScopedMandatoryPort(portName) {
9498
9498
  function isControlFlowPort(portName) {
9499
9499
  return isExecutePort(portName) || isSuccessPort(portName) || isFailurePort(portName);
9500
9500
  }
9501
- var RESERVED_NODE_NAMES, RESERVED_PORT_NAMES, SCOPED_PORT_NAMES, EXECUTION_STRATEGIES;
9501
+ var RESERVED_NODE_NAMES, RESERVED_PORT_NAMES, SCOPED_PORT_NAMES, EXECUTION_STRATEGIES, VALID_NODE_COLORS, KNOWN_NODETYPE_TAGS, KNOWN_WORKFLOW_TAGS, KNOWN_PATTERN_TAGS, STANDARD_JSDOC_TAGS;
9502
9502
  var init_constants = __esm({
9503
9503
  "src/constants.ts"() {
9504
9504
  "use strict";
@@ -9524,6 +9524,169 @@ var init_constants = __esm({
9524
9524
  DISJUNCTION: "DISJUNCTION",
9525
9525
  CUSTOM: "CUSTOM"
9526
9526
  };
9527
+ VALID_NODE_COLORS = [
9528
+ "blue",
9529
+ "purple",
9530
+ "cyan",
9531
+ "orange",
9532
+ "pink",
9533
+ "green",
9534
+ "red",
9535
+ "yellow",
9536
+ "teal"
9537
+ ];
9538
+ KNOWN_NODETYPE_TAGS = /* @__PURE__ */ new Set([
9539
+ "flowWeaver",
9540
+ "name",
9541
+ "label",
9542
+ "description",
9543
+ "color",
9544
+ "icon",
9545
+ "tag",
9546
+ "executeWhen",
9547
+ "scope",
9548
+ "expression",
9549
+ "pullExecution",
9550
+ "input",
9551
+ "output",
9552
+ "step"
9553
+ ]);
9554
+ KNOWN_WORKFLOW_TAGS = /* @__PURE__ */ new Set([
9555
+ "flowWeaver",
9556
+ "name",
9557
+ "fwImport",
9558
+ "description",
9559
+ "strictTypes",
9560
+ "autoConnect",
9561
+ "node",
9562
+ "position",
9563
+ "connect",
9564
+ "scope",
9565
+ "map",
9566
+ "path",
9567
+ "fanOut",
9568
+ "fanIn",
9569
+ "coerce",
9570
+ "trigger",
9571
+ "cancelOn",
9572
+ "retries",
9573
+ "timeout",
9574
+ "throttle",
9575
+ "param",
9576
+ "return",
9577
+ "returns"
9578
+ ]);
9579
+ KNOWN_PATTERN_TAGS = /* @__PURE__ */ new Set([
9580
+ "flowWeaver",
9581
+ "name",
9582
+ "description",
9583
+ "node",
9584
+ "position",
9585
+ "connect",
9586
+ "port"
9587
+ ]);
9588
+ STANDARD_JSDOC_TAGS = /* @__PURE__ */ new Set([
9589
+ "example",
9590
+ "see",
9591
+ "deprecated",
9592
+ "type",
9593
+ "typedef",
9594
+ "template",
9595
+ "link",
9596
+ "since",
9597
+ "version",
9598
+ "author"
9599
+ ]);
9600
+ }
9601
+ });
9602
+
9603
+ // src/type-mappings.ts
9604
+ function mapToTypeScript(portType, tsType) {
9605
+ const mapping = PORT_TYPE_MAPPINGS[portType];
9606
+ if (!mapping) {
9607
+ console.warn(`Unknown port type: ${portType}, defaulting to 'unknown'`);
9608
+ return "unknown";
9609
+ }
9610
+ if (tsType && (portType === "OBJECT" || portType === "ANY" || portType === "ARRAY" || portType === "FUNCTION")) {
9611
+ return tsType;
9612
+ }
9613
+ return mapping.typescript;
9614
+ }
9615
+ function isValidPortType(type2) {
9616
+ return type2 in PORT_TYPE_MAPPINGS;
9617
+ }
9618
+ function inferDataTypeFromTS(tsType) {
9619
+ const normalized = tsType.trim();
9620
+ if (normalized === "string") return "STRING";
9621
+ if (normalized === "number") return "NUMBER";
9622
+ if (normalized === "boolean") return "BOOLEAN";
9623
+ if (normalized === "any" || normalized === "unknown" || normalized === "never") {
9624
+ return "ANY";
9625
+ }
9626
+ if (normalized === "void" || normalized === "undefined" || normalized === "null") {
9627
+ return "ANY";
9628
+ }
9629
+ if (normalized.endsWith("[]") || normalized.startsWith("Array<") || normalized.startsWith("ReadonlyArray<")) {
9630
+ return "ARRAY";
9631
+ }
9632
+ if (normalized.includes("=>") || normalized === "Function" || normalized.startsWith("(")) {
9633
+ return "FUNCTION";
9634
+ }
9635
+ if (normalized.startsWith("Promise<") && normalized.endsWith(">")) {
9636
+ const inner = normalized.slice(8, -1);
9637
+ return inferDataTypeFromTS(inner);
9638
+ }
9639
+ if (normalized.includes("|")) {
9640
+ const parts2 = normalized.split("|").map((p) => p.trim());
9641
+ const nonNullParts = parts2.filter((p) => p !== "undefined" && p !== "null");
9642
+ if (nonNullParts.length === 1) {
9643
+ return inferDataTypeFromTS(nonNullParts[0]);
9644
+ }
9645
+ return "ANY";
9646
+ }
9647
+ if (normalized.includes("&")) {
9648
+ return "OBJECT";
9649
+ }
9650
+ return "OBJECT";
9651
+ }
9652
+ var PORT_TYPE_MAPPINGS;
9653
+ var init_type_mappings = __esm({
9654
+ "src/type-mappings.ts"() {
9655
+ "use strict";
9656
+ PORT_TYPE_MAPPINGS = {
9657
+ STRING: {
9658
+ typescript: "string",
9659
+ description: "Text value"
9660
+ },
9661
+ NUMBER: {
9662
+ typescript: "number",
9663
+ description: "Numeric value"
9664
+ },
9665
+ BOOLEAN: {
9666
+ typescript: "boolean",
9667
+ description: "True or false value"
9668
+ },
9669
+ ARRAY: {
9670
+ typescript: "unknown[]",
9671
+ description: "Array of values"
9672
+ },
9673
+ OBJECT: {
9674
+ typescript: "Record<string, unknown>",
9675
+ description: "Object with properties"
9676
+ },
9677
+ FUNCTION: {
9678
+ typescript: "(...args: unknown[]) => unknown",
9679
+ description: "Function or callback"
9680
+ },
9681
+ ANY: {
9682
+ typescript: "unknown",
9683
+ description: "Any type of value"
9684
+ },
9685
+ STEP: {
9686
+ typescript: "boolean",
9687
+ description: "Control flow signal (boolean in public API)"
9688
+ }
9689
+ };
9527
9690
  }
9528
9691
  });
9529
9692
 
@@ -11869,6 +12032,236 @@ var init_type_checker = __esm({
11869
12032
  }
11870
12033
  });
11871
12034
 
12035
+ // src/diagram/theme.ts
12036
+ function getTheme(name) {
12037
+ return name === "light" ? LIGHT_PALETTE : DARK_PALETTE;
12038
+ }
12039
+ function getPortColor(dataType, isFailure, theme = "dark") {
12040
+ if (isFailure) return theme === "dark" ? DARK_FAILURE_COLOR : LIGHT_FAILURE_COLOR;
12041
+ const colors2 = theme === "dark" ? DARK_PORT_COLORS : LIGHT_PORT_COLORS;
12042
+ return colors2[dataType] ?? colors2.ANY;
12043
+ }
12044
+ function getPortRingColor(dataType, isFailure, theme = "dark") {
12045
+ const color = getPortColor(dataType, isFailure, theme);
12046
+ return darkenHex(color, 0.4);
12047
+ }
12048
+ function darkenHex(hex, amount) {
12049
+ const r = parseInt(hex.slice(1, 3), 16);
12050
+ const g = parseInt(hex.slice(3, 5), 16);
12051
+ const b = parseInt(hex.slice(5, 7), 16);
12052
+ const nr = Math.round(r * (1 - amount));
12053
+ const ng = Math.round(g * (1 - amount));
12054
+ const nb = Math.round(b * (1 - amount));
12055
+ return `#${nr.toString(16).padStart(2, "0")}${ng.toString(16).padStart(2, "0")}${nb.toString(16).padStart(2, "0")}`;
12056
+ }
12057
+ var DARK_PORT_COLORS, LIGHT_PORT_COLORS, DARK_FAILURE_COLOR, LIGHT_FAILURE_COLOR, NODE_VARIANT_COLORS, DARK_PALETTE, LIGHT_PALETTE, TYPE_ABBREVIATIONS, NODE_ICON_PATHS, VALID_NODE_ICONS;
12058
+ var init_theme = __esm({
12059
+ "src/diagram/theme.ts"() {
12060
+ "use strict";
12061
+ DARK_PORT_COLORS = {
12062
+ STEP: "#10e15a",
12063
+ // green-dark-shade-1
12064
+ STRING: "#5e9eff",
12065
+ // blue-dark-shade-1
12066
+ NUMBER: "#ffbd30",
12067
+ // yellow-dark-shade-1
12068
+ BOOLEAN: "#ff52da",
12069
+ // pink-dark-shade-1
12070
+ OBJECT: "#b36bff",
12071
+ // purple-dark-shade-1
12072
+ ARRAY: "#ff8133",
12073
+ // orange-dark-shade-1
12074
+ FUNCTION: "#e9916a",
12075
+ // brown-dark-shade-1
12076
+ ANY: "#6fe5dc"
12077
+ // cyan-dark-shade-1
12078
+ };
12079
+ LIGHT_PORT_COLORS = {
12080
+ STEP: "#0ec850",
12081
+ // green-shade-2
12082
+ STRING: "#548ce3",
12083
+ // blue-shade-2
12084
+ NUMBER: "#e3a82b",
12085
+ // yellow-shade-2
12086
+ BOOLEAN: "#e349c2",
12087
+ // pink-shade-2
12088
+ OBJECT: "#9f5fe3",
12089
+ // purple-shade-2
12090
+ ARRAY: "#e3732d",
12091
+ // orange-shade-2
12092
+ FUNCTION: "#cf815e",
12093
+ // brown-shade-2
12094
+ ANY: "#63ccc4"
12095
+ // cyan-shade-2
12096
+ };
12097
+ DARK_FAILURE_COLOR = "#ff4f4f";
12098
+ LIGHT_FAILURE_COLOR = "#e34646";
12099
+ NODE_VARIANT_COLORS = {
12100
+ blue: { border: "#548ce3", darkBorder: "#5e9eff" },
12101
+ // blue-shade-2 / blue-dark-shade-1
12102
+ purple: { border: "#9f5fe3", darkBorder: "#b36bff" },
12103
+ // purple-shade-2 / purple-dark-shade-1
12104
+ cyan: { border: "#63ccc4", darkBorder: "#6fe5dc" },
12105
+ // cyan-shade-2 / cyan-dark-shade-1
12106
+ orange: { border: "#e3732d", darkBorder: "#ff8133" },
12107
+ // orange-shade-2 / orange-dark-shade-1
12108
+ pink: { border: "#e349c2", darkBorder: "#ff52da" },
12109
+ // pink-shade-2 / pink-dark-shade-1
12110
+ green: { border: "#0ec850", darkBorder: "#10e15a" },
12111
+ // green-shade-2 / green-dark-shade-1
12112
+ red: { border: "#e34646", darkBorder: "#ff4f4f" },
12113
+ // red-shade-2 / red-dark-shade-1
12114
+ yellow: { border: "#e3a82b", darkBorder: "#ffbd30" },
12115
+ // yellow-shade-2 / yellow-dark-shade-1
12116
+ teal: { border: "#3db0a8", darkBorder: "#4dc7be" }
12117
+ // teal-shade-2 / teal-dark-shade-1
12118
+ };
12119
+ DARK_PALETTE = {
12120
+ background: "#202139",
12121
+ // color-brand-subtle-bg = primary-dark-extended-shade-95
12122
+ nodeFill: "#1a1a2e",
12123
+ // color-surface-main = dark-shade-100
12124
+ nodeStroke: "#767682",
12125
+ // color-border-default = dark-shade-60
12126
+ labelColor: "#a4beff",
12127
+ // secondary-dark-base (node label text)
12128
+ sublabelColor: "#babac0",
12129
+ // color-text-subtle = dark-shade-30
12130
+ connectionColor: "#5f5f6d",
12131
+ // color-border-subtle = dark-shade-70
12132
+ dotColor: "#8e9eff",
12133
+ // color-background-dots = primary-dark-tint-1
12134
+ labelBadgeFill: "#252538",
12135
+ // color-surface-low = dark-shade-95
12136
+ labelBadgeBorder: "#313143",
12137
+ // color-surface-lowest = dark-shade-90
12138
+ nodeIconColor: "#a4beff",
12139
+ // secondary-dark-base (matches label color)
12140
+ scopeAreaStroke: "#5f5f6d"
12141
+ // color-border-subtle = dark-shade-70
12142
+ };
12143
+ LIGHT_PALETTE = {
12144
+ background: "#f6f7ff",
12145
+ // color-brand-subtle-bg = primary-extended-tint-95
12146
+ nodeFill: "#ffffff",
12147
+ // color-surface-main = white
12148
+ nodeStroke: "#cccccc",
12149
+ // color-border-default ≈ shade-20
12150
+ labelColor: "#223354",
12151
+ // secondary-base (light)
12152
+ sublabelColor: "#808080",
12153
+ // shade-50
12154
+ connectionColor: "#b3b3b3",
12155
+ // shade-30
12156
+ dotColor: "#5468ff",
12157
+ // color-background-dots = primary-shade-1
12158
+ labelBadgeFill: "#ffffff",
12159
+ // surface-main — 80% opacity applied in renderer
12160
+ labelBadgeBorder: "#e6e6e6",
12161
+ // shade-10
12162
+ nodeIconColor: "#5468ff",
12163
+ // primary-base (light)
12164
+ scopeAreaStroke: "#cccccc"
12165
+ // color-border-default
12166
+ };
12167
+ TYPE_ABBREVIATIONS = {
12168
+ STEP: "STP",
12169
+ STRING: "STR",
12170
+ NUMBER: "NUM",
12171
+ BOOLEAN: "BOOL",
12172
+ OBJECT: "OBJ",
12173
+ ARRAY: "ARR",
12174
+ FUNCTION: "FN",
12175
+ ANY: "ANY"
12176
+ };
12177
+ NODE_ICON_PATHS = {
12178
+ // ---- Virtual node icons ----
12179
+ startNode: "M314.02-192v-582l457.22 291-457.22 291Zm68.13-291Zm0 166.93L644.93-483 382.15-649.93v333.86Z",
12180
+ exitNode: "M302.15-657.85v355.7-355.7Zm-68.13 423.83v-492.2h492.2v492.2h-492.2Zm68.13-68.13h355.7v-355.7h-355.7v355.7Z",
12181
+ // ---- Default / structural ----
12182
+ code: "M317.37-236.26 71.39-482l247.98-247.98 48.98 48.74-199 199 197 197-48.98 48.98Zm323.26 2.24-48.74-48.74 199-199-197-197 48.74-48.98L888.61-482 640.63-234.02Z",
12183
+ flow: "M115.93-115.93v-188.14h157.83l173.61-173.6v-143.74q-35.74-12.79-58.59-42.23-22.85-29.43-22.85-66.36 0-47.53 33.31-80.8 33.3-33.27 80.88-33.27 47.57 0 80.76 33.27 33.19 33.27 33.19 80.8 0 36.93-22.85 66.36-22.85 29.44-58.59 42.23v143.74l173.85 173.6h157.59v188.14H655.93v-121.5L480-413.37 304.07-237.43v121.5H115.93Z",
12184
+ // ---- AI & ML ----
12185
+ psychology: "M234.74-74.74v-174.87q-57-52.72-88.5-122.93-31.5-70.22-31.5-147.46 0-152.29 106.5-258.9 106.5-106.6 258.65-106.6 126.78 0 224.72 74.82 97.93 74.81 127.65 194.48l55.24 219.44q4.48 16.15-5.7 29.09-10.17 12.93-27.13 12.93H765.5v131.87q0 28.35-19.96 48.24t-48.41 19.89H605.5v80h-68.37v-148.13h160v-200h113.28l-44.04-176.41q-24-95.81-104.28-156.83-80.29-61.02-181.98-61.02-123.86 0-210.55 85.74-86.69 85.75-86.69 208.98 0 63.62 26.08 121.25 26.09 57.63 73.96 102.01l19.96 18.92v205.49h-68.13Zm262.02-371.19ZM449-374h60l3-44q12-2 22.5-8.46 10.49-6.46 18.52-14.54l41.74 14L623-475l-30-24q5-14 5-29t-5-29l30-24-28.24-48-41.71 14q-8.3-7.69-19.15-13.85-10.86-6.15-21.88-9.15L509-682h-60l-3 44q-11 3-21.83 9.15-10.84 6.16-19.12 13.85l-41.57-14L335-581l30 24q-5 14-5 29t5 29l-30 24 28.48 48 41.57-14q8.01 8.08 18.48 14.54Q434-420 446-418l3 44Zm30.12-84q-29.12 0-49.62-20.38-20.5-20.38-20.5-49.5t20.38-49.62q20.38-20.5 49.5-20.5t49.62 20.38q20.5 20.38 20.5 49.5t-20.38 49.62q-20.38 20.5-49.5 20.5Z",
12186
+ smartToy: "M141.5-376q-45 0-76-31.21T34.5-483q0-44.58 31.21-75.79Q96.92-590 141.5-590v-128.5q0-24 18-42t42-18H373q0-45 31.21-76t75.79-31q44.58 0 75.79 31.21Q587-823.08 587-778.5h171.5q24 0 42 18t18 42V-590q45 0 76 31.21t31 75.79q0 44.58-31.21 75.79Q863.08-376 818.5-376v201.5q0 24-18 42t-42 18h-557q-24 0-42-18t-18-42V-376Zm203.17-101.43q17.24 0 29.1-12.1 11.86-12.09 11.86-29.46 0-17.36-12.09-29.22-12.1-11.86-29.34-11.86-17.24 0-29.22 12.08Q303-535.92 303-518.4q0 17.25 12.21 29.11 12.22 11.86 29.46 11.86Zm271.13 0q17.24 0 29.22-12.1Q657-501.62 657-518.99q0-17.36-12.21-29.22-12.22-11.86-29.46-11.86-17.24 0-29.1 12.08-11.86 12.07-11.86 29.59 0 17.25 12.09 29.11 12.1 11.86 29.34 11.86ZM314.63-285h330.74v-62.63H314.63V-285Zm-105 102.37h540.74v-527.74H209.63v527.74ZM480-447Z",
12187
+ autoAwesome: "M352.39-107.15 307-253.85l-148.85-44.54 148.85-44.78L352.39-490l45.15 147.43L544.63-298.4l-147.09 44.56-45.15 146.69Zm370-290.85-28.52-92.39-94.24-28.24 94.24-28.48 28.52-92.15 28.28 92.15 94.72 28.48-94.72 28.24-28.28 92.39ZM192.15-502.52l-17.76-58.52-58.52-18.72 58.52-17.48 17.76-59.24 18.48 59.24 58.52 17.48-58.52 18.72-18.48 58.52Z",
12188
+ modelTraining: "M198.35-197.15q-42.92-50.15-66.37-111.69-23.46-61.53-23.46-131.16 0-152.63 106.08-260.24 106.07-107.61 259.42-110 9.76 0 20.02.5t17.79 1.5l-80.29-80.28 43.92-44.15L641.2-766.93 475.46-600.96l-44.68-44.67 92.24-92.24q-11-2-25.88-3-14.88-1-22.64-1-125.24 1.91-211.42 89.75-86.19 87.84-86.19 212.12 0 50.28 16.88 102.36 16.88 52.07 53.56 91.75l-48.98 48.74Zm242.69-5.44q0-21.71-15.47-44.31-15.48-22.6-33.58-46.2-18.1-23.6-33.46-49.81-15.36-26.22-15.36-55.18 0-56.67 40.2-96.75 40.2-40.07 96.63-40.07 56.67 0 96.75 40.07 40.08 40.08 40.08 96.75 0 28.96-15.36 55.18-15.36 26.21-33.46 49.81t-33.46 46.2q-15.35 22.6-15.35 44.31h-78.16Zm-2 92.87v-51.67h82.16v51.67h-82.16Zm322.61-87.43-47.74-47.74q30.72-36.96 50.08-86.68 19.36-49.71 19.36-108.43 0-63.37-25.59-121.2-25.59-57.82-77.72-102.82l49.98-49.74q55.85 50.48 88.65 120.74 32.81 70.26 32.81 153.02 0 70.11-23.46 131.4-23.45 61.3-66.37 111.45Z",
12189
+ science: "M197.37-117.37v-65.26h208v-98.74h-15q-81.48-.96-137.24-57.67-55.76-56.72-55.76-137.96 0-60.28 34.04-109.8 34.05-49.53 89.85-70.72 3.52-40.24 34.04-66.44 30.53-26.19 71.29-25.11l-20.76-58.28 43.63-15.75-14-37.44 71.5-25.68 14.24 37 42.15-14.95 116.82 305.28-45.39 15.96 14 37-69.26 24.91-14.48-37-45.15 17.19-25-67.28q-14.52 15.57-33.82 22.47-19.31 6.9-41.21 6.14-26.62-.52-49.58-15.28-22.95-14.76-36.43-38.48-32.61 16.52-51.92 47.93-19.3 31.41-19.3 68.33 0 54.46 37.96 92.41 37.95 37.96 92.41 37.96h349.63v65.26h-232v98.74h252v65.26H197.37ZM556-572l53-19-80-206-53 19 80 206Zm-130.18-23q21.18 0 35.68-14.32 14.5-14.33 14.5-35.5 0-21.18-14.32-35.68-14.33-14.5-35.5-14.5-21.18 0-35.68 14.32-14.5 14.33-14.5 35.5 0 21.18 14.32 35.68 14.33 14.5 35.5 14.5ZM556-572Zm-130-75Zm2 0Z",
12190
+ biotech: "m573.85-153.3-47.74-47.74L634-308.93l-107.89-107.9 47.74-47.74 107.89 107.9 108.13-107.9 47.74 47.74-108.13 107.9 108.13 107.89-47.74 47.74-108.13-107.9-107.89 107.9Zm84.43-374.96L510.3-676l47.98-47.74 100 99 179-179.24L885.02-755 658.28-528.26ZM74.98-285.93v-68.14h364.06v68.14H74.98Zm0-320v-68.14h364.06v68.14H74.98Z",
12191
+ // ---- Data & storage ----
12192
+ database: "M480.11-114.02q-153.74 0-259.91-48.18Q114.02-210.37 114.02-280v-400q0-68.56 107.18-117.39 107.17-48.83 258.75-48.83 151.34 0 258.8 48.83Q846.22-748.56 846.22-680v400q0 69.63-106.31 117.8-106.3 48.18-259.8 48.18ZM480-608.24q85.84 0 175.94-26.38T772.76-694q-27.72-32-118.1-58.88-90.38-26.88-174.78-26.88-87.4 0-176.28 26T186.48-694q28.24 35 115.96 60.38 87.72 25.38 177.56 25.38Zm-1 213.76q41.76 0 83.43-4.62 41.68-4.62 79.98-13.74 38.3-9.12 73.47-22.36 35.16-13.23 63.88-29.47v-147.11q-29.48 16-64.6 29-35.12 13-73.88 21.88-38.76 8.88-79.52 13.76-40.76 4.88-82.85 4.88-41.6 0-83.33-4.88-41.72-4.88-80.17-13.88t-73.07-21.88q-34.62-12.88-61.86-28.88v147.11q27 16.24 61.24 29.35 34.24 13.12 72.74 22.36 38.5 9.24 80.29 13.86 41.8 4.62 84.25 4.62Zm1 214q47.52.24 98.04-8.14 50.53-8.38 93.03-22.26t72.23-31Q773.04-259 779.76-277v-119.74q-28.48 16.24-63.36 28.98-34.88 12.74-73.42 21.74-38.55 9-79.86 13.5t-84.12 4.5q-42.69 0-84.48-4.62-41.8-4.62-80.18-13.62-38.38-9-72.5-21.74-34.12-12.74-61.36-28.74v120.73q5.72 17.01 34.95 34.39 29.24 17.38 72.12 30.88 42.88 13.5 93.41 21.88 50.52 8.38 99.04 8.38Z",
12193
+ dataObject: "M573.59-154.02v-67.89H685.7q21.89 0 37.14-15.13 15.25-15.12 15.25-37.5v-94.5q0-37.24 22.5-66.6 22.5-29.36 57.98-40.44v-7.84q-35.48-10.08-57.98-39.94t-22.5-67.1v-94.74q0-22.14-15.13-37.26-15.12-15.13-37.26-15.13H573.59v-68.13h118.08q47.8 0 81.17 33.46 33.38 33.46 33.38 81.33v94.5q0 22.44 14.97 37.53 14.97 15.1 37.42 15.1h27.61v128.6h-27.61q-22.45 0-37.42 15.13-14.97 15.13-14.97 37.27v94.73q0 47.99-33.46 81.27-33.46 33.28-81.09 33.28H573.59Zm-305.26 0q-47.92 0-81.11-33.28-33.2-33.28-33.2-81.27v-94.73q0-22.14-15.12-37.27-15.13-15.13-37.27-15.13H74.02v-128.6h27.61q22.14 0 37.27-15.1 15.12-15.09 15.12-37.53v-94.5q0-47.87 33.28-81.33t81.03-33.46h118.08v68.13H274.54q-21.89 0-37.26 15.13-15.37 15.12-15.37 37.26v94.74q0 37.24-22.5 67.1-22.5 29.86-57.74 39.94v7.84q35.24 11.08 57.74 40.44t22.5 66.6v94.5q0 22.38 15.25 37.5 15.24 15.13 37.38 15.13h111.87v67.89H268.33Z",
12194
+ tableChart: "M777.85-115.02h-595.7q-27.6 0-47.86-20.27-20.27-20.26-20.27-47.86v-594.7q0-27.7 20.27-48.03 20.26-20.34 47.86-20.34h595.7q27.7 0 48.03 20.34 20.34 20.33 20.34 48.03v594.7q0 27.6-20.34 47.86-20.33 20.27-48.03 20.27Zm-595.7-523.5h595.7v-139.33h-595.7v139.33Zm128.81 60H182.15v395.37h128.81v-395.37Zm338.08 0v395.37h128.81v-395.37H649.04Zm-60 0H370.96v395.37h218.08v-395.37Z",
12195
+ token: "M480-73.78 114.5-282.89v-405.46L480-886.22l365.5 197.87v405.46L480-73.78ZM365.52-581.35q23.24-22.76 52.86-37.02Q448-632.63 480-632.63q32 0 61.62 14.26 29.62 14.26 52.86 37.02L741.5-668 480-806.89 218.5-668l147.02 86.65Zm81.85 410.57v-160.31q-52.24-14.24-86.12-54.83-33.88-40.6-33.88-94.08 0-10.76 1.38-21.9 1.38-11.14 5.14-21.67l-151.26-89.89v290.79l264.74 151.89ZM480-392.63q36.8 0 62.09-25.28 25.28-25.29 25.28-62.09 0-36.8-25.28-62.09-25.29-25.28-62.09-25.28-36.8 0-62.09 25.28-25.28 25.29-25.28 62.09 0 36.8 25.28 62.09 25.29 25.28 62.09 25.28Zm32.63 221.85 264.74-151.89v-290.79l-151.02 89.89q3.52 10.53 4.9 21.67 1.38 11.14 1.38 21.9 0 53.48-33.88 94.08-33.88 40.59-86.12 54.83v160.31Z",
12196
+ storage: "M111.87-146.13v-159.24h736.5v159.24h-736.5Zm68.13-42.3h74.63v-74.87H180v74.87Zm-68.13-466.2v-159.24h736.5v159.24h-736.5Zm68.13-42.3h74.63v-74.87H180v74.87ZM111.87-400.5v-159h736.5v159h-736.5ZM180-442.57h74.63v-74.86H180v74.86Z",
12197
+ memory: "M239-399h313v-60H239v60Zm0-130h480v-60H239v60Zm0-130h480v-60H239v60ZM74.02-74.02v-743.83q0-27.7 20.27-48.03 20.26-20.34 47.86-20.34h675.7q27.7 0 48.03 20.34 20.34 20.33 20.34 48.03v515.7q0 27.6-20.34 47.86-20.33 20.27-48.03 20.27H234.02l-160 160Zm134-228.13h609.83v-515.7h-675.7v587.57l65.87-71.87Zm-65.87 0v-515.7 515.7Z",
12198
+ // ---- Cloud & network ----
12199
+ api: "M480-369.26 369.26-480 480-590.74 590.74-480 480-369.26Zm-85-304.28-86.83-86.83L480-931.96l171.83 171.59L565-673.54l-85-85-85 85ZM199.87-308.17 28.04-480l171.83-171.83L286.46-565l-85 85 85 85-86.59 86.83Zm560.5 0L673.54-395l85-85-85-85 86.83-86.83L931.96-480 760.37-308.17ZM480-28.04 308.17-199.87 395-286.46l85 85 85-85 86.83 86.59L480-28.04Z",
12200
+ webhook: "M270.1-115.93q-79.9 0-137.03-57.17-57.14-57.17-57.14-136.83 0-68.5 40.2-120.06 40.2-51.55 105.3-67.55v65.63q-36.67 14-59.77 47.11-23.09 33.11-23.09 74.88 0 54.16 38.4 92.76 38.4 38.59 92.97 38.59 54.78 0 93.14-38.41 38.35-38.42 38.35-93.02v-31.43h247.09q8.36-9 19.25-14.5 10.9-5.5 22.23-5.5 21.76 0 36.6 14.83 14.83 14.84 14.83 36.49 0 20.84-14.83 36.19-14.84 15.35-36.6 15.35-11.33 0-22.23-5.5-10.89-5.5-19.25-14.5H462.18q-14.83 70.2-68.21 116.42-53.39 46.22-123.87 46.22Zm419.9 0q-48.48 0-90.29-22.24-41.82-22.24-68.54-60.4h89.59q14.95 10 32.75 15 17.79 5 36.49 5 54.8 0 93.12-38.4 38.31-38.4 38.31-92.97 0-54.78-38.31-93.14-38.32-38.35-93.12-38.35-19.72 0-36.2 4.85-16.47 4.86-31.53 14.1L494.04-638.8q-20.24-4.24-32.86-18.03-12.61-13.78-12.61-33.19 0-21.44 15.35-36.43 15.35-14.98 36.07-14.98 21.73 0 36.59 14.92 14.85 14.93 14.85 36.55 0 3.96-.5 7.34t-2.5 10.38l100.61 172.17q10.76-2 22.02-3t18.94-1q80.69 0 137.38 56.54t56.69 137.61q0 79.59-56.69 136.79-56.69 57.2-137.38 57.2ZM270.11-258.57q-20.84 0-36.19-15.31-15.35-15.32-15.35-36.12 0-18.58 12.61-32.39 12.62-13.81 31.86-18.81l108.85-183.17q-30.96-29.24-48.46-66.95-17.5-37.71-17.5-78.7 0-80.78 57.22-137.41 57.21-56.64 136.93-56.64 77.72 0 133.85 53.69 56.14 53.69 60.14 130.38h-62.64q-3-51.72-40.89-86.58-37.89-34.85-90.46-34.85-54.56 0-93.04 38.31-38.47 38.32-38.47 93.04 0 42.9 25.09 76.71 25.1 33.8 63.82 47.8L317.43-328.8q2 5.97 3 10.4 1 4.44 1 8.36 0 20.84-14.83 36.16-14.84 15.31-36.49 15.31Z",
12201
+ cloudSync: "M167.48-156.41v-62.63h124.26q-64-48.72-100.14-109.22t-36.14-148.5q0-102.98 61.63-191.22T391.54-789.5v70.13q-71 24.57-119.36 91.21-48.35 66.64-48.35 151.4 0 62.95 26.9 114.94 26.9 51.99 87.47 91.28V-390h62.63v233.59H167.48Zm436.59 5.98q-52.14 0-88.82-36.62-36.68-36.61-36.68-88.92 0-49.41 33.59-85.6 33.6-36.19 82.56-39.39 17.95-36.24 52.29-58.36 34.34-22.11 77.07-22.11 54.94 0 94.85 34.85 39.92 34.86 47.68 85.62h2q42.48 1.44 71.84 32.28 29.35 30.83 29.35 71.79 0 44-30.78 75.23-30.79 31.23-74.95 31.23h-260ZM732.18-520q-11.01-50.28-37.33-91.45-26.32-41.18-69.81-78.01V-570h-62.87v-233.59h233.59v62.63H670.5q49 41.96 85.99 101.46Q793.48-580 801.54-520h-69.36ZM604.07-215.93h260q17 0 28.5-11.5t11.5-28.5q0-16.77-11.5-28.39-11.5-11.61-28.5-11.61h-50v-30q0-37.77-26-63.89-26-26.11-64-26.11-37.77 0-63.89 24.5-26.11 24.5-26.11 55.5h-30q-25 0-42.5 17.5t-17.5 42.5q0 25 17.5 42.5t42.5 17.5Zm120-100Z",
12202
+ cloudUpload: "M250.48-154.02q-88.47 0-152.23-63.6-63.75-63.6-63.75-151.9 0-79.44 49.74-140.73 49.74-61.29 128.93-73.77 20.96-97.72 95.96-159.46 75-61.74 172.94-61.74 113.89 0 191.58 81.74 77.7 81.74 79.61 196.46v24q72.72.15 122.48 49.89 49.76 49.75 49.76 124.61 0 71.61-51.79 123.05-51.8 51.45-123.19 51.45H516.93q-27.58 0-47.97-20.39t-20.39-47.74v-247l-84.2 84.43-44.91-44.67L480-590.17l160.78 160.78-45.15 44.67-84.2-84.43v247h239.18q43.72 0 75.24-31.49 31.52-31.49 31.52-75.36 0-44.04-31.49-75.45-31.49-31.4-75.36-31.4h-65.15v-86.63q0-87.91-59.7-151.14-59.7-63.23-147.56-63.23-88.39 0-148.44 64.12-60.04 64.12-60.04 152.88h-21.15q-61.11 0-103.48 42.86-42.37 42.85-42.37 105.94 0 61.09 43.33 105 43.34 43.9 104.64 43.9h137.97v68.13H250.48ZM480-445.93Z",
12203
+ cloudDownload: "M251-154.02q-90.08 0-153.29-62.9Q34.5-279.83 34.5-369.86q0-80.73 50.86-140.61 50.86-59.88 127.9-72.36 15.87-83.52 82.39-148.14 66.52-64.62 151.76-64.62 25.94 0 45.48 14.58 19.54 14.58 19.54 39.01v293.52L594-530.52l44.91 44.91L481-327.46 323.09-485.61 368-530.52l81.57 82.04v-285.89q-84.33 12.2-132.14 75.98-47.8 63.78-47.8 138.54h-21.15q-60.11 0-102.98 42.36-42.87 42.36-42.87 106.45 0 64.32 44.23 106.61 44.23 42.28 104.14 42.28h500q43.73 0 75.05-31.25 31.32-31.26 31.32-75.6 0-44.04-31.4-75.45-31.4-31.4-75.35-31.4h-64.05v-85.67q0-67.16-32.07-115.3t-83.07-77.35v-73.61q81.96 29 131.18 101.24 49.22 72.24 50.65 160.71v24q72.48-.08 122.36 48.95 49.88 49.02 49.88 124.84 0 71.31-51.6 122.66-51.61 51.36-122.9 51.36H251Zm229-356.33Z",
12204
+ dns: "M286.88-724.17q-20.88 0-35.38 14.61-14.5 14.62-14.5 35.5 0 20.89 14.62 35.39t35.5 14.5q20.88 0 35.38-14.62 14.5-14.62 14.5-35.5 0-20.88-14.62-35.38-14.62-14.5-35.5-14.5Zm0 426.19q-20.88 0-35.38 14.62-14.5 14.62-14.5 35.5 0 20.88 14.62 35.38 14.62 14.5 35.5 14.5 20.88 0 35.38-14.62 14.5-14.61 14.5-35.5 0-20.88-14.62-35.38-14.62-14.5-35.5-14.5ZM152.09-852.39h654.82q17.83 0 28.57 10.81 10.74 10.82 10.74 29.05v271.31q0 19.56-10.74 32.79t-28.57 13.23H152.09q-16.86 0-27.47-13.23-10.6-13.23-10.6-32.79v-271.31q0-18.23 10.6-29.05 10.61-10.81 27.47-10.81Zm30.06 68.37v220.69h595.7v-220.69h-595.7ZM152.09-427.2h650.82q16.83 0 30.07 14.02 13.24 14.01 13.24 32.27v266.61q0 21.96-13.24 33.63Q819.74-69 802.91-69H157.09q-17.86 0-30.47-11.67-12.6-11.67-12.6-33.63v-266.61q0-18.26 10.6-32.27 10.61-14.02 27.47-14.02Zm30.06 68.37v221.46h595.7v-221.46h-595.7Zm0-425.19v220.69-220.69Zm0 425.19v221.46-221.46Z",
12205
+ router: "M182.15-114.02q-27.6 0-47.86-20.27-20.27-20.26-20.27-47.86v-204q0-27.7 20.27-48.04 20.26-20.33 47.86-20.33h427.39v-163.33h68.37v163.33h99.7q27.7 0 48.03 20.33 20.34 20.34 20.34 48.04v204q0 27.6-20.34 47.86-20.33 20.27-48.03 20.27H182.15Zm0-68.13h595.46v-204H182.15v204Zm102.11-60q17.89 0 29.89-12.11 12-12.1 12-30 0-17.89-12.1-29.89-12.11-12-30-12-17.9 0-29.9 12.1-12 12.11-12 30 0 17.9 12.11 29.9 12.1 12 30 12Zm144.41 0q17.9 0 29.9-12.11 12-12.1 12-30 0-17.89-12.11-29.89t-30-12q-17.89 0-29.89 12.1-12 12.11-12 30 0 17.9 12.1 29.9 12.11 12 30 12Zm144.41 0q17.9 0 29.9-12.11 12-12.1 12-30 0-17.89-12.11-29.89-12.1-12-30-12-17.89 0-29.89 12.1-12 12.11-12 30 0 17.9 12.1 29.9 12.11 12 30 12Zm-9.71-425.81L520.7-710.6q24-24.27 55.14-38.51 31.15-14.24 67.77-14.24 36.61 0 67.76 14.24 31.15 14.24 55.39 38.48l-42.67 42.67q-14.24-13.76-35.41-23.14-21.16-9.38-44.57-9.38t-45.08 9.38q-21.66 9.38-35.66 23.14Zm-86.67-86.67-45.68-45.91q33-33.48 89.08-59.58 56.07-26.1 123.63-26.1 67.55 0 123.63 26.1 56.07 26.1 89.07 59.58l-45.67 45.91q-25.91-28.78-69.12-48.75-43.21-19.97-98.03-19.97-54.7 0-97.81 19.98-43.1 19.98-69.1 48.74ZM182.15-182.15v-204 204Z",
12206
+ http: "M36.89-358.57v-242.86h50.63v85h112.37v-85h50.63v242.86h-50.63v-107H87.52v107H36.89Zm313.48 0v-192h-81.2v-50.86h213.26v50.86h-81.19v192h-50.87Zm232.39 0v-192h-81.19v-50.86h213.5v50.86h-81.44v192h-50.87Zm150.72 0v-242.86h139.43q23.72 0 37.08 13.47 13.36 13.48 13.36 36.9v60.69q0 23.77-13.36 36.6-13.36 12.84-37.08 12.84h-88.56v82.36h-50.87Zm50.87-133h88.13v-59h-88.13v59Z",
12207
+ link: "M447.37-274.02H280q-85.66 0-145.82-60.16-60.16-60.15-60.16-145.75 0-85.59 60.16-145.94 60.16-60.35 145.82-60.35h167.37v68.37H280.1q-57.66 0-97.8 40.05-40.15 40.05-40.15 97.56 0 57.52 40.15 97.81 40.14 40.28 97.8 40.28h167.27v68.13ZM320.93-448.57v-62.86h318.14v62.86H320.93Zm191.7 174.55v-68.13H679.9q57.66 0 97.8-40.05 40.15-40.05 40.15-97.56 0-57.52-40.15-97.81-40.14-40.28-97.8-40.28H512.63v-68.37H680q85.58 0 145.9 60.33 60.32 60.33 60.32 145.93 0 85.59-60.32 145.76-60.32 60.18-145.9 60.18H512.63Z",
12208
+ // ---- Security & auth ----
12209
+ key: "M280.06-409.37q-29.02 0-49.85-20.78-20.84-20.77-20.84-49.79t20.78-49.85q20.77-20.84 49.79-20.84t49.85 20.78q20.84 20.77 20.84 49.79t-20.78 49.85q-20.77 20.84-49.79 20.84ZM280-234.5q-102.07 0-173.79-71.73Q34.5-377.96 34.5-480.06q0-102.09 71.71-173.77Q177.93-725.5 280-725.5q73.91 0 129.35 34.96 55.43 34.95 86.45 104.91h355.03L966.7-470 795.87-313.17l-88.24-64.48-87.76 63.76-75.96-60.48h-48.13q-25 60.72-79.89 100.29Q360.99-234.5 280-234.5Zm0-65.5q58.72 0 107.84-39.1 49.12-39.1 62.64-100.53h117.11l53.04 44.28 88-63 82 61.52 82.13-74.45-48.85-49.09H450.48q-11.28-56.96-59.67-98.29Q342.43-660 280-660q-75 0-127.5 52.5T100-480q0 75 52.5 127.5T280-300Z",
12210
+ shield: "M479.98-74.78q-142.59-35.67-234.27-164.87-91.69-129.2-91.69-283.27v-242.26L480-887.22l326.22 122.05V-523q0 154.1-91.82 283.32-91.82 129.23-234.42 164.9Zm.02-70.13q113.8-39.2 185.83-143.62 72.02-104.43 72.02-234.4v-194.4L480-814.61l-257.85 97.4v194.17q0 130.08 72.02 234.51Q366.2-184.11 480-144.91Zm0-334.85Z",
12211
+ vpnKey: "M280-234.5q-102.07 0-173.79-71.73Q34.5-377.96 34.5-480.06q0-102.09 71.71-173.77Q177.93-725.5 280-725.5q80.63 0 135.45 39.05 54.81 39.06 80.33 100.82H925.5v211.26h-106v137H628v-137H495.73q-25.47 61.76-80.28 100.82Q360.63-234.5 280-234.5Zm0-65.5q72.2 0 117.82-48.2 45.61-48.19 52.61-91.43H697.5v137H754v-137h106v-80.74H450.48q-7.05-43.24-52.66-91.43Q352.2-660 280-660q-75 0-127.5 52.5T100-480q0 75 52.5 127.5T280-300Zm-.06-109.37q30.26 0 50.47-20.28 20.22-20.27 20.22-50.29 0-30.26-20.16-50.47-20.16-20.22-50.41-20.22-30.02 0-50.35 20.16-20.34 20.16-20.34 50.41 0 30.02 20.28 50.35 20.27 20.34 50.29 20.34ZM280-480Z",
12212
+ verified: "m343.61-52.35-77.44-132.39-153.87-31.72 17.48-149.63L32.11-480l97.67-113.01-17.48-149.77 153.99-31.48 77.23-133.39 136.56 63 136.55-63 78.18 133.39 152.89 31.48-17.48 149.77L927.89-480l-97.67 113.91 17.48 149.63-152.87 31.72-78.2 132.39L480-115.3 343.61-52.35Zm30.28-89.28 106.08-44.9 109.07 44.9 66.53-99.28 116.04-29.76L759.85-389l80.04-91.02-80.04-93.02 11.76-118.29-116.04-27.76-68.44-99.28-107.09 44.87-109.08-44.87-66.46 99.34-115.87 27.6 11.52 118.39L120.11-480l80.04 91.04-11.52 120.4 115.83 27.59 69.43 99.34ZM480-480Zm-43 134.91L665.91-572l-47.15-42.91-181.76 180-94.76-99.24L294.09-487 437-345.09Z",
12213
+ security: "M479.98-73.78q-142.59-35.67-234.27-164.87-91.69-129.2-91.69-283.27v-242.26L480-886.22l326.22 122.05V-522q0 154.1-91.82 283.32-91.82 129.23-234.42 164.9Zm.02-70.13q104.8-35.96 173.82-128.39 69.01-92.44 81.03-207.73H480v-332.58l-257.85 96.4V-522q0 11.76.5 20.5t2.48 21.5H480v336.09Z",
12214
+ policy: "M480-73.78q-142.58-35.67-234.28-164.87-91.7-129.2-91.7-283.27v-242.26L480-886.22l326.22 122.05V-522q0 80.87-22.94 158.57-22.93 77.69-76.93 143.69l-144.31-138.3q-18.76 10.52-39.68 17.28Q501.44-334 480-334q-62 0-105.5-43T331-482.5q0-62.5 43.5-106T480-632q62 0 105.5 43.5T629-482q0 20.76-5.7 41.52t-18.34 37.28l85.61 81.85q24-42.52 35.64-94.66 11.64-52.14 11.64-105.94v-196.86L480-812.61l-257.85 93.92v196.65q0 130.08 72.02 234.51Q366.2-183.11 480.2-143.91q27.6-7.76 67.67-31.81 40.06-24.04 62.87-46.32l48.22 48.74q-35.24 32-84.22 60.38Q525.76-84.54 480-73.78Zm.24-322.85q35.56 0 60.85-24.81 25.28-24.82 25.28-61.09t-25.52-61.56q-25.52-25.28-61.09-25.28-35.56 0-60.85 25.31-25.28 25.32-25.28 61.59t25.52 61.06q25.52 24.78 61.09 24.78Zm2.35-82.83Z",
12215
+ adminPanelSettings: "M691.24-270q26 0 44.12-19 18.12-19 18.12-44.88 0-25.88-18.24-44T691.36-396q-26.12 0-45 18.12t-18.88 44q0 25.88 18.88 44.88 18.88 19 44.88 19Zm-1.26 125q33.5 0 60.35-13.88t46.15-39.88q-26.24-14-52.24-21.12Q718.23-227 690.4-227q-27.92 0-54.54 7.12-26.62 7.12-51.62 21.12 19 26 45.45 39.88Q656.15-145 689.98-145ZM480-73.78q-140.58-32.67-233.28-158.97-92.7-126.29-92.7-289.29v-243.14L480-887.22l326.22 122.15v277.66q-16.15-8.92-34-15.4-17.85-6.47-34.37-8.67v-206.05L480-812.61l-257.85 95v195.51q0 76.58 24.62 140.22t62.5 111.42q37.88 47.79 83.16 79.07 45.29 31.28 86.61 44.56 6.24 14.87 19.92 32.15 13.67 17.27 24.78 26.22-10.44 5.72-21.87 8.58-11.44 2.86-21.87 6.1ZM692.5-80Q615-80 560-135.5T505-267q0-78.43 54.99-133.72Q614.98-456 693-456q77 0 132.5 55.28Q881-345.43 881-267q0 76-55.5 131.5T692.5-80ZM480-479.72Z",
12216
+ // ---- Logic & flow ----
12217
+ altRoute: "M445.93-74.02v-194.26q0-46.81-15.04-78.64-15.04-31.84-49-65.56l48.74-48.74q12.04 10.52 26.07 28.81 14.02 18.28 23.3 33.08 16.52-24.8 32.54-43.56 16.03-18.76 31.5-31.76 60.87-47.48 86.13-114.46 25.26-66.98 19.03-167.32l-90 90-47.74-47.74L683.5-886.22l172.04 172.05-47.74 47.74-90-90q4.29 121.45-24.62 194.43-28.9 72.98-103.88 139.8-45.91 41.2-60.57 74.8-14.66 33.6-14.66 79.12v194.26h-68.14ZM248.67-627.87q-4-17.52-6.74-52.14-2.73-34.62-.73-75.42l-88.77 89-47.97-47.74L276.5-886.22l171.8 172.05-47.73 47.74-89.77-90q-2.23 36.56-1.23 64.34 1 27.79 5.23 48.07l-66.13 16.15Zm87.83 171.96q-17.96-18.48-38.93-47.86-20.98-29.38-32.22-62.47l68.08-17.39q8.53 22.85 23.17 44.65 14.64 21.81 27.4 35.33l-47.5 47.74Z",
12218
+ callSplit: "M447.93-154.02v-310.31L222.15-690.11v117.26h-68.13v-233.37h233.13v68.37H270.89l245.18 245.18v338.65h-68.14Zm122.81-369.74L523-571.5l165.87-166.35H572.85v-68.37h233.37v233.37h-68.37v-117.02L570.74-523.76Z",
12219
+ callMerge: "m272-154.02-47.74-48.74L443.93-422.2v-292.47L326-596.74l-48.74-48.74L478-846.22l200.74 200.74L630-596.74 512.07-714.67v320.58L272-154.02Zm409.24 0-162-162 48.5-48.74 162 162-48.5 48.74Z",
12220
+ rule: "m573.85-153.3-47.74-47.74L634-308.93l-107.89-107.9 47.74-47.74 107.89 107.9 108.13-107.9 47.74 47.74-108.13 107.9 108.13 107.89-47.74 47.74-108.13-107.9-107.89 107.9Zm84.43-374.96L510.3-676l47.98-47.74 100 99 179-179.24L885.02-755 658.28-528.26ZM74.98-285.93v-68.14h364.06v68.14H74.98Zm0-320v-68.14h364.06v68.14H74.98Z",
12221
+ filterAlt: "M440-154.02q-19.39 0-32.68-13.3-13.3-13.29-13.3-32.68v-237.85L156.46-741.41q-16.39-20.11-4.84-42.46T188-806.22h584q24.83 0 36.38 22.35 11.55 22.35-4.6 42.46L566.22-437.85v239.76q0 18.92-12.7 31.49-12.69 12.58-31.61 12.58H440Zm40-285.57 235.46-298.26H244.78L480-439.59Zm0 0Z",
12222
+ repeat: "M278.33-73.78 114.02-238.33l164.31-164.3 46.54 48.3-82.89 82.9h457.78v-160h66.46v226.45H241.98l82.89 82.65-46.54 48.55Zm-84.31-453.11v-226.46h524.24L635.37-836l46.54-48.54L846.22-720 681.91-555.46 635.37-604l82.89-82.89H260.48v160h-66.46Z",
12223
+ sort: "M114.02-227.8v-68.13h249.09v68.13H114.02Zm0-218.13v-68.14h490.52v68.14H114.02Zm0-218.14v-67.89h732.2v67.89h-732.2Z",
12224
+ // ---- Actions & status ----
12225
+ bolt: "M454-315.15 278.39-516.76l48.98-48.5L445.93-446.7v-359.52h68.14v359.52l118.56-118.56 48.98 48.5L480-315.15ZM222.15-154.02q-27.6 0-47.86-20.27-20.27-20.26-20.27-47.86v-143h68.13v143h515.7v-143h68.37v143q0 27.58-20.34 47.86-20.33 20.27-48.03 20.27h-515.7Z",
12226
+ build: "M704.04-120.11 442.93-382.98q-22.52 7.76-44.76 12.4-22.24 4.65-46.8 4.65-99.48 0-168.99-69.39-69.51-69.38-69.51-168.11 0-31.48 8.76-62.43 8.75-30.94 23.67-57.4l146.28 146.19 91.92-86-150.2-150.19q25.68-15.16 56.64-24.42 30.95-9.25 61.43-9.25 101.36 0 172.31 71.02t70.95 172.48q0 23.57-4.64 46.18-4.64 22.62-12.4 45.62L839.7-250.76q12.67 12.78 12.67 30.42t-12.67 30.23l-76 70q-12.32 12.44-29.77 12.44t-29.89-12.44Zm31.83-60.82 40-40-278.5-278.5q16-21 24-49.5t8-54.5q0-75-55.5-127t-126.5-53l98.89 100.89q10.2 10.37 9.7 24.69-.5 14.33-10.7 24.52L318.48-514.54q-10.8 9.43-24.9 9.43-14.1 0-23.32-9.43l-94.89-93.89q3 77 54.67 127t121.33 50q25 0 53-8t49-24l282.5 282.5ZM476.24-482.57Z",
12227
+ rocketLaunch: "m188.91-556.74 101.7 43.33q17.28-33.85 36.71-67.18 19.42-33.32 40.98-63.89l-76.37-15.28-103.02 103.02Zm156.39 84.11 131.33 131.56q58.44-27.43 107.48-59.59 49.04-32.17 79.8-62.93 80.05-80.28 117.81-163.84Q819.48-711 823.2-819.2q-108.2 3.72-191.77 41.48-83.56 37.76-163.6 117.81-30.76 30.76-62.93 79.8-32.16 49.04-59.6 107.48Zm231.16-99.59q-19.76-19.76-19.76-48.66 0-28.9 19.76-48.66 19.76-19.53 48.54-19.53 28.78 0 48.54 19.53 19.53 19.76 19.53 48.66 0 28.9-19.53 48.66Q653.78-552.7 625-552.7q-28.78 0-48.54-19.52ZM560.5-184.91l103.26-103.02-15.28-76.37q-30.57 21.56-63.89 41.1-33.33 19.55-67.18 36.59l43.09 101.7Zm331.26-702.61q8.52 143.17-35.08 257.09-43.59 113.91-142.11 212.67-1.48 1.24-2.96 2.84-1.48 1.59-2.72 2.83l22 110.48q3.48 17.15-1.74 33.19-5.22 16.03-17.65 28.46L537.87-65.33l-88.83-206.84-172.87-172.87-206.84-88.83L244.2-707.5q12.43-12.43 28.34-17.65 15.92-5.22 33.07-1.74l110.48 22q1.24-1.24 2.71-2.1 1.48-.86 2.96-2.1 98.76-99 212.79-142.98 114.04-43.97 257.21-35.45ZM141.59-324.04q36.91-36.92 89.56-37.3 52.65-.38 89.33 36.3 36.43 36.43 36.05 89.2-.38 52.77-37.05 89.45-27.68 27.67-85.64 45.63-57.97 17.96-168.64 32 14.04-110.67 31.5-169.26 17.45-58.59 44.89-86.02Zm47.98 48.74q-13.77 14.76-23.93 44.84-10.16 30.09-18.16 78.66 48.56-8 78.65-18.41 30.09-10.4 44.61-24.16 18.28-16.04 18.54-40.35.26-24.3-16.78-42.58-18.28-17.05-42.59-16.55-24.3.5-40.34 18.55Z",
12228
+ send: "M114.5-154.26v-651.48L887.17-480 114.5-154.26ZM180-255.63 717.3-480 180-707.37v162.74L424.63-480 180-417.37v161.74Zm0 0v-451.74 451.74Z",
12229
+ sync: "M167.48-156.41v-62.63H291.5l-12.61-10.33q-64.24-52.2-93.84-112.55-29.59-60.36-29.59-135.08 0-108.87 65.37-195.04 65.37-86.18 170.71-117.46v70.13q-75.24 27.57-121.47 94.59-46.24 67.02-46.24 147.78 0 62.04 23.14 107.71 23.14 45.66 62.66 79.18l28.57 19.57V-390h62.63v233.59H167.48Zm401.98-13.09v-71.13q76.24-27.57 121.47-94.59 45.24-67.02 45.24-147.78 0-47.04-23.26-95.71-23.26-48.66-60.3-86.18l-27.57-24.57V-570h-62.87v-233.59h233.59v62.63H670.5l12.85 12.33q60.48 56.48 90.83 121.2 30.36 64.71 30.36 124.43 0 108.87-64.87 195.54-64.87 86.68-170.21 117.96Z",
12230
+ refresh: "M479.28-154.02q-135.39 0-230.68-95.3-95.3-95.29-95.3-230.62 0-135.33 95.3-230.81 95.29-95.47 230.68-95.47 86.44 0 151.73 35.03 65.29 35.04 113.06 96.36v-131.39h62.86v262.85H543.85V-606h167.04q-38.24-59.04-96.28-95.45-58.04-36.4-135.33-36.4-108.1 0-182.97 74.86-74.88 74.86-74.88 182.95 0 108.08 74.88 182.99 74.87 74.9 182.98 74.9q81.8 0 150.2-46.9 68.4-46.91 95.64-123.95h70.37q-29.24 107.39-116.97 173.18-87.74 65.8-199.25 65.8Z",
12231
+ // ---- Communication ----
12232
+ notifications: "M154.02-194.02v-68.13h77.85v-298.02q0-86.08 50.34-154.77 50.33-68.69 133.72-86.41v-20.56q0-26.8 18.69-45.55 18.69-18.76 45.38-18.76t45.38 18.76q18.69 18.75 18.69 45.55v20.56q83.39 17.48 133.84 86.25 50.46 68.77 50.46 154.93v298.02h77.85v68.13h-652.2ZM480-501.04Zm.12 429.17q-33.83 0-57.93-24.13t-24.1-58.02h164.06q0 33.95-24.15 58.05-24.15 24.1-57.88 24.1ZM300-262.15h360v-298.02q0-74.76-52.5-127.38Q555-740.17 480-740.17t-127.5 52.62Q300-634.93 300-560.17v298.02Z",
12233
+ email: "M154.02-194.02v-62.63h625.96v62.63H154.02Zm0-218.13v-68.14h625.96v68.14H154.02Zm0-218.14v-67.89h732.2v67.89h-732.2Z",
12234
+ campaign: "M732.63-447.37v-65.26H891v65.26H732.63Zm55.74 292.87-127.7-95.02 39.35-52.31 127.46 94.79-39.11 52.54Zm-85.35-504.67-39.35-52.31 124.7-94.02 39.11 52.3-124.46 94.03ZM199-194.02v-160h-64.5q-27.38-.96-46.44-20.87T69-422.15v-115.7q0-28.2 20.08-48.28 20.09-20.09 48.29-20.09H313.3l207.9-124.54v501.52L313.3-354.02h-44.97v160H199Zm253.83-155.57v-260.82l-121.85 72.56H137.37v115.7h193.61l121.85 72.56Zm108.37 9.57v-280.2q29.63 24.72 47.56 61.01 17.94 36.3 17.94 79.21t-17.89 79.18q-17.89 36.27-47.61 60.8ZM295.22-480Z",
12235
+ // ---- Scheduling ----
12236
+ event: "M596.82-220Q556-220 528-248.18q-28-28.19-28-69Q500-358 528.18-386q28.19-28 69-28Q638-414 666-385.82q28 28.19 28 69Q694-276 665.82-248q-28.19 28-69 28ZM182.15-74.02q-27.6 0-47.86-20.27-20.27-20.26-20.27-47.86v-615.7q0-27.7 20.27-48.03 20.26-20.34 47.86-20.34H245v-60h69.07v60h331.86v-60H715v60h62.85q27.7 0 48.03 20.34 20.34 20.33 20.34 48.03v615.7q0 27.6-20.34 47.86-20.33 20.27-48.03 20.27h-595.7Zm0-68.13h595.7V-570h-595.7v427.85Zm0-487.85h595.7v-127.85h-595.7V-630Zm0 0v-127.85V-630Z",
12237
+ schedule: "m624.37-286.04 49.06-48.59-157.8-158.86v-198.55h-65.26v224.89l174 181.11ZM480.03-74.02q-83.46 0-157.51-31.95-74.05-31.94-129.32-87.21-55.28-55.26-87.23-129.3-31.95-74.03-31.95-157.49 0-83.46 32-157.54 32-74.07 87.2-129.27 55.2-55.2 129.25-87.32 74.05-32.12 157.53-32.12t157.53 32.12q74.05 32.12 129.25 87.32 55.2 55.2 87.32 129.25 32.12 74.05 32.12 157.53T854.1-322.47q-32.12 74.05-87.32 129.25-55.2 55.2-129.24 87.2t-157.51 32Zm.12 337.85q139.16 0 238.57-99.17 99.4-99.16 99.4-238.56t-99.37-238.69Q619.11-817.85 480-817.85q-139.28 0-238.57 99.26-99.28 99.25-99.28 238.59 0 139.52 99.28 238.68 99.28 99.17 238.45 99.17Z",
12238
+ timer: "M354.5-860v-65.5h251v65.5h-251Zm92.87 452.02h65.26v-230.48h-65.26v230.48ZM479.94-70q-75.49 0-142.05-28.94-66.56-28.94-116.36-78.7-49.79-49.75-78.65-116.29-28.86-66.54-28.86-142.01 0-75.47 28.88-142.04 28.88-66.56 78.68-116.4 49.79-49.84 116.35-78.83Q404.5-802.2 480-802.2q67.48 0 127.08 22.5 59.59 22.5 105.83 62.74l53.16-53.15 46.3 46.07-53.15 53.15q36.24 40.48 61.62 97.96 25.38 57.47 25.38 136.95 0 75.52-28.96 142.11-28.95 66.59-78.78 116.31T622.04-98.92Q555.43-70 479.94-70Zm.02-68.37q124.32 0 211.11-86.62 86.78-86.62 86.78-210.95 0-124.32-86.74-211.1-86.75-86.79-211.07-86.79t-211.11 86.75q-86.78 86.74-86.78 211.06 0 124.32 86.74 210.99 86.75 86.66 211.07 86.66Zm.04-296.61Z",
12239
+ // ---- General tools ----
12240
+ terminal: "M795.76-114.3 531.33-378.5q-29.76 25.26-69.6 39.41-39.84 14.16-85.16 14.16-109.84 0-185.96-76.2Q114.5-477.33 114.5-585t76.2-183.87q76.19-76.2 184.37-76.2 108.17 0 183.86 76.2 75.7 76.2 75.7 184.02 0 43.33-13.64 82.97t-40.92 74.4L845.5-164.04l-49.74 49.74ZM375.65-393.07q79.73 0 135.29-56.24Q566.5-505.55 566.5-585q0-79.45-55.6-135.69-55.59-56.24-135.25-56.24-80.49 0-136.76 56.24-56.26 56.24-56.26 135.69 0 79.45 56.23 135.69 56.23 56.24 136.79 56.24Z",
12241
+ settings: "M480.12-330q70.88 0 120.38-49.62t49.5-120.5q0-70.88-49.62-120.38T479.88-670Q409-670 359.5-620.38T310-499.88q0 70.88 49.62 120.38t120.5 49.5Zm-.3-61.83q-45.15 0-76.57-31.6-31.42-31.6-31.42-76.75t31.6-76.57q31.6-31.42 76.75-31.42t76.57 31.6q31.42 31.6 31.42 76.75t-31.6 76.57q-31.6 31.42-76.75 31.42ZM480-194.5q-147.91 0-267.35-84.67Q93.22-363.85 34.5-500q58.72-136.15 178.15-220.83Q332.09-805.5 480-805.5q147.91 0 267.35 84.67Q866.78-636.15 925.5-500q-58.72 136.15-178.15 220.83Q627.91-194.5 480-194.5Zm0-305.5Zm-.15 240q121 0 222.34-65.5Q803.52-391 856.52-500q-53-109-154.19-174.5Q601.15-740 480.15-740t-222.34 65.5Q156.48-609 102.48-500q54 109 155.19 174.5Q358.85-260 479.85-260Z",
12242
+ tune: "M425.57-114.5V-345h65.5v83h353v65.5h-353v82h-65.5Zm-309.64-82V-262h252.5v65.5h-252.5Zm187-168.87v-82h-187v-65.26h187v-84h65.5v231.26h-65.5Zm122.64-82v-65.26h418.5v65.26h-418.5Zm166-167.63v-230.5h65.5v82h187v65.5h-187v83h-65.5Zm-475.64-83v-65.5h418.5v65.5h-418.5Z",
12243
+ search: "M795.76-114.3 531.33-378.5q-29.76 25.26-69.6 39.41-39.84 14.16-85.16 14.16-109.84 0-185.96-76.2Q114.5-477.33 114.5-585t76.2-183.87q76.19-76.2 184.37-76.2 108.17 0 183.86 76.2 75.7 76.2 75.7 184.02 0 43.33-13.64 82.97t-40.92 74.4L845.5-164.04l-49.74 49.74ZM375.65-393.07q79.73 0 135.29-56.24Q566.5-505.55 566.5-585q0-79.45-55.6-135.69-55.59-56.24-135.25-56.24-80.49 0-136.76 56.24-56.26 56.24-56.26 135.69 0 79.45 56.23 135.69 56.23 56.24 136.79 56.24Z",
12244
+ save: "M846.22-685.63v503.48q0 27.6-20.34 47.86-20.33 20.27-48.03 20.27h-595.7q-27.6 0-47.86-20.27-20.27-20.26-20.27-47.86v-595.7q0-27.7 20.27-48.03 20.26-20.34 47.86-20.34h503.48l160.59 160.59Zm-68.37 30.59L655.04-777.85H182.15v595.7h595.7v-472.89ZM479.76-247.15q43.24 0 73.74-30.27 30.5-30.26 30.5-73.5 0-43.23-30.26-73.73-30.27-30.5-73.5-30.5-43.24 0-73.74 30.26-30.5 30.27-30.5 73.5 0 43.24 30.26 73.74 30.27 30.5 73.5 30.5Zm-244.61-334.7h358v-143h-358v143Zm-53-73.19v472.89-595.7 122.81Z",
12245
+ upload: "M445.93-315.15v-359.52l-118.56 118.8-48.98-48.74L480-806.22l201.61 201.61-48.98 48.74-118.56-118.8v359.52h-68.14ZM222.15-154.02q-27.6 0-47.86-20.27-20.27-20.26-20.27-47.86v-143h68.13v143h515.7v-143h68.37v143q0 27.58-20.34 47.86-20.33 20.27-48.03 20.27h-515.7Z",
12246
+ download: "M480-315.15 278.39-516.76l48.98-48.5L445.93-446.7v-359.52h68.14v359.52l118.56-118.56 48.98 48.5L480-315.15ZM222.15-154.02q-27.6 0-47.86-20.27-20.27-20.26-20.27-47.86v-143h68.13v143h515.7v-143h68.37v143q0 27.58-20.34 47.86-20.33 20.27-48.03 20.27h-515.7Z",
12247
+ edit: "M181.91-182.15h44.24l459.81-458.81-43.76-44-460.29 459.05v43.76Zm-67.89 68.13V-253.5l574.52-573.76q8.24-8.48 19.81-13.22 11.56-4.74 24.11-4.74 11.47 0 22.95 4.74 11.48 4.74 21.2 12.98l51.89 51.17q9.24 9.72 13.48 21.32t4.24 23.31q0 11.72-4.74 23.7-4.74 11.98-12.98 20.46L253.74-114.02H114.02ZM775.17-732.7l-41.24-41.47 41.24 41.47ZM664.2-663.2l-22-21.76 43.76 44-21.76-22.24Z",
12248
+ delete: "M259.09-114.02q-28.45 0-48.41-19.89-19.96-19.89-19.96-48.24v-565.94h-45.07v-68.13h198.28v-34.3h271.9v34.3h198.52v68.13h-45.07v565.94q0 27.6-20.33 47.86-20.34 20.27-48.04 20.27H259.09Zm441.82-634.07H259.09v565.94h441.82v-565.94ZM363.89-266.24h64.07v-399h-64.07v399Zm168.15 0h64.31v-399h-64.31v399ZM259.09-748.09v565.94-565.94Z",
12249
+ // ---- Status ----
12250
+ checkCircle: "m420.52-294.41 285.63-285.63-50.78-50.03-234.85 234.85-117.85-117.85-49.78 50.03 167.63 168.63Zm59.51 220.39q-83.46 0-157.54-31.88-74.07-31.88-129.39-87.2-55.32-55.32-87.2-129.36-31.88-74.04-31.88-157.51 0-84.46 31.88-158.54 31.88-74.07 87.16-128.9 55.28-54.84 129.34-86.82 74.06-31.99 157.55-31.99 84.48 0 158.59 31.97 74.1 31.97 128.91 86.77 54.82 54.8 86.79 128.88 31.98 74.08 31.98 158.6 0 83.5-31.99 157.57-31.98 74.07-86.82 129.36-54.83 55.29-128.87 87.17-74.04 31.88-158.51 31.88Zm-.03-68.13q141.04 0 239.45-98.75 98.4-98.76 98.4-239.1 0-141.04-98.4-239.45-98.41-98.4-239.57-98.4-140.16 0-238.95 98.4-98.78 98.41-98.78 239.57 0 140.16 98.75 238.95 98.76 98.78 239.1 98.78ZM480-480Z",
12251
+ error: "M479.93-274.02q16.46 0 27.4-10.74 10.93-10.75 10.93-27.21t-10.86-27.52q-10.86-11.05-27.33-11.05-16.46 0-27.4 11.03-10.93 11.04-10.93 27.5 0 16.47 10.86 27.23 10.86 10.76 27.33 10.76Zm-31-158.74h68.14v-257.07h-68.14v257.07ZM480.3-74.02q-84.2 0-158.04-31.88-73.84-31.88-129.16-87.2-55.32-55.32-87.2-129.2-31.88-73.88-31.88-158.17 0-84.28 31.88-158.2 31.88-73.91 87.16-128.74 55.28-54.84 129.18-86.82 73.9-31.99 158.21-31.99 84.3 0 158.25 31.97 73.94 31.97 128.75 86.77 54.82 54.8 86.79 128.88 31.98 74.08 31.98 158.33 0 84.24-31.99 158.07-31.98 73.84-86.82 128.95-54.83 55.1-128.87 87.17Q564.5-74.02 480.3-74.02Zm.2-68.13q140.54 0 238.95-98.75 98.4-98.76 98.4-239.6 0-140.54-98.22-238.95-98.21-98.4-239.75-98.4-140.16 0-238.95 98.22-98.78 98.21-98.78 239.75 0 140.16 98.75 238.95 98.76 98.78 239.6 98.78ZM480-480Z",
12252
+ warning: "M34.74-116.89 480-886.22l445.26 769.33H34.74Zm113.8-65.74h662.92L480-754.98 148.54-182.63Zm335.64-54.85q12.96 0 21.87-9.08 8.91-9.09 8.91-22.05t-9.09-21.75q-9.08-8.79-22.05-8.79-12.96 0-21.87 8.96-8.91 8.97-8.91 21.93 0 12.96 9.09 21.87 9.08 8.91 22.05 8.91ZM454-348h60v-222.09h-60V-348Zm26-120.8Z",
12253
+ info: "M450.37-277.37h65.26V-520h-65.26v242.63ZM480-590.41q15.55 0 26.07-10.23 10.52-10.24 10.52-25.36 0-16.24-10.52-26.92-10.51-10.67-26.05-10.67-15.81 0-26.21 10.67-10.4 10.68-10.4 26.8 0 15.27 10.52 25.49 10.52 10.22 26.07 10.22Zm.3 516.39q-84.2 0-158.04-31.88-73.84-31.88-129.16-87.2-55.32-55.32-87.2-129.2-31.88-73.88-31.88-158.17 0-84.28 31.88-158.2 31.88-73.91 87.16-128.74 55.28-54.84 129.18-86.82 73.9-31.99 158.21-31.99 84.3 0 158.25 31.97 73.94 31.97 128.75 86.77 54.82 54.8 86.79 128.88 31.98 74.08 31.98 158.33 0 84.24-31.99 158.07-31.98 73.84-86.82 128.95-54.83 55.1-128.87 87.17Q564.5-74.02 480.3-74.02Zm.2-68.13q140.54 0 238.95-98.75 98.4-98.76 98.4-239.6 0-140.54-98.22-238.95-98.21-98.4-239.75-98.4-140.16 0-238.95 98.22-98.78 98.21-98.78 239.75 0 140.16 98.75 238.95 98.76 98.78 239.6 98.78ZM480-480Z",
12254
+ help: "M483.52-247q16.48 0 28.2-11.72 11.71-11.71 11.71-28.35 0-16.63-11.71-28.19-11.72-11.57-28.32-11.57t-28.19 11.55q-11.6 11.54-11.6 28.33 0 16.52 11.63 28.23Q466.87-247 483.52-247Zm-36.91-146h62.59q0-25.52 6.5-47.02 6.5-21.5 39.78-49.02 30.52-25.05 43.4-50.34 12.88-25.29 12.88-55.69 0-53.69-34.09-86.05t-91.19-32.36q-49.72 0-88.06 25.46-38.33 25.45-55.81 69.45l56.82 21.4q11.24-28.24 32.88-43.62 21.64-15.38 50.21-15.38 31.73 0 51.83 17.58 20.11 17.58 20.11 45.47 0 21.12-12.64 40.38-12.65 19.26-36.45 39.07-29.52 25.52-44.14 51.75-14.62 26.24-14.62 68.92Zm33.42 318.98q-83.46 0-157.54-31.88-74.07-31.88-129.39-87.2-55.32-55.32-87.2-129.36-31.88-74.04-31.88-157.51 0-84.46 31.88-158.54 31.88-74.07 87.16-128.9 55.28-54.84 129.34-86.82 74.06-31.99 157.55-31.99 84.48 0 158.59 31.97 74.1 31.97 128.91 86.77 54.82 54.8 86.79 128.88 31.98 74.08 31.98 158.6 0 83.5-31.99 157.57-31.98 74.07-86.82 129.36-54.83 55.29-128.87 87.17-74.04 31.88-158.51 31.88Zm-.03-68.13q141.04 0 239.45-98.75 98.4-98.76 98.4-239.1 0-141.04-98.4-239.45-98.41-98.4-239.57-98.4-140.16 0-238.95 98.4-98.78 98.41-98.78 239.57 0 140.16 98.75 238.95 98.76 98.78 239.1 98.78ZM480-480Z",
12255
+ visibility: "M480.12-330q70.88 0 120.38-49.62t49.5-120.5q0-70.88-49.62-120.38T479.88-670Q409-670 359.5-620.38T310-499.88q0 70.88 49.62 120.38t120.5 49.5Zm-.3-61.83q-45.15 0-76.57-31.6-31.42-31.6-31.42-76.75t31.6-76.57q31.6-31.42 76.75-31.42t76.57 31.6q31.42 31.6 31.42 76.75t-31.6 76.57q-31.6 31.42-76.75 31.42ZM480-194.5q-147.91 0-267.35-84.67Q93.22-363.85 34.5-500q58.72-136.15 178.15-220.83Q332.09-805.5 480-805.5q147.91 0 267.35 84.67Q866.78-636.15 925.5-500q-58.72 136.15-178.15 220.83Q627.91-194.5 480-194.5Zm0-305.5Zm-.15 240q121 0 222.34-65.5Q803.52-391 856.52-500q-53-109-154.19-174.5Q601.15-740 480.15-740t-222.34 65.5Q156.48-609 102.48-500q54 109 155.19 174.5Q358.85-260 479.85-260Z",
12256
+ // ---- Files ----
12257
+ folder: "M142.15-154.02q-27.6 0-47.86-20.77-20.27-20.76-20.27-47.36v-515.7q0-26.7 20.27-47.53 20.26-20.84 47.86-20.84h276.22L481-743.35h336.85q26.7 0 47.53 20.77 20.84 20.76 20.84 47.36v453.07q0 26.6-20.84 47.36-20.83 20.77-47.53 20.77h-675.7Zm0-68.13h675.7v-453.07h-365.2l-62.63-62.63H142.15v515.7Zm0 0v-515.7 515.7Z",
12258
+ description: "M319-249.52h322v-62.63H319v62.63Zm0-170h322v-62.63H319v62.63Zm-96.85 345.5q-27.6 0-47.86-20.27-20.27-20.26-20.27-47.86v-675.7q0-27.7 20.27-48.03 20.26-20.34 47.86-20.34h361.48l222.59 222.59v521.48q0 27.6-20.34 47.86-20.33 20.27-48.03 20.27h-515.7Zm326.7-557.83v-186h-326.7v675.7h515.7v-489.7h-189Zm-326.7-186v186-186 675.7-675.7Z",
12259
+ attachFile: "M737.33-324.39q0 105.46-74.69 177.91-74.69 72.46-180.26 72.46-105.58 0-180.35-72.46-74.77-72.45-74.77-177.85v-383.82q0-74.63 53.41-126.35 53.42-51.72 127.75-51.72 74.34 0 127.69 51.72 53.35 51.72 53.35 126.35v363.82q0 43.66-31.56 74.62-31.55 30.97-75.81 30.97-44.26 0-75.61-30.64t-31.35-74.95v-370h66.46v370q0 16.05 11.97 27.59t29.2 11.54q17.24 0 28.74-11.5 11.5-11.51 11.5-27.63v-363.58q.24-47.35-33.38-79.6-33.62-32.25-81.35-32.25-47.74 0-81.14 32.19-33.41 32.19-33.41 79.42v383.82q.24 77.83 55.57 130.96 55.33 53.13 133.62 53.13 77.86 0 133.03-53.16 55.17-53.17 54.93-130.93v-396.93h66.46v396.87Z"
12260
+ };
12261
+ VALID_NODE_ICONS = Object.keys(NODE_ICON_PATHS);
12262
+ }
12263
+ });
12264
+
11872
12265
  // src/validator.ts
11873
12266
  var DOCS_BASE, ERROR_DOC_URLS, WorkflowValidator, validator;
11874
12267
  var init_validator = __esm({
@@ -11878,6 +12271,8 @@ var init_validator = __esm({
11878
12271
  init_string_distance();
11879
12272
  init_signature_parser();
11880
12273
  init_type_checker();
12274
+ init_type_mappings();
12275
+ init_theme();
11881
12276
  DOCS_BASE = "https://docs.flowweaver.dev/reference";
11882
12277
  ERROR_DOC_URLS = {
11883
12278
  UNKNOWN_NODE_TYPE: `${DOCS_BASE}/concepts#node-registration`,
@@ -11998,9 +12393,11 @@ var init_validator = __esm({
11998
12393
  });
11999
12394
  this.validateStructure(workflow);
12000
12395
  this.validateDuplicateNodeNames(workflow);
12396
+ this.validateDuplicateInstanceIds(workflow);
12001
12397
  this.validateMutableBindings(workflow);
12002
12398
  this.validateReservedNames(workflow, nodeTypeMap);
12003
12399
  this.validateConnections(workflow, instanceMap);
12400
+ this.validateDuplicateConnections(workflow);
12004
12401
  this.validateNodeReferences(workflow, instanceMap);
12005
12402
  this.validateTypeCompatibility(workflow, instanceMap);
12006
12403
  this.validateRequiredInputs(workflow, instanceMap);
@@ -12010,6 +12407,10 @@ var init_validator = __esm({
12010
12407
  this.validateCycles(workflow);
12011
12408
  this.validateMultipleInputConnections(workflow, instanceMap);
12012
12409
  this.validateAnnotationSignatureConsistency(workflow);
12410
+ this.validateVisualAnnotations(workflow, instanceMap);
12411
+ this.validatePortTypes(workflow);
12412
+ this.validatePortConfigReferences(workflow, instanceMap);
12413
+ this.validateExecuteWhen(workflow);
12013
12414
  this.validateScopeTopology(workflow, instanceMap);
12014
12415
  const unknownTypeInstanceIds = new Set(
12015
12416
  workflow.instances.filter((inst) => !nodeTypeMap.has(inst.nodeType)).map((inst) => inst.id)
@@ -12814,6 +13215,24 @@ Add '@param ${fromPort}' to the workflow JSDoc and include it in the params obje
12814
13215
  * 2. Scoped input ports (callback returns) have connections from inner nodes
12815
13216
  */
12816
13217
  validateScopeTopology(workflow, instanceMap) {
13218
+ if (workflow.scopes) {
13219
+ const instanceToScope = /* @__PURE__ */ new Map();
13220
+ for (const [scopeKey, childIds] of Object.entries(workflow.scopes)) {
13221
+ for (const childId of childIds) {
13222
+ const existing = instanceToScope.get(childId);
13223
+ if (existing && existing !== scopeKey) {
13224
+ this.errors.push({
13225
+ type: "error",
13226
+ code: "SCOPE_INCONSISTENT",
13227
+ message: `Instance "${childId}" appears in multiple scopes: "${existing}" and "${scopeKey}". A node can only belong to one scope.`,
13228
+ node: childId,
13229
+ location: this.getInstanceLocation(workflow, childId)
13230
+ });
13231
+ }
13232
+ instanceToScope.set(childId, scopeKey);
13233
+ }
13234
+ }
13235
+ }
12817
13236
  for (const instance of workflow.instances) {
12818
13237
  const nodeType = instanceMap.get(instance.id);
12819
13238
  if (!nodeType) continue;
@@ -12856,7 +13275,16 @@ Add '@param ${fromPort}' to the workflow JSDoc and include it in the params obje
12856
13275
  childIds.push(child.id);
12857
13276
  }
12858
13277
  }
12859
- if (childIds.length === 0) continue;
13278
+ if (childIds.length === 0) {
13279
+ this.warnings.push({
13280
+ type: "warning",
13281
+ code: "SCOPE_EMPTY",
13282
+ message: `Scope "${scopeName}" on node "${instance.id}" has no child nodes.`,
13283
+ node: instance.id,
13284
+ location: this.getInstanceLocation(workflow, instance.id)
13285
+ });
13286
+ continue;
13287
+ }
12860
13288
  const scopedConnections = workflow.connections.filter(
12861
13289
  (conn) => conn.from.scope === scopeName && conn.from.node === instance.id || conn.to.scope === scopeName && conn.to.node === instance.id || conn.from.scope === scopeName && childIds.includes(conn.from.node) || conn.to.scope === scopeName && childIds.includes(conn.to.node)
12862
13290
  );
@@ -13025,6 +13453,164 @@ Add '@param ${fromPort}' to the workflow JSDoc and include it in the params obje
13025
13453
  }
13026
13454
  }
13027
13455
  }
13456
+ // ── H: Duplicate instance IDs ──────────────────────────────────────────
13457
+ validateDuplicateInstanceIds(workflow) {
13458
+ const seen = /* @__PURE__ */ new Set();
13459
+ for (const instance of workflow.instances) {
13460
+ if (seen.has(instance.id)) {
13461
+ this.errors.push({
13462
+ type: "error",
13463
+ code: "DUPLICATE_INSTANCE_ID",
13464
+ message: `Duplicate instance ID "${instance.id}" in workflow. Each @node must have a unique ID.`,
13465
+ node: instance.id,
13466
+ location: instance.sourceLocation
13467
+ });
13468
+ }
13469
+ seen.add(instance.id);
13470
+ }
13471
+ }
13472
+ // ── I: Duplicate connections ──────────────────────────────────────────
13473
+ validateDuplicateConnections(workflow) {
13474
+ const seen = /* @__PURE__ */ new Set();
13475
+ for (const conn of workflow.connections) {
13476
+ const key = `${conn.from.node}.${conn.from.port}->${conn.to.node}.${conn.to.port}`;
13477
+ if (seen.has(key)) {
13478
+ this.errors.push({
13479
+ type: "error",
13480
+ code: "DUPLICATE_CONNECTION",
13481
+ message: `Duplicate connection: ${key}`,
13482
+ connection: conn,
13483
+ location: this.getConnectionLocation(conn)
13484
+ });
13485
+ }
13486
+ seen.add(key);
13487
+ }
13488
+ }
13489
+ // ── J+K: Visual annotation validation ────────────────────────────────
13490
+ validateVisualAnnotations(workflow, instanceMap) {
13491
+ const validColors = VALID_NODE_COLORS;
13492
+ const validIcons = VALID_NODE_ICONS;
13493
+ for (const nodeType of workflow.nodeTypes) {
13494
+ const color = nodeType.visuals?.color;
13495
+ const icon = nodeType.visuals?.icon;
13496
+ if (color && !validColors.includes(color)) {
13497
+ const suggestions = findClosestMatches(color, [...validColors]);
13498
+ const hint = suggestions.length > 0 ? ` Did you mean "${suggestions[0]}"?` : "";
13499
+ this.warnings.push({
13500
+ type: "warning",
13501
+ code: "INVALID_COLOR",
13502
+ message: `Node type "${nodeType.functionName}" has invalid color "${color}".${hint} Valid colors: ${validColors.join(", ")}.`,
13503
+ node: nodeType.functionName,
13504
+ location: nodeType.sourceLocation
13505
+ });
13506
+ }
13507
+ if (icon && !validIcons.includes(icon)) {
13508
+ const suggestions = findClosestMatches(icon, [...validIcons]);
13509
+ const hint = suggestions.length > 0 ? ` Did you mean "${suggestions[0]}"?` : "";
13510
+ this.warnings.push({
13511
+ type: "warning",
13512
+ code: "INVALID_ICON",
13513
+ message: `Node type "${nodeType.functionName}" has invalid icon "${icon}".${hint}`,
13514
+ node: nodeType.functionName,
13515
+ location: nodeType.sourceLocation
13516
+ });
13517
+ }
13518
+ }
13519
+ for (const instance of workflow.instances) {
13520
+ if (instance.config?.color && !validColors.includes(instance.config.color)) {
13521
+ const suggestions = findClosestMatches(instance.config.color, [...validColors]);
13522
+ const hint = suggestions.length > 0 ? ` Did you mean "${suggestions[0]}"?` : "";
13523
+ this.warnings.push({
13524
+ type: "warning",
13525
+ code: "INVALID_COLOR",
13526
+ message: `Instance "${instance.id}" has invalid color "${instance.config.color}".${hint} Valid colors: ${validColors.join(", ")}.`,
13527
+ node: instance.id,
13528
+ location: instance.sourceLocation
13529
+ });
13530
+ }
13531
+ if (instance.config?.icon && !validIcons.includes(instance.config.icon)) {
13532
+ const suggestions = findClosestMatches(instance.config.icon, [...validIcons]);
13533
+ const hint = suggestions.length > 0 ? ` Did you mean "${suggestions[0]}"?` : "";
13534
+ this.warnings.push({
13535
+ type: "warning",
13536
+ code: "INVALID_ICON",
13537
+ message: `Instance "${instance.id}" has invalid icon "${instance.config.icon}".${hint}`,
13538
+ node: instance.id,
13539
+ location: instance.sourceLocation
13540
+ });
13541
+ }
13542
+ }
13543
+ }
13544
+ // ── L: Port type validation ──────────────────────────────────────────
13545
+ validatePortTypes(workflow) {
13546
+ for (const nodeType of workflow.nodeTypes) {
13547
+ for (const [portName, portDef] of Object.entries(nodeType.inputs)) {
13548
+ if (!isValidPortType(portDef.dataType)) {
13549
+ this.warnings.push({
13550
+ type: "warning",
13551
+ code: "INVALID_PORT_TYPE",
13552
+ message: `Port "${portName}" on node type "${nodeType.functionName}" has invalid type "${portDef.dataType}".`,
13553
+ node: nodeType.functionName,
13554
+ location: nodeType.sourceLocation
13555
+ });
13556
+ }
13557
+ }
13558
+ for (const [portName, portDef] of Object.entries(nodeType.outputs)) {
13559
+ if (!isValidPortType(portDef.dataType)) {
13560
+ this.warnings.push({
13561
+ type: "warning",
13562
+ code: "INVALID_PORT_TYPE",
13563
+ message: `Port "${portName}" on node type "${nodeType.functionName}" has invalid type "${portDef.dataType}".`,
13564
+ node: nodeType.functionName,
13565
+ location: nodeType.sourceLocation
13566
+ });
13567
+ }
13568
+ }
13569
+ }
13570
+ }
13571
+ // ── M: portOrder/portLabel reference validation ──────────────────────
13572
+ validatePortConfigReferences(workflow, instanceMap) {
13573
+ for (const instance of workflow.instances) {
13574
+ const portConfigs = instance.config?.portConfigs;
13575
+ if (!portConfigs) continue;
13576
+ const nodeType = instanceMap.get(instance.id);
13577
+ if (!nodeType) continue;
13578
+ const allPorts = /* @__PURE__ */ new Set([
13579
+ ...Object.keys(nodeType.inputs),
13580
+ ...Object.keys(nodeType.outputs)
13581
+ ]);
13582
+ for (const pc of portConfigs) {
13583
+ if (!allPorts.has(pc.portName)) {
13584
+ const suggestions = findClosestMatches(pc.portName, [...allPorts]);
13585
+ const hint = suggestions.length > 0 ? ` Did you mean "${suggestions[0]}"?` : "";
13586
+ this.warnings.push({
13587
+ type: "warning",
13588
+ code: "INVALID_PORT_CONFIG_REF",
13589
+ message: `Instance "${instance.id}" references port "${pc.portName}" in portConfig, but this port does not exist on node type "${instance.nodeType}".${hint}`,
13590
+ node: instance.id,
13591
+ location: instance.sourceLocation
13592
+ });
13593
+ }
13594
+ }
13595
+ }
13596
+ }
13597
+ // ── N: @executeWhen value validation ─────────────────────────────────
13598
+ validateExecuteWhen(workflow) {
13599
+ const validStrategies = Object.values(EXECUTION_STRATEGIES);
13600
+ for (const nodeType of workflow.nodeTypes) {
13601
+ if (nodeType.executeWhen && !validStrategies.includes(nodeType.executeWhen)) {
13602
+ const suggestions = findClosestMatches(nodeType.executeWhen, validStrategies);
13603
+ const hint = suggestions.length > 0 ? ` Did you mean "${suggestions[0]}"?` : "";
13604
+ this.warnings.push({
13605
+ type: "warning",
13606
+ code: "INVALID_EXECUTE_WHEN",
13607
+ message: `Node type "${nodeType.functionName}" has invalid @executeWhen value "${nodeType.executeWhen}".${hint} Valid values: ${validStrategies.join(", ")}.`,
13608
+ node: nodeType.functionName,
13609
+ location: nodeType.sourceLocation
13610
+ });
13611
+ }
13612
+ }
13613
+ }
13028
13614
  /**
13029
13615
  * Format a type for display in error messages.
13030
13616
  * Prefers the structural TypeScript type when available, falling back to the enum name.
@@ -26942,86 +27528,8 @@ function hasBranching(workflow) {
26942
27528
  });
26943
27529
  }
26944
27530
 
26945
- // src/type-mappings.ts
26946
- var PORT_TYPE_MAPPINGS = {
26947
- STRING: {
26948
- typescript: "string",
26949
- description: "Text value"
26950
- },
26951
- NUMBER: {
26952
- typescript: "number",
26953
- description: "Numeric value"
26954
- },
26955
- BOOLEAN: {
26956
- typescript: "boolean",
26957
- description: "True or false value"
26958
- },
26959
- ARRAY: {
26960
- typescript: "unknown[]",
26961
- description: "Array of values"
26962
- },
26963
- OBJECT: {
26964
- typescript: "Record<string, unknown>",
26965
- description: "Object with properties"
26966
- },
26967
- FUNCTION: {
26968
- typescript: "(...args: unknown[]) => unknown",
26969
- description: "Function or callback"
26970
- },
26971
- ANY: {
26972
- typescript: "unknown",
26973
- description: "Any type of value"
26974
- },
26975
- STEP: {
26976
- typescript: "boolean",
26977
- description: "Control flow signal (boolean in public API)"
26978
- }
26979
- };
26980
- function mapToTypeScript(portType, tsType) {
26981
- const mapping = PORT_TYPE_MAPPINGS[portType];
26982
- if (!mapping) {
26983
- console.warn(`Unknown port type: ${portType}, defaulting to 'unknown'`);
26984
- return "unknown";
26985
- }
26986
- if (tsType && (portType === "OBJECT" || portType === "ANY" || portType === "ARRAY" || portType === "FUNCTION")) {
26987
- return tsType;
26988
- }
26989
- return mapping.typescript;
26990
- }
26991
- function inferDataTypeFromTS(tsType) {
26992
- const normalized = tsType.trim();
26993
- if (normalized === "string") return "STRING";
26994
- if (normalized === "number") return "NUMBER";
26995
- if (normalized === "boolean") return "BOOLEAN";
26996
- if (normalized === "any" || normalized === "unknown" || normalized === "never") {
26997
- return "ANY";
26998
- }
26999
- if (normalized === "void" || normalized === "undefined" || normalized === "null") {
27000
- return "ANY";
27001
- }
27002
- if (normalized.endsWith("[]") || normalized.startsWith("Array<") || normalized.startsWith("ReadonlyArray<")) {
27003
- return "ARRAY";
27004
- }
27005
- if (normalized.includes("=>") || normalized === "Function" || normalized.startsWith("(")) {
27006
- return "FUNCTION";
27007
- }
27008
- if (normalized.startsWith("Promise<") && normalized.endsWith(">")) {
27009
- const inner = normalized.slice(8, -1);
27010
- return inferDataTypeFromTS(inner);
27011
- }
27012
- if (normalized.includes("|")) {
27013
- const parts2 = normalized.split("|").map((p) => p.trim());
27014
- const nonNullParts = parts2.filter((p) => p !== "undefined" && p !== "null");
27015
- if (nonNullParts.length === 1) {
27016
- return inferDataTypeFromTS(nonNullParts[0]);
27017
- }
27018
- return "ANY";
27019
- }
27020
- if (normalized.includes("&")) {
27021
- return "OBJECT";
27022
- }
27023
- return "OBJECT";
27024
- }
27531
+ // src/generator/unified.ts
27532
+ init_type_mappings();
27025
27533
 
27026
27534
  // src/generator/code-utils.ts
27027
27535
  init_constants();
@@ -27284,6 +27792,7 @@ function computeParallelLevels(cfg, branchingNodes, scopedChildren) {
27284
27792
  }
27285
27793
 
27286
27794
  // src/generator/scope-function-generator.ts
27795
+ init_type_mappings();
27287
27796
  function generateScopeFunctionClosure(scopeName, parentNodeId, parentNodeType, workflow, childInstances, isAsync2, production) {
27288
27797
  const lines = [];
27289
27798
  const scopedOutputPorts = [];
@@ -27539,6 +28048,7 @@ function generateScopeFunctionClosure(scopeName, parentNodeId, parentNodeType, w
27539
28048
  }
27540
28049
 
27541
28050
  // src/generator/code-utils.ts
28051
+ init_type_mappings();
27542
28052
  function toValidIdentifier(nodeId) {
27543
28053
  let sanitized = nodeId.replace(/[^a-zA-Z0-9_$]/g, "_");
27544
28054
  if (/^[0-9]/.test(sanitized)) {
@@ -29451,6 +29961,7 @@ var bodyGenerator = new BodyGenerator();
29451
29961
 
29452
29962
  // src/api/generate.ts
29453
29963
  init_constants();
29964
+ init_type_mappings();
29454
29965
  var import_source_map = __toESM(require_source_map(), 1);
29455
29966
 
29456
29967
  // src/generated-branding.ts
@@ -30509,6 +31020,7 @@ function generateWorkflowFunction(workflow, production, allWorkflows, generatedW
30509
31020
  init_constants();
30510
31021
 
30511
31022
  // src/annotation-generator.ts
31023
+ init_type_mappings();
30512
31024
  init_constants();
30513
31025
 
30514
31026
  // src/utils/port-tag-utils.ts
@@ -32437,6 +32949,8 @@ import { createHash } from "node:crypto";
32437
32949
 
32438
32950
  // src/jsdoc-parser.ts
32439
32951
  init_constants();
32952
+ init_type_mappings();
32953
+ init_string_distance();
32440
32954
 
32441
32955
  // node_modules/chevrotain/lib/src/version.js
32442
32956
  var VERSION = "11.1.1";
@@ -44008,10 +44522,10 @@ var JSDocParser = class {
44008
44522
  config2.description = comment.trim();
44009
44523
  break;
44010
44524
  case "color":
44011
- config2.color = comment.trim();
44525
+ config2.color = comment.trim().replace(/^["']|["']$/g, "");
44012
44526
  break;
44013
44527
  case "icon":
44014
- config2.icon = comment.trim();
44528
+ config2.icon = comment.trim().replace(/^["']|["']$/g, "");
44015
44529
  break;
44016
44530
  case "tag":
44017
44531
  config2.tags = config2.tags || [];
@@ -44048,6 +44562,15 @@ var JSDocParser = class {
44048
44562
  case "step":
44049
44563
  this.parseStepTag(tag, config2, func, warnings);
44050
44564
  break;
44565
+ default:
44566
+ if (tagName === "param" || tagName === "returns" || tagName === "return") {
44567
+ warnings.push(`@${tagName} is for workflows, not node types. Use @input/@output instead.`);
44568
+ } else if (!KNOWN_NODETYPE_TAGS.has(tagName) && !STANDARD_JSDOC_TAGS.has(tagName)) {
44569
+ const suggestions = findClosestMatches(tagName, [...KNOWN_NODETYPE_TAGS]);
44570
+ const hint = suggestions.length > 0 ? ` Did you mean @${suggestions[0]}?` : "";
44571
+ warnings.push(`Unknown annotation @${tagName} in nodeType block.${hint}`);
44572
+ }
44573
+ break;
44051
44574
  }
44052
44575
  });
44053
44576
  return config2;
@@ -44153,6 +44676,17 @@ var JSDocParser = class {
44153
44676
  case "returns":
44154
44677
  this.parseReturnTag(tag, config2, func, warnings);
44155
44678
  break;
44679
+ default:
44680
+ if (tagName === "color" || tagName === "icon" || tagName === "tag") {
44681
+ warnings.push(`@${tagName} is for node types, not workflows. Use it on @flowWeaver nodeType instead.`);
44682
+ } else if (tagName === "input" || tagName === "output" || tagName === "step") {
44683
+ warnings.push(`@${tagName} is for node types, not workflows. Use @param/@returns for workflows.`);
44684
+ } else if (!KNOWN_WORKFLOW_TAGS.has(tagName) && !STANDARD_JSDOC_TAGS.has(tagName)) {
44685
+ const suggestions = findClosestMatches(tagName, [...KNOWN_WORKFLOW_TAGS]);
44686
+ const hint = suggestions.length > 0 ? ` Did you mean @${suggestions[0]}?` : "";
44687
+ warnings.push(`Unknown annotation @${tagName} in workflow block.${hint}`);
44688
+ }
44689
+ break;
44156
44690
  }
44157
44691
  });
44158
44692
  return config2;
@@ -44206,6 +44740,13 @@ var JSDocParser = class {
44206
44740
  case "port":
44207
44741
  this.parsePatternPortTag(tag, config2, warnings);
44208
44742
  break;
44743
+ default:
44744
+ if (!KNOWN_PATTERN_TAGS.has(tagName) && !STANDARD_JSDOC_TAGS.has(tagName)) {
44745
+ const suggestions = findClosestMatches(tagName, [...KNOWN_PATTERN_TAGS]);
44746
+ const hint = suggestions.length > 0 ? ` Did you mean @${suggestions[0]}?` : "";
44747
+ warnings.push(`Unknown annotation @${tagName} in pattern block.${hint}`);
44748
+ }
44749
+ break;
44209
44750
  }
44210
44751
  });
44211
44752
  if (config2.positions && config2.instances) {
@@ -44302,6 +44843,9 @@ var JSDocParser = class {
44302
44843
  let tsType;
44303
44844
  const isScopedStepInput = scope && isScopedMandatoryPort(name);
44304
44845
  if (isExecutePort(name) || isScopedStepInput) {
44846
+ if (result.dataType && result.dataType !== "STEP") {
44847
+ warnings.push(`Port "${name}" is a reserved control port; type will always be STEP.`);
44848
+ }
44305
44849
  type2 = "STEP";
44306
44850
  } else if (scope) {
44307
44851
  const scopeParam = func.getParameters().find((p) => p.getName() === scope);
@@ -44343,6 +44887,9 @@ var JSDocParser = class {
44343
44887
  expression = label.substring("Expression:".length).trim();
44344
44888
  label = void 0;
44345
44889
  }
44890
+ if (config2.inputs.hasOwnProperty(name)) {
44891
+ warnings.push(`Duplicate @input "${name}". The second declaration will overwrite the first.`);
44892
+ }
44346
44893
  config2.inputs[name] = {
44347
44894
  type: type2,
44348
44895
  defaultValue: defaultValue ? this.parseDefaultValue(defaultValue) : void 0,
@@ -44370,6 +44917,9 @@ var JSDocParser = class {
44370
44917
  let tsType;
44371
44918
  const isScopedStepOutput = scope && isScopedMandatoryPort(name);
44372
44919
  if (isSuccessPort(name) || isFailurePort(name) || isScopedStepOutput) {
44920
+ if (result.dataType && result.dataType !== "STEP") {
44921
+ warnings.push(`Port "${name}" is a reserved control port; type will always be STEP.`);
44922
+ }
44373
44923
  type2 = "STEP";
44374
44924
  } else if (scope) {
44375
44925
  const scopeParam = func.getParameters().find((p) => p.getName() === scope);
@@ -44408,6 +44958,9 @@ var JSDocParser = class {
44408
44958
  type2 = "ANY";
44409
44959
  }
44410
44960
  }
44961
+ if (config2.outputs.hasOwnProperty(name)) {
44962
+ warnings.push(`Duplicate @output "${name}". The second declaration will overwrite the first.`);
44963
+ }
44411
44964
  config2.outputs[name] = {
44412
44965
  type: type2,
44413
44966
  label: description?.trim(),
@@ -44460,9 +45013,14 @@ var JSDocParser = class {
44460
45013
  const fieldMatch = returnTypeText.match(new RegExp(`${name}\\s*:\\s*([^;},]+)`));
44461
45014
  if (fieldMatch) {
44462
45015
  type2 = inferDataTypeFromTS(fieldMatch[1].trim());
45016
+ } else {
45017
+ warnings.push(`Could not infer type for @returns "${name}", defaulting to ANY.`);
44463
45018
  }
44464
45019
  }
44465
45020
  config2.returnPorts = config2.returnPorts || {};
45021
+ if (config2.returnPorts.hasOwnProperty(name)) {
45022
+ warnings.push(`Duplicate @returns "${name}". The second declaration will overwrite the first.`);
45023
+ }
44466
45024
  config2.returnPorts[name] = {
44467
45025
  dataType: type2,
44468
45026
  label: description?.trim(),
@@ -44496,10 +45054,15 @@ var JSDocParser = class {
44496
45054
  const fieldMatch = paramTypeText.match(new RegExp(`${name}\\s*:\\s*([^;},]+)`));
44497
45055
  if (fieldMatch) {
44498
45056
  type2 = inferDataTypeFromTS(fieldMatch[1].trim());
45057
+ } else {
45058
+ warnings.push(`@param "${name}" does not match any field in the params object. Type defaults to ANY.`);
44499
45059
  }
44500
45060
  }
44501
45061
  }
44502
45062
  config2.startPorts = config2.startPorts || {};
45063
+ if (config2.startPorts.hasOwnProperty(name)) {
45064
+ warnings.push(`Duplicate @param "${name}". The second declaration will overwrite the first.`);
45065
+ }
44503
45066
  config2.startPorts[name] = {
44504
45067
  dataType: type2,
44505
45068
  label: description?.trim(),
@@ -44862,6 +45425,9 @@ function assignImplicitPortOrders(ports) {
44862
45425
  }
44863
45426
  }
44864
45427
 
45428
+ // src/parser.ts
45429
+ init_type_mappings();
45430
+
44865
45431
  // src/resolve-package-types.ts
44866
45432
  import * as path4 from "node:path";
44867
45433
  import * as fs4 from "node:fs";
@@ -44943,6 +45509,9 @@ function resolveInNodeModules(packageSpecifier, nmDir) {
44943
45509
  return null;
44944
45510
  }
44945
45511
 
45512
+ // src/npm-packages.ts
45513
+ init_type_mappings();
45514
+
44946
45515
  // src/shared-project.ts
44947
45516
  import { Project } from "ts-morph";
44948
45517
  var sharedProject = null;
@@ -53623,6 +54192,98 @@ var errorMappers = {
53623
54192
  fix: `Connect a STEP-type output (like onSuccess or onFailure) to Exit.${portName}. Don't connect data ports to control flow ports.`,
53624
54193
  code: error2.code
53625
54194
  };
54195
+ },
54196
+ // ── Annotation validation rules ──────────────────────────────────────
54197
+ DUPLICATE_INSTANCE_ID(error2) {
54198
+ const quoted = extractQuoted(error2.message);
54199
+ const instanceId = quoted[0] || error2.node || "unknown";
54200
+ return {
54201
+ title: "Duplicate Instance ID",
54202
+ explanation: `Two @node declarations use the same ID '${instanceId}'. Each node instance needs a unique ID within its workflow.`,
54203
+ fix: `Rename one of the '${instanceId}' instances to give it a unique ID.`,
54204
+ code: error2.code
54205
+ };
54206
+ },
54207
+ DUPLICATE_CONNECTION(error2) {
54208
+ return {
54209
+ title: "Duplicate Connection",
54210
+ explanation: `The same connection is declared twice. ${error2.message}`,
54211
+ fix: `Remove the duplicate @connect annotation.`,
54212
+ code: error2.code
54213
+ };
54214
+ },
54215
+ INVALID_COLOR(error2) {
54216
+ const quoted = extractQuoted(error2.message);
54217
+ const color = quoted[1] || quoted[0] || "unknown";
54218
+ return {
54219
+ title: "Invalid Color",
54220
+ explanation: `Color '${color}' is not a recognized node color. Check the spelling or use a valid color name.`,
54221
+ fix: `Use one of the valid colors: blue, purple, cyan, orange, pink, green, red, yellow, teal.`,
54222
+ code: error2.code
54223
+ };
54224
+ },
54225
+ INVALID_ICON(error2) {
54226
+ const quoted = extractQuoted(error2.message);
54227
+ const icon = quoted[1] || quoted[0] || "unknown";
54228
+ return {
54229
+ title: "Invalid Icon",
54230
+ explanation: `Icon '${icon}' is not a recognized node icon. Check the spelling.`,
54231
+ fix: `Use a valid icon name from the icon set (e.g., database, code, flow, psychology, send).`,
54232
+ code: error2.code
54233
+ };
54234
+ },
54235
+ INVALID_PORT_TYPE(error2) {
54236
+ const quoted = extractQuoted(error2.message);
54237
+ const portName = quoted[0] || "unknown";
54238
+ const typeName = quoted[2] || quoted[1] || "unknown";
54239
+ return {
54240
+ title: "Invalid Port Type",
54241
+ explanation: `Port '${portName}' has an unrecognized type '${typeName}'.`,
54242
+ fix: `Use a valid port type: STRING, NUMBER, BOOLEAN, ARRAY, OBJECT, FUNCTION, ANY, or STEP.`,
54243
+ code: error2.code
54244
+ };
54245
+ },
54246
+ INVALID_PORT_CONFIG_REF(error2) {
54247
+ const quoted = extractQuoted(error2.message);
54248
+ const instanceId = quoted[0] || error2.node || "unknown";
54249
+ const portName = quoted[1] || "unknown";
54250
+ return {
54251
+ title: "Invalid Port Config Reference",
54252
+ explanation: `Instance '${instanceId}' references port '${portName}' in a portOrder or portLabel annotation, but this port doesn't exist on the node type.`,
54253
+ fix: `Check the port name spelling, or remove the port configuration if the port was renamed or removed.`,
54254
+ code: error2.code
54255
+ };
54256
+ },
54257
+ INVALID_EXECUTE_WHEN(error2) {
54258
+ const quoted = extractQuoted(error2.message);
54259
+ const value2 = quoted[1] || quoted[0] || "unknown";
54260
+ return {
54261
+ title: "Invalid Execution Strategy",
54262
+ explanation: `@executeWhen value '${value2}' is not recognized.`,
54263
+ fix: `Use one of: CONJUNCTION (all inputs), DISJUNCTION (any input), or CUSTOM (custom logic).`,
54264
+ code: error2.code
54265
+ };
54266
+ },
54267
+ SCOPE_EMPTY(error2) {
54268
+ const quoted = extractQuoted(error2.message);
54269
+ const scopeName = quoted[0] || "unknown";
54270
+ const nodeName = quoted[1] || error2.node || "unknown";
54271
+ return {
54272
+ title: "Empty Scope",
54273
+ explanation: `Scope '${scopeName}' on node '${nodeName}' has no child nodes declared inside it. The scope won't iterate over anything.`,
54274
+ fix: `Add child nodes to the scope with @scope ${scopeName} [childId1, childId2], or remove the scope if it's not needed.`,
54275
+ code: error2.code
54276
+ };
54277
+ },
54278
+ SCOPE_INCONSISTENT(error2) {
54279
+ const quoted = extractQuoted(error2.message);
54280
+ const instanceId = quoted[0] || error2.node || "unknown";
54281
+ return {
54282
+ title: "Scope Conflict",
54283
+ explanation: `Instance '${instanceId}' is assigned to multiple scopes. A node can only belong to one scope at a time.`,
54284
+ fix: `Remove '${instanceId}' from one of the conflicting @scope declarations.`,
54285
+ code: error2.code
54286
+ };
53626
54287
  }
53627
54288
  };
53628
54289
  function getFriendlyError(error2) {
@@ -58661,223 +59322,7 @@ import * as path12 from "path";
58661
59322
 
58662
59323
  // src/diagram/geometry.ts
58663
59324
  init_constants();
58664
-
58665
- // src/diagram/theme.ts
58666
- var DARK_PORT_COLORS = {
58667
- STEP: "#10e15a",
58668
- // green-dark-shade-1
58669
- STRING: "#5e9eff",
58670
- // blue-dark-shade-1
58671
- NUMBER: "#ffbd30",
58672
- // yellow-dark-shade-1
58673
- BOOLEAN: "#ff52da",
58674
- // pink-dark-shade-1
58675
- OBJECT: "#b36bff",
58676
- // purple-dark-shade-1
58677
- ARRAY: "#ff8133",
58678
- // orange-dark-shade-1
58679
- FUNCTION: "#e9916a",
58680
- // brown-dark-shade-1
58681
- ANY: "#6fe5dc"
58682
- // cyan-dark-shade-1
58683
- };
58684
- var LIGHT_PORT_COLORS = {
58685
- STEP: "#0ec850",
58686
- // green-shade-2
58687
- STRING: "#548ce3",
58688
- // blue-shade-2
58689
- NUMBER: "#e3a82b",
58690
- // yellow-shade-2
58691
- BOOLEAN: "#e349c2",
58692
- // pink-shade-2
58693
- OBJECT: "#9f5fe3",
58694
- // purple-shade-2
58695
- ARRAY: "#e3732d",
58696
- // orange-shade-2
58697
- FUNCTION: "#cf815e",
58698
- // brown-shade-2
58699
- ANY: "#63ccc4"
58700
- // cyan-shade-2
58701
- };
58702
- var DARK_FAILURE_COLOR = "#ff4f4f";
58703
- var LIGHT_FAILURE_COLOR = "#e34646";
58704
- var NODE_VARIANT_COLORS = {
58705
- blue: { border: "#548ce3", darkBorder: "#5e9eff" },
58706
- // blue-shade-2 / blue-dark-shade-1
58707
- purple: { border: "#9f5fe3", darkBorder: "#b36bff" },
58708
- // purple-shade-2 / purple-dark-shade-1
58709
- cyan: { border: "#63ccc4", darkBorder: "#6fe5dc" },
58710
- // cyan-shade-2 / cyan-dark-shade-1
58711
- orange: { border: "#e3732d", darkBorder: "#ff8133" },
58712
- // orange-shade-2 / orange-dark-shade-1
58713
- pink: { border: "#e349c2", darkBorder: "#ff52da" },
58714
- // pink-shade-2 / pink-dark-shade-1
58715
- green: { border: "#0ec850", darkBorder: "#10e15a" }
58716
- // green-shade-2 / green-dark-shade-1
58717
- };
58718
- var DARK_PALETTE = {
58719
- background: "#202139",
58720
- // color-brand-subtle-bg = primary-dark-extended-shade-95
58721
- nodeFill: "#1a1a2e",
58722
- // color-surface-main = dark-shade-100
58723
- nodeStroke: "#767682",
58724
- // color-border-default = dark-shade-60
58725
- labelColor: "#a4beff",
58726
- // secondary-dark-base (node label text)
58727
- sublabelColor: "#babac0",
58728
- // color-text-subtle = dark-shade-30
58729
- connectionColor: "#5f5f6d",
58730
- // color-border-subtle = dark-shade-70
58731
- dotColor: "#8e9eff",
58732
- // color-background-dots = primary-dark-tint-1
58733
- labelBadgeFill: "#252538",
58734
- // color-surface-low = dark-shade-95
58735
- labelBadgeBorder: "#313143",
58736
- // color-surface-lowest = dark-shade-90
58737
- nodeIconColor: "#a4beff",
58738
- // secondary-dark-base (matches label color)
58739
- scopeAreaStroke: "#5f5f6d"
58740
- // color-border-subtle = dark-shade-70
58741
- };
58742
- var LIGHT_PALETTE = {
58743
- background: "#f6f7ff",
58744
- // color-brand-subtle-bg = primary-extended-tint-95
58745
- nodeFill: "#ffffff",
58746
- // color-surface-main = white
58747
- nodeStroke: "#cccccc",
58748
- // color-border-default ≈ shade-20
58749
- labelColor: "#223354",
58750
- // secondary-base (light)
58751
- sublabelColor: "#808080",
58752
- // shade-50
58753
- connectionColor: "#b3b3b3",
58754
- // shade-30
58755
- dotColor: "#5468ff",
58756
- // color-background-dots = primary-shade-1
58757
- labelBadgeFill: "#ffffff",
58758
- // surface-main — 80% opacity applied in renderer
58759
- labelBadgeBorder: "#e6e6e6",
58760
- // shade-10
58761
- nodeIconColor: "#5468ff",
58762
- // primary-base (light)
58763
- scopeAreaStroke: "#cccccc"
58764
- // color-border-default
58765
- };
58766
- function getTheme(name) {
58767
- return name === "light" ? LIGHT_PALETTE : DARK_PALETTE;
58768
- }
58769
- function getPortColor(dataType, isFailure, theme = "dark") {
58770
- if (isFailure) return theme === "dark" ? DARK_FAILURE_COLOR : LIGHT_FAILURE_COLOR;
58771
- const colors2 = theme === "dark" ? DARK_PORT_COLORS : LIGHT_PORT_COLORS;
58772
- return colors2[dataType] ?? colors2.ANY;
58773
- }
58774
- function getPortRingColor(dataType, isFailure, theme = "dark") {
58775
- const color = getPortColor(dataType, isFailure, theme);
58776
- return darkenHex(color, 0.4);
58777
- }
58778
- var TYPE_ABBREVIATIONS = {
58779
- STEP: "STP",
58780
- STRING: "STR",
58781
- NUMBER: "NUM",
58782
- BOOLEAN: "BOOL",
58783
- OBJECT: "OBJ",
58784
- ARRAY: "ARR",
58785
- FUNCTION: "FN",
58786
- ANY: "ANY"
58787
- };
58788
- var NODE_ICON_PATHS = {
58789
- // ---- Virtual node icons ----
58790
- startNode: "M314.02-192v-582l457.22 291-457.22 291Zm68.13-291Zm0 166.93L644.93-483 382.15-649.93v333.86Z",
58791
- exitNode: "M302.15-657.85v355.7-355.7Zm-68.13 423.83v-492.2h492.2v492.2h-492.2Zm68.13-68.13h355.7v-355.7h-355.7v355.7Z",
58792
- // ---- Default / structural ----
58793
- code: "M317.37-236.26 71.39-482l247.98-247.98 48.98 48.74-199 199 197 197-48.98 48.98Zm323.26 2.24-48.74-48.74 199-199-197-197 48.74-48.98L888.61-482 640.63-234.02Z",
58794
- flow: "M115.93-115.93v-188.14h157.83l173.61-173.6v-143.74q-35.74-12.79-58.59-42.23-22.85-29.43-22.85-66.36 0-47.53 33.31-80.8 33.3-33.27 80.88-33.27 47.57 0 80.76 33.27 33.19 33.27 33.19 80.8 0 36.93-22.85 66.36-22.85 29.44-58.59 42.23v143.74l173.85 173.6h157.59v188.14H655.93v-121.5L480-413.37 304.07-237.43v121.5H115.93Z",
58795
- // ---- AI & ML ----
58796
- psychology: "M234.74-74.74v-174.87q-57-52.72-88.5-122.93-31.5-70.22-31.5-147.46 0-152.29 106.5-258.9 106.5-106.6 258.65-106.6 126.78 0 224.72 74.82 97.93 74.81 127.65 194.48l55.24 219.44q4.48 16.15-5.7 29.09-10.17 12.93-27.13 12.93H765.5v131.87q0 28.35-19.96 48.24t-48.41 19.89H605.5v80h-68.37v-148.13h160v-200h113.28l-44.04-176.41q-24-95.81-104.28-156.83-80.29-61.02-181.98-61.02-123.86 0-210.55 85.74-86.69 85.75-86.69 208.98 0 63.62 26.08 121.25 26.09 57.63 73.96 102.01l19.96 18.92v205.49h-68.13Zm262.02-371.19ZM449-374h60l3-44q12-2 22.5-8.46 10.49-6.46 18.52-14.54l41.74 14L623-475l-30-24q5-14 5-29t-5-29l30-24-28.24-48-41.71 14q-8.3-7.69-19.15-13.85-10.86-6.15-21.88-9.15L509-682h-60l-3 44q-11 3-21.83 9.15-10.84 6.16-19.12 13.85l-41.57-14L335-581l30 24q-5 14-5 29t5 29l-30 24 28.48 48 41.57-14q8.01 8.08 18.48 14.54Q434-420 446-418l3 44Zm30.12-84q-29.12 0-49.62-20.38-20.5-20.38-20.5-49.5t20.38-49.62q20.38-20.5 49.5-20.5t49.62 20.38q20.5 20.38 20.5 49.5t-20.38 49.62q-20.38 20.5-49.5 20.5Z",
58797
- smartToy: "M141.5-376q-45 0-76-31.21T34.5-483q0-44.58 31.21-75.79Q96.92-590 141.5-590v-128.5q0-24 18-42t42-18H373q0-45 31.21-76t75.79-31q44.58 0 75.79 31.21Q587-823.08 587-778.5h171.5q24 0 42 18t18 42V-590q45 0 76 31.21t31 75.79q0 44.58-31.21 75.79Q863.08-376 818.5-376v201.5q0 24-18 42t-42 18h-557q-24 0-42-18t-18-42V-376Zm203.17-101.43q17.24 0 29.1-12.1 11.86-12.09 11.86-29.46 0-17.36-12.09-29.22-12.1-11.86-29.34-11.86-17.24 0-29.22 12.08Q303-535.92 303-518.4q0 17.25 12.21 29.11 12.22 11.86 29.46 11.86Zm271.13 0q17.24 0 29.22-12.1Q657-501.62 657-518.99q0-17.36-12.21-29.22-12.22-11.86-29.46-11.86-17.24 0-29.1 12.08-11.86 12.07-11.86 29.59 0 17.25 12.09 29.11 12.1 11.86 29.34 11.86ZM314.63-285h330.74v-62.63H314.63V-285Zm-105 102.37h540.74v-527.74H209.63v527.74ZM480-447Z",
58798
- autoAwesome: "M352.39-107.15 307-253.85l-148.85-44.54 148.85-44.78L352.39-490l45.15 147.43L544.63-298.4l-147.09 44.56-45.15 146.69Zm370-290.85-28.52-92.39-94.24-28.24 94.24-28.48 28.52-92.15 28.28 92.15 94.72 28.48-94.72 28.24-28.28 92.39ZM192.15-502.52l-17.76-58.52-58.52-18.72 58.52-17.48 17.76-59.24 18.48 59.24 58.52 17.48-58.52 18.72-18.48 58.52Z",
58799
- modelTraining: "M198.35-197.15q-42.92-50.15-66.37-111.69-23.46-61.53-23.46-131.16 0-152.63 106.08-260.24 106.07-107.61 259.42-110 9.76 0 20.02.5t17.79 1.5l-80.29-80.28 43.92-44.15L641.2-766.93 475.46-600.96l-44.68-44.67 92.24-92.24q-11-2-25.88-3-14.88-1-22.64-1-125.24 1.91-211.42 89.75-86.19 87.84-86.19 212.12 0 50.28 16.88 102.36 16.88 52.07 53.56 91.75l-48.98 48.74Zm242.69-5.44q0-21.71-15.47-44.31-15.48-22.6-33.58-46.2-18.1-23.6-33.46-49.81-15.36-26.22-15.36-55.18 0-56.67 40.2-96.75 40.2-40.07 96.63-40.07 56.67 0 96.75 40.07 40.08 40.08 40.08 96.75 0 28.96-15.36 55.18-15.36 26.21-33.46 49.81t-33.46 46.2q-15.35 22.6-15.35 44.31h-78.16Zm-2 92.87v-51.67h82.16v51.67h-82.16Zm322.61-87.43-47.74-47.74q30.72-36.96 50.08-86.68 19.36-49.71 19.36-108.43 0-63.37-25.59-121.2-25.59-57.82-77.72-102.82l49.98-49.74q55.85 50.48 88.65 120.74 32.81 70.26 32.81 153.02 0 70.11-23.46 131.4-23.45 61.3-66.37 111.45Z",
58800
- science: "M197.37-117.37v-65.26h208v-98.74h-15q-81.48-.96-137.24-57.67-55.76-56.72-55.76-137.96 0-60.28 34.04-109.8 34.05-49.53 89.85-70.72 3.52-40.24 34.04-66.44 30.53-26.19 71.29-25.11l-20.76-58.28 43.63-15.75-14-37.44 71.5-25.68 14.24 37 42.15-14.95 116.82 305.28-45.39 15.96 14 37-69.26 24.91-14.48-37-45.15 17.19-25-67.28q-14.52 15.57-33.82 22.47-19.31 6.9-41.21 6.14-26.62-.52-49.58-15.28-22.95-14.76-36.43-38.48-32.61 16.52-51.92 47.93-19.3 31.41-19.3 68.33 0 54.46 37.96 92.41 37.95 37.96 92.41 37.96h349.63v65.26h-232v98.74h252v65.26H197.37ZM556-572l53-19-80-206-53 19 80 206Zm-130.18-23q21.18 0 35.68-14.32 14.5-14.33 14.5-35.5 0-21.18-14.32-35.68-14.33-14.5-35.5-14.5-21.18 0-35.68 14.32-14.5 14.33-14.5 35.5 0 21.18 14.32 35.68 14.33 14.5 35.5 14.5ZM556-572Zm-130-75Zm2 0Z",
58801
- biotech: "m573.85-153.3-47.74-47.74L634-308.93l-107.89-107.9 47.74-47.74 107.89 107.9 108.13-107.9 47.74 47.74-108.13 107.9 108.13 107.89-47.74 47.74-108.13-107.9-107.89 107.9Zm84.43-374.96L510.3-676l47.98-47.74 100 99 179-179.24L885.02-755 658.28-528.26ZM74.98-285.93v-68.14h364.06v68.14H74.98Zm0-320v-68.14h364.06v68.14H74.98Z",
58802
- // ---- Data & storage ----
58803
- database: "M480.11-114.02q-153.74 0-259.91-48.18Q114.02-210.37 114.02-280v-400q0-68.56 107.18-117.39 107.17-48.83 258.75-48.83 151.34 0 258.8 48.83Q846.22-748.56 846.22-680v400q0 69.63-106.31 117.8-106.3 48.18-259.8 48.18ZM480-608.24q85.84 0 175.94-26.38T772.76-694q-27.72-32-118.1-58.88-90.38-26.88-174.78-26.88-87.4 0-176.28 26T186.48-694q28.24 35 115.96 60.38 87.72 25.38 177.56 25.38Zm-1 213.76q41.76 0 83.43-4.62 41.68-4.62 79.98-13.74 38.3-9.12 73.47-22.36 35.16-13.23 63.88-29.47v-147.11q-29.48 16-64.6 29-35.12 13-73.88 21.88-38.76 8.88-79.52 13.76-40.76 4.88-82.85 4.88-41.6 0-83.33-4.88-41.72-4.88-80.17-13.88t-73.07-21.88q-34.62-12.88-61.86-28.88v147.11q27 16.24 61.24 29.35 34.24 13.12 72.74 22.36 38.5 9.24 80.29 13.86 41.8 4.62 84.25 4.62Zm1 214q47.52.24 98.04-8.14 50.53-8.38 93.03-22.26t72.23-31Q773.04-259 779.76-277v-119.74q-28.48 16.24-63.36 28.98-34.88 12.74-73.42 21.74-38.55 9-79.86 13.5t-84.12 4.5q-42.69 0-84.48-4.62-41.8-4.62-80.18-13.62-38.38-9-72.5-21.74-34.12-12.74-61.36-28.74v120.73q5.72 17.01 34.95 34.39 29.24 17.38 72.12 30.88 42.88 13.5 93.41 21.88 50.52 8.38 99.04 8.38Z",
58804
- dataObject: "M573.59-154.02v-67.89H685.7q21.89 0 37.14-15.13 15.25-15.12 15.25-37.5v-94.5q0-37.24 22.5-66.6 22.5-29.36 57.98-40.44v-7.84q-35.48-10.08-57.98-39.94t-22.5-67.1v-94.74q0-22.14-15.13-37.26-15.12-15.13-37.26-15.13H573.59v-68.13h118.08q47.8 0 81.17 33.46 33.38 33.46 33.38 81.33v94.5q0 22.44 14.97 37.53 14.97 15.1 37.42 15.1h27.61v128.6h-27.61q-22.45 0-37.42 15.13-14.97 15.13-14.97 37.27v94.73q0 47.99-33.46 81.27-33.46 33.28-81.09 33.28H573.59Zm-305.26 0q-47.92 0-81.11-33.28-33.2-33.28-33.2-81.27v-94.73q0-22.14-15.12-37.27-15.13-15.13-37.27-15.13H74.02v-128.6h27.61q22.14 0 37.27-15.1 15.12-15.09 15.12-37.53v-94.5q0-47.87 33.28-81.33t81.03-33.46h118.08v68.13H274.54q-21.89 0-37.26 15.13-15.37 15.12-15.37 37.26v94.74q0 37.24-22.5 67.1-22.5 29.86-57.74 39.94v7.84q35.24 11.08 57.74 40.44t22.5 66.6v94.5q0 22.38 15.25 37.5 15.24 15.13 37.38 15.13h111.87v67.89H268.33Z",
58805
- tableChart: "M777.85-115.02h-595.7q-27.6 0-47.86-20.27-20.27-20.26-20.27-47.86v-594.7q0-27.7 20.27-48.03 20.26-20.34 47.86-20.34h595.7q27.7 0 48.03 20.34 20.34 20.33 20.34 48.03v594.7q0 27.6-20.34 47.86-20.33 20.27-48.03 20.27Zm-595.7-523.5h595.7v-139.33h-595.7v139.33Zm128.81 60H182.15v395.37h128.81v-395.37Zm338.08 0v395.37h128.81v-395.37H649.04Zm-60 0H370.96v395.37h218.08v-395.37Z",
58806
- token: "M480-73.78 114.5-282.89v-405.46L480-886.22l365.5 197.87v405.46L480-73.78ZM365.52-581.35q23.24-22.76 52.86-37.02Q448-632.63 480-632.63q32 0 61.62 14.26 29.62 14.26 52.86 37.02L741.5-668 480-806.89 218.5-668l147.02 86.65Zm81.85 410.57v-160.31q-52.24-14.24-86.12-54.83-33.88-40.6-33.88-94.08 0-10.76 1.38-21.9 1.38-11.14 5.14-21.67l-151.26-89.89v290.79l264.74 151.89ZM480-392.63q36.8 0 62.09-25.28 25.28-25.29 25.28-62.09 0-36.8-25.28-62.09-25.29-25.28-62.09-25.28-36.8 0-62.09 25.28-25.28 25.29-25.28 62.09 0 36.8 25.28 62.09 25.29 25.28 62.09 25.28Zm32.63 221.85 264.74-151.89v-290.79l-151.02 89.89q3.52 10.53 4.9 21.67 1.38 11.14 1.38 21.9 0 53.48-33.88 94.08-33.88 40.59-86.12 54.83v160.31Z",
58807
- storage: "M111.87-146.13v-159.24h736.5v159.24h-736.5Zm68.13-42.3h74.63v-74.87H180v74.87Zm-68.13-466.2v-159.24h736.5v159.24h-736.5Zm68.13-42.3h74.63v-74.87H180v74.87ZM111.87-400.5v-159h736.5v159h-736.5ZM180-442.57h74.63v-74.86H180v74.86Z",
58808
- memory: "M239-399h313v-60H239v60Zm0-130h480v-60H239v60Zm0-130h480v-60H239v60ZM74.02-74.02v-743.83q0-27.7 20.27-48.03 20.26-20.34 47.86-20.34h675.7q27.7 0 48.03 20.34 20.34 20.33 20.34 48.03v515.7q0 27.6-20.34 47.86-20.33 20.27-48.03 20.27H234.02l-160 160Zm134-228.13h609.83v-515.7h-675.7v587.57l65.87-71.87Zm-65.87 0v-515.7 515.7Z",
58809
- // ---- Cloud & network ----
58810
- api: "M480-369.26 369.26-480 480-590.74 590.74-480 480-369.26Zm-85-304.28-86.83-86.83L480-931.96l171.83 171.59L565-673.54l-85-85-85 85ZM199.87-308.17 28.04-480l171.83-171.83L286.46-565l-85 85 85 85-86.59 86.83Zm560.5 0L673.54-395l85-85-85-85 86.83-86.83L931.96-480 760.37-308.17ZM480-28.04 308.17-199.87 395-286.46l85 85 85-85 86.83 86.59L480-28.04Z",
58811
- webhook: "M270.1-115.93q-79.9 0-137.03-57.17-57.14-57.17-57.14-136.83 0-68.5 40.2-120.06 40.2-51.55 105.3-67.55v65.63q-36.67 14-59.77 47.11-23.09 33.11-23.09 74.88 0 54.16 38.4 92.76 38.4 38.59 92.97 38.59 54.78 0 93.14-38.41 38.35-38.42 38.35-93.02v-31.43h247.09q8.36-9 19.25-14.5 10.9-5.5 22.23-5.5 21.76 0 36.6 14.83 14.83 14.84 14.83 36.49 0 20.84-14.83 36.19-14.84 15.35-36.6 15.35-11.33 0-22.23-5.5-10.89-5.5-19.25-14.5H462.18q-14.83 70.2-68.21 116.42-53.39 46.22-123.87 46.22Zm419.9 0q-48.48 0-90.29-22.24-41.82-22.24-68.54-60.4h89.59q14.95 10 32.75 15 17.79 5 36.49 5 54.8 0 93.12-38.4 38.31-38.4 38.31-92.97 0-54.78-38.31-93.14-38.32-38.35-93.12-38.35-19.72 0-36.2 4.85-16.47 4.86-31.53 14.1L494.04-638.8q-20.24-4.24-32.86-18.03-12.61-13.78-12.61-33.19 0-21.44 15.35-36.43 15.35-14.98 36.07-14.98 21.73 0 36.59 14.92 14.85 14.93 14.85 36.55 0 3.96-.5 7.34t-2.5 10.38l100.61 172.17q10.76-2 22.02-3t18.94-1q80.69 0 137.38 56.54t56.69 137.61q0 79.59-56.69 136.79-56.69 57.2-137.38 57.2ZM270.11-258.57q-20.84 0-36.19-15.31-15.35-15.32-15.35-36.12 0-18.58 12.61-32.39 12.62-13.81 31.86-18.81l108.85-183.17q-30.96-29.24-48.46-66.95-17.5-37.71-17.5-78.7 0-80.78 57.22-137.41 57.21-56.64 136.93-56.64 77.72 0 133.85 53.69 56.14 53.69 60.14 130.38h-62.64q-3-51.72-40.89-86.58-37.89-34.85-90.46-34.85-54.56 0-93.04 38.31-38.47 38.32-38.47 93.04 0 42.9 25.09 76.71 25.1 33.8 63.82 47.8L317.43-328.8q2 5.97 3 10.4 1 4.44 1 8.36 0 20.84-14.83 36.16-14.84 15.31-36.49 15.31Z",
58812
- cloudSync: "M167.48-156.41v-62.63h124.26q-64-48.72-100.14-109.22t-36.14-148.5q0-102.98 61.63-191.22T391.54-789.5v70.13q-71 24.57-119.36 91.21-48.35 66.64-48.35 151.4 0 62.95 26.9 114.94 26.9 51.99 87.47 91.28V-390h62.63v233.59H167.48Zm436.59 5.98q-52.14 0-88.82-36.62-36.68-36.61-36.68-88.92 0-49.41 33.59-85.6 33.6-36.19 82.56-39.39 17.95-36.24 52.29-58.36 34.34-22.11 77.07-22.11 54.94 0 94.85 34.85 39.92 34.86 47.68 85.62h2q42.48 1.44 71.84 32.28 29.35 30.83 29.35 71.79 0 44-30.78 75.23-30.79 31.23-74.95 31.23h-260ZM732.18-520q-11.01-50.28-37.33-91.45-26.32-41.18-69.81-78.01V-570h-62.87v-233.59h233.59v62.63H670.5q49 41.96 85.99 101.46Q793.48-580 801.54-520h-69.36ZM604.07-215.93h260q17 0 28.5-11.5t11.5-28.5q0-16.77-11.5-28.39-11.5-11.61-28.5-11.61h-50v-30q0-37.77-26-63.89-26-26.11-64-26.11-37.77 0-63.89 24.5-26.11 24.5-26.11 55.5h-30q-25 0-42.5 17.5t-17.5 42.5q0 25 17.5 42.5t42.5 17.5Zm120-100Z",
58813
- cloudUpload: "M250.48-154.02q-88.47 0-152.23-63.6-63.75-63.6-63.75-151.9 0-79.44 49.74-140.73 49.74-61.29 128.93-73.77 20.96-97.72 95.96-159.46 75-61.74 172.94-61.74 113.89 0 191.58 81.74 77.7 81.74 79.61 196.46v24q72.72.15 122.48 49.89 49.76 49.75 49.76 124.61 0 71.61-51.79 123.05-51.8 51.45-123.19 51.45H516.93q-27.58 0-47.97-20.39t-20.39-47.74v-247l-84.2 84.43-44.91-44.67L480-590.17l160.78 160.78-45.15 44.67-84.2-84.43v247h239.18q43.72 0 75.24-31.49 31.52-31.49 31.52-75.36 0-44.04-31.49-75.45-31.49-31.4-75.36-31.4h-65.15v-86.63q0-87.91-59.7-151.14-59.7-63.23-147.56-63.23-88.39 0-148.44 64.12-60.04 64.12-60.04 152.88h-21.15q-61.11 0-103.48 42.86-42.37 42.85-42.37 105.94 0 61.09 43.33 105 43.34 43.9 104.64 43.9h137.97v68.13H250.48ZM480-445.93Z",
58814
- cloudDownload: "M251-154.02q-90.08 0-153.29-62.9Q34.5-279.83 34.5-369.86q0-80.73 50.86-140.61 50.86-59.88 127.9-72.36 15.87-83.52 82.39-148.14 66.52-64.62 151.76-64.62 25.94 0 45.48 14.58 19.54 14.58 19.54 39.01v293.52L594-530.52l44.91 44.91L481-327.46 323.09-485.61 368-530.52l81.57 82.04v-285.89q-84.33 12.2-132.14 75.98-47.8 63.78-47.8 138.54h-21.15q-60.11 0-102.98 42.36-42.87 42.36-42.87 106.45 0 64.32 44.23 106.61 44.23 42.28 104.14 42.28h500q43.73 0 75.05-31.25 31.32-31.26 31.32-75.6 0-44.04-31.4-75.45-31.4-31.4-75.35-31.4h-64.05v-85.67q0-67.16-32.07-115.3t-83.07-77.35v-73.61q81.96 29 131.18 101.24 49.22 72.24 50.65 160.71v24q72.48-.08 122.36 48.95 49.88 49.02 49.88 124.84 0 71.31-51.6 122.66-51.61 51.36-122.9 51.36H251Zm229-356.33Z",
58815
- dns: "M286.88-724.17q-20.88 0-35.38 14.61-14.5 14.62-14.5 35.5 0 20.89 14.62 35.39t35.5 14.5q20.88 0 35.38-14.62 14.5-14.62 14.5-35.5 0-20.88-14.62-35.38-14.62-14.5-35.5-14.5Zm0 426.19q-20.88 0-35.38 14.62-14.5 14.62-14.5 35.5 0 20.88 14.62 35.38 14.62 14.5 35.5 14.5 20.88 0 35.38-14.62 14.5-14.61 14.5-35.5 0-20.88-14.62-35.38-14.62-14.5-35.5-14.5ZM152.09-852.39h654.82q17.83 0 28.57 10.81 10.74 10.82 10.74 29.05v271.31q0 19.56-10.74 32.79t-28.57 13.23H152.09q-16.86 0-27.47-13.23-10.6-13.23-10.6-32.79v-271.31q0-18.23 10.6-29.05 10.61-10.81 27.47-10.81Zm30.06 68.37v220.69h595.7v-220.69h-595.7ZM152.09-427.2h650.82q16.83 0 30.07 14.02 13.24 14.01 13.24 32.27v266.61q0 21.96-13.24 33.63Q819.74-69 802.91-69H157.09q-17.86 0-30.47-11.67-12.6-11.67-12.6-33.63v-266.61q0-18.26 10.6-32.27 10.61-14.02 27.47-14.02Zm30.06 68.37v221.46h595.7v-221.46h-595.7Zm0-425.19v220.69-220.69Zm0 425.19v221.46-221.46Z",
58816
- router: "M182.15-114.02q-27.6 0-47.86-20.27-20.27-20.26-20.27-47.86v-204q0-27.7 20.27-48.04 20.26-20.33 47.86-20.33h427.39v-163.33h68.37v163.33h99.7q27.7 0 48.03 20.33 20.34 20.34 20.34 48.04v204q0 27.6-20.34 47.86-20.33 20.27-48.03 20.27H182.15Zm0-68.13h595.46v-204H182.15v204Zm102.11-60q17.89 0 29.89-12.11 12-12.1 12-30 0-17.89-12.1-29.89-12.11-12-30-12-17.9 0-29.9 12.1-12 12.11-12 30 0 17.9 12.11 29.9 12.1 12 30 12Zm144.41 0q17.9 0 29.9-12.11 12-12.1 12-30 0-17.89-12.11-29.89t-30-12q-17.89 0-29.89 12.1-12 12.11-12 30 0 17.9 12.1 29.9 12.11 12 30 12Zm144.41 0q17.9 0 29.9-12.11 12-12.1 12-30 0-17.89-12.11-29.89-12.1-12-30-12-17.89 0-29.89 12.1-12 12.11-12 30 0 17.9 12.1 29.9 12.11 12 30 12Zm-9.71-425.81L520.7-710.6q24-24.27 55.14-38.51 31.15-14.24 67.77-14.24 36.61 0 67.76 14.24 31.15 14.24 55.39 38.48l-42.67 42.67q-14.24-13.76-35.41-23.14-21.16-9.38-44.57-9.38t-45.08 9.38q-21.66 9.38-35.66 23.14Zm-86.67-86.67-45.68-45.91q33-33.48 89.08-59.58 56.07-26.1 123.63-26.1 67.55 0 123.63 26.1 56.07 26.1 89.07 59.58l-45.67 45.91q-25.91-28.78-69.12-48.75-43.21-19.97-98.03-19.97-54.7 0-97.81 19.98-43.1 19.98-69.1 48.74ZM182.15-182.15v-204 204Z",
58817
- http: "M36.89-358.57v-242.86h50.63v85h112.37v-85h50.63v242.86h-50.63v-107H87.52v107H36.89Zm313.48 0v-192h-81.2v-50.86h213.26v50.86h-81.19v192h-50.87Zm232.39 0v-192h-81.19v-50.86h213.5v50.86h-81.44v192h-50.87Zm150.72 0v-242.86h139.43q23.72 0 37.08 13.47 13.36 13.48 13.36 36.9v60.69q0 23.77-13.36 36.6-13.36 12.84-37.08 12.84h-88.56v82.36h-50.87Zm50.87-133h88.13v-59h-88.13v59Z",
58818
- link: "M447.37-274.02H280q-85.66 0-145.82-60.16-60.16-60.15-60.16-145.75 0-85.59 60.16-145.94 60.16-60.35 145.82-60.35h167.37v68.37H280.1q-57.66 0-97.8 40.05-40.15 40.05-40.15 97.56 0 57.52 40.15 97.81 40.14 40.28 97.8 40.28h167.27v68.13ZM320.93-448.57v-62.86h318.14v62.86H320.93Zm191.7 174.55v-68.13H679.9q57.66 0 97.8-40.05 40.15-40.05 40.15-97.56 0-57.52-40.15-97.81-40.14-40.28-97.8-40.28H512.63v-68.37H680q85.58 0 145.9 60.33 60.32 60.33 60.32 145.93 0 85.59-60.32 145.76-60.32 60.18-145.9 60.18H512.63Z",
58819
- // ---- Security & auth ----
58820
- key: "M280.06-409.37q-29.02 0-49.85-20.78-20.84-20.77-20.84-49.79t20.78-49.85q20.77-20.84 49.79-20.84t49.85 20.78q20.84 20.77 20.84 49.79t-20.78 49.85q-20.77 20.84-49.79 20.84ZM280-234.5q-102.07 0-173.79-71.73Q34.5-377.96 34.5-480.06q0-102.09 71.71-173.77Q177.93-725.5 280-725.5q73.91 0 129.35 34.96 55.43 34.95 86.45 104.91h355.03L966.7-470 795.87-313.17l-88.24-64.48-87.76 63.76-75.96-60.48h-48.13q-25 60.72-79.89 100.29Q360.99-234.5 280-234.5Zm0-65.5q58.72 0 107.84-39.1 49.12-39.1 62.64-100.53h117.11l53.04 44.28 88-63 82 61.52 82.13-74.45-48.85-49.09H450.48q-11.28-56.96-59.67-98.29Q342.43-660 280-660q-75 0-127.5 52.5T100-480q0 75 52.5 127.5T280-300Z",
58821
- shield: "M479.98-74.78q-142.59-35.67-234.27-164.87-91.69-129.2-91.69-283.27v-242.26L480-887.22l326.22 122.05V-523q0 154.1-91.82 283.32-91.82 129.23-234.42 164.9Zm.02-70.13q113.8-39.2 185.83-143.62 72.02-104.43 72.02-234.4v-194.4L480-814.61l-257.85 97.4v194.17q0 130.08 72.02 234.51Q366.2-184.11 480-144.91Zm0-334.85Z",
58822
- vpnKey: "M280-234.5q-102.07 0-173.79-71.73Q34.5-377.96 34.5-480.06q0-102.09 71.71-173.77Q177.93-725.5 280-725.5q80.63 0 135.45 39.05 54.81 39.06 80.33 100.82H925.5v211.26h-106v137H628v-137H495.73q-25.47 61.76-80.28 100.82Q360.63-234.5 280-234.5Zm0-65.5q72.2 0 117.82-48.2 45.61-48.19 52.61-91.43H697.5v137H754v-137h106v-80.74H450.48q-7.05-43.24-52.66-91.43Q352.2-660 280-660q-75 0-127.5 52.5T100-480q0 75 52.5 127.5T280-300Zm-.06-109.37q30.26 0 50.47-20.28 20.22-20.27 20.22-50.29 0-30.26-20.16-50.47-20.16-20.22-50.41-20.22-30.02 0-50.35 20.16-20.34 20.16-20.34 50.41 0 30.02 20.28 50.35 20.27 20.34 50.29 20.34ZM280-480Z",
58823
- verified: "m343.61-52.35-77.44-132.39-153.87-31.72 17.48-149.63L32.11-480l97.67-113.01-17.48-149.77 153.99-31.48 77.23-133.39 136.56 63 136.55-63 78.18 133.39 152.89 31.48-17.48 149.77L927.89-480l-97.67 113.91 17.48 149.63-152.87 31.72-78.2 132.39L480-115.3 343.61-52.35Zm30.28-89.28 106.08-44.9 109.07 44.9 66.53-99.28 116.04-29.76L759.85-389l80.04-91.02-80.04-93.02 11.76-118.29-116.04-27.76-68.44-99.28-107.09 44.87-109.08-44.87-66.46 99.34-115.87 27.6 11.52 118.39L120.11-480l80.04 91.04-11.52 120.4 115.83 27.59 69.43 99.34ZM480-480Zm-43 134.91L665.91-572l-47.15-42.91-181.76 180-94.76-99.24L294.09-487 437-345.09Z",
58824
- security: "M479.98-73.78q-142.59-35.67-234.27-164.87-91.69-129.2-91.69-283.27v-242.26L480-886.22l326.22 122.05V-522q0 154.1-91.82 283.32-91.82 129.23-234.42 164.9Zm.02-70.13q104.8-35.96 173.82-128.39 69.01-92.44 81.03-207.73H480v-332.58l-257.85 96.4V-522q0 11.76.5 20.5t2.48 21.5H480v336.09Z",
58825
- policy: "M480-73.78q-142.58-35.67-234.28-164.87-91.7-129.2-91.7-283.27v-242.26L480-886.22l326.22 122.05V-522q0 80.87-22.94 158.57-22.93 77.69-76.93 143.69l-144.31-138.3q-18.76 10.52-39.68 17.28Q501.44-334 480-334q-62 0-105.5-43T331-482.5q0-62.5 43.5-106T480-632q62 0 105.5 43.5T629-482q0 20.76-5.7 41.52t-18.34 37.28l85.61 81.85q24-42.52 35.64-94.66 11.64-52.14 11.64-105.94v-196.86L480-812.61l-257.85 93.92v196.65q0 130.08 72.02 234.51Q366.2-183.11 480.2-143.91q27.6-7.76 67.67-31.81 40.06-24.04 62.87-46.32l48.22 48.74q-35.24 32-84.22 60.38Q525.76-84.54 480-73.78Zm.24-322.85q35.56 0 60.85-24.81 25.28-24.82 25.28-61.09t-25.52-61.56q-25.52-25.28-61.09-25.28-35.56 0-60.85 25.31-25.28 25.32-25.28 61.59t25.52 61.06q25.52 24.78 61.09 24.78Zm2.35-82.83Z",
58826
- adminPanelSettings: "M691.24-270q26 0 44.12-19 18.12-19 18.12-44.88 0-25.88-18.24-44T691.36-396q-26.12 0-45 18.12t-18.88 44q0 25.88 18.88 44.88 18.88 19 44.88 19Zm-1.26 125q33.5 0 60.35-13.88t46.15-39.88q-26.24-14-52.24-21.12Q718.23-227 690.4-227q-27.92 0-54.54 7.12-26.62 7.12-51.62 21.12 19 26 45.45 39.88Q656.15-145 689.98-145ZM480-73.78q-140.58-32.67-233.28-158.97-92.7-126.29-92.7-289.29v-243.14L480-887.22l326.22 122.15v277.66q-16.15-8.92-34-15.4-17.85-6.47-34.37-8.67v-206.05L480-812.61l-257.85 95v195.51q0 76.58 24.62 140.22t62.5 111.42q37.88 47.79 83.16 79.07 45.29 31.28 86.61 44.56 6.24 14.87 19.92 32.15 13.67 17.27 24.78 26.22-10.44 5.72-21.87 8.58-11.44 2.86-21.87 6.1ZM692.5-80Q615-80 560-135.5T505-267q0-78.43 54.99-133.72Q614.98-456 693-456q77 0 132.5 55.28Q881-345.43 881-267q0 76-55.5 131.5T692.5-80ZM480-479.72Z",
58827
- // ---- Logic & flow ----
58828
- altRoute: "M445.93-74.02v-194.26q0-46.81-15.04-78.64-15.04-31.84-49-65.56l48.74-48.74q12.04 10.52 26.07 28.81 14.02 18.28 23.3 33.08 16.52-24.8 32.54-43.56 16.03-18.76 31.5-31.76 60.87-47.48 86.13-114.46 25.26-66.98 19.03-167.32l-90 90-47.74-47.74L683.5-886.22l172.04 172.05-47.74 47.74-90-90q4.29 121.45-24.62 194.43-28.9 72.98-103.88 139.8-45.91 41.2-60.57 74.8-14.66 33.6-14.66 79.12v194.26h-68.14ZM248.67-627.87q-4-17.52-6.74-52.14-2.73-34.62-.73-75.42l-88.77 89-47.97-47.74L276.5-886.22l171.8 172.05-47.73 47.74-89.77-90q-2.23 36.56-1.23 64.34 1 27.79 5.23 48.07l-66.13 16.15Zm87.83 171.96q-17.96-18.48-38.93-47.86-20.98-29.38-32.22-62.47l68.08-17.39q8.53 22.85 23.17 44.65 14.64 21.81 27.4 35.33l-47.5 47.74Z",
58829
- callSplit: "M447.93-154.02v-310.31L222.15-690.11v117.26h-68.13v-233.37h233.13v68.37H270.89l245.18 245.18v338.65h-68.14Zm122.81-369.74L523-571.5l165.87-166.35H572.85v-68.37h233.37v233.37h-68.37v-117.02L570.74-523.76Z",
58830
- callMerge: "m272-154.02-47.74-48.74L443.93-422.2v-292.47L326-596.74l-48.74-48.74L478-846.22l200.74 200.74L630-596.74 512.07-714.67v320.58L272-154.02Zm409.24 0-162-162 48.5-48.74 162 162-48.5 48.74Z",
58831
- rule: "m573.85-153.3-47.74-47.74L634-308.93l-107.89-107.9 47.74-47.74 107.89 107.9 108.13-107.9 47.74 47.74-108.13 107.9 108.13 107.89-47.74 47.74-108.13-107.9-107.89 107.9Zm84.43-374.96L510.3-676l47.98-47.74 100 99 179-179.24L885.02-755 658.28-528.26ZM74.98-285.93v-68.14h364.06v68.14H74.98Zm0-320v-68.14h364.06v68.14H74.98Z",
58832
- filterAlt: "M440-154.02q-19.39 0-32.68-13.3-13.3-13.29-13.3-32.68v-237.85L156.46-741.41q-16.39-20.11-4.84-42.46T188-806.22h584q24.83 0 36.38 22.35 11.55 22.35-4.6 42.46L566.22-437.85v239.76q0 18.92-12.7 31.49-12.69 12.58-31.61 12.58H440Zm40-285.57 235.46-298.26H244.78L480-439.59Zm0 0Z",
58833
- repeat: "M278.33-73.78 114.02-238.33l164.31-164.3 46.54 48.3-82.89 82.9h457.78v-160h66.46v226.45H241.98l82.89 82.65-46.54 48.55Zm-84.31-453.11v-226.46h524.24L635.37-836l46.54-48.54L846.22-720 681.91-555.46 635.37-604l82.89-82.89H260.48v160h-66.46Z",
58834
- sort: "M114.02-227.8v-68.13h249.09v68.13H114.02Zm0-218.13v-68.14h490.52v68.14H114.02Zm0-218.14v-67.89h732.2v67.89h-732.2Z",
58835
- // ---- Actions & status ----
58836
- bolt: "M454-315.15 278.39-516.76l48.98-48.5L445.93-446.7v-359.52h68.14v359.52l118.56-118.56 48.98 48.5L480-315.15ZM222.15-154.02q-27.6 0-47.86-20.27-20.27-20.26-20.27-47.86v-143h68.13v143h515.7v-143h68.37v143q0 27.58-20.34 47.86-20.33 20.27-48.03 20.27h-515.7Z",
58837
- build: "M704.04-120.11 442.93-382.98q-22.52 7.76-44.76 12.4-22.24 4.65-46.8 4.65-99.48 0-168.99-69.39-69.51-69.38-69.51-168.11 0-31.48 8.76-62.43 8.75-30.94 23.67-57.4l146.28 146.19 91.92-86-150.2-150.19q25.68-15.16 56.64-24.42 30.95-9.25 61.43-9.25 101.36 0 172.31 71.02t70.95 172.48q0 23.57-4.64 46.18-4.64 22.62-12.4 45.62L839.7-250.76q12.67 12.78 12.67 30.42t-12.67 30.23l-76 70q-12.32 12.44-29.77 12.44t-29.89-12.44Zm31.83-60.82 40-40-278.5-278.5q16-21 24-49.5t8-54.5q0-75-55.5-127t-126.5-53l98.89 100.89q10.2 10.37 9.7 24.69-.5 14.33-10.7 24.52L318.48-514.54q-10.8 9.43-24.9 9.43-14.1 0-23.32-9.43l-94.89-93.89q3 77 54.67 127t121.33 50q25 0 53-8t49-24l282.5 282.5ZM476.24-482.57Z",
58838
- rocketLaunch: "m188.91-556.74 101.7 43.33q17.28-33.85 36.71-67.18 19.42-33.32 40.98-63.89l-76.37-15.28-103.02 103.02Zm156.39 84.11 131.33 131.56q58.44-27.43 107.48-59.59 49.04-32.17 79.8-62.93 80.05-80.28 117.81-163.84Q819.48-711 823.2-819.2q-108.2 3.72-191.77 41.48-83.56 37.76-163.6 117.81-30.76 30.76-62.93 79.8-32.16 49.04-59.6 107.48Zm231.16-99.59q-19.76-19.76-19.76-48.66 0-28.9 19.76-48.66 19.76-19.53 48.54-19.53 28.78 0 48.54 19.53 19.53 19.76 19.53 48.66 0 28.9-19.53 48.66Q653.78-552.7 625-552.7q-28.78 0-48.54-19.52ZM560.5-184.91l103.26-103.02-15.28-76.37q-30.57 21.56-63.89 41.1-33.33 19.55-67.18 36.59l43.09 101.7Zm331.26-702.61q8.52 143.17-35.08 257.09-43.59 113.91-142.11 212.67-1.48 1.24-2.96 2.84-1.48 1.59-2.72 2.83l22 110.48q3.48 17.15-1.74 33.19-5.22 16.03-17.65 28.46L537.87-65.33l-88.83-206.84-172.87-172.87-206.84-88.83L244.2-707.5q12.43-12.43 28.34-17.65 15.92-5.22 33.07-1.74l110.48 22q1.24-1.24 2.71-2.1 1.48-.86 2.96-2.1 98.76-99 212.79-142.98 114.04-43.97 257.21-35.45ZM141.59-324.04q36.91-36.92 89.56-37.3 52.65-.38 89.33 36.3 36.43 36.43 36.05 89.2-.38 52.77-37.05 89.45-27.68 27.67-85.64 45.63-57.97 17.96-168.64 32 14.04-110.67 31.5-169.26 17.45-58.59 44.89-86.02Zm47.98 48.74q-13.77 14.76-23.93 44.84-10.16 30.09-18.16 78.66 48.56-8 78.65-18.41 30.09-10.4 44.61-24.16 18.28-16.04 18.54-40.35.26-24.3-16.78-42.58-18.28-17.05-42.59-16.55-24.3.5-40.34 18.55Z",
58839
- send: "M114.5-154.26v-651.48L887.17-480 114.5-154.26ZM180-255.63 717.3-480 180-707.37v162.74L424.63-480 180-417.37v161.74Zm0 0v-451.74 451.74Z",
58840
- sync: "M167.48-156.41v-62.63H291.5l-12.61-10.33q-64.24-52.2-93.84-112.55-29.59-60.36-29.59-135.08 0-108.87 65.37-195.04 65.37-86.18 170.71-117.46v70.13q-75.24 27.57-121.47 94.59-46.24 67.02-46.24 147.78 0 62.04 23.14 107.71 23.14 45.66 62.66 79.18l28.57 19.57V-390h62.63v233.59H167.48Zm401.98-13.09v-71.13q76.24-27.57 121.47-94.59 45.24-67.02 45.24-147.78 0-47.04-23.26-95.71-23.26-48.66-60.3-86.18l-27.57-24.57V-570h-62.87v-233.59h233.59v62.63H670.5l12.85 12.33q60.48 56.48 90.83 121.2 30.36 64.71 30.36 124.43 0 108.87-64.87 195.54-64.87 86.68-170.21 117.96Z",
58841
- refresh: "M479.28-154.02q-135.39 0-230.68-95.3-95.3-95.29-95.3-230.62 0-135.33 95.3-230.81 95.29-95.47 230.68-95.47 86.44 0 151.73 35.03 65.29 35.04 113.06 96.36v-131.39h62.86v262.85H543.85V-606h167.04q-38.24-59.04-96.28-95.45-58.04-36.4-135.33-36.4-108.1 0-182.97 74.86-74.88 74.86-74.88 182.95 0 108.08 74.88 182.99 74.87 74.9 182.98 74.9q81.8 0 150.2-46.9 68.4-46.91 95.64-123.95h70.37q-29.24 107.39-116.97 173.18-87.74 65.8-199.25 65.8Z",
58842
- // ---- Communication ----
58843
- notifications: "M154.02-194.02v-68.13h77.85v-298.02q0-86.08 50.34-154.77 50.33-68.69 133.72-86.41v-20.56q0-26.8 18.69-45.55 18.69-18.76 45.38-18.76t45.38 18.76q18.69 18.75 18.69 45.55v20.56q83.39 17.48 133.84 86.25 50.46 68.77 50.46 154.93v298.02h77.85v68.13h-652.2ZM480-501.04Zm.12 429.17q-33.83 0-57.93-24.13t-24.1-58.02h164.06q0 33.95-24.15 58.05-24.15 24.1-57.88 24.1ZM300-262.15h360v-298.02q0-74.76-52.5-127.38Q555-740.17 480-740.17t-127.5 52.62Q300-634.93 300-560.17v298.02Z",
58844
- email: "M154.02-194.02v-62.63h625.96v62.63H154.02Zm0-218.13v-68.14h625.96v68.14H154.02Zm0-218.14v-67.89h732.2v67.89h-732.2Z",
58845
- campaign: "M732.63-447.37v-65.26H891v65.26H732.63Zm55.74 292.87-127.7-95.02 39.35-52.31 127.46 94.79-39.11 52.54Zm-85.35-504.67-39.35-52.31 124.7-94.02 39.11 52.3-124.46 94.03ZM199-194.02v-160h-64.5q-27.38-.96-46.44-20.87T69-422.15v-115.7q0-28.2 20.08-48.28 20.09-20.09 48.29-20.09H313.3l207.9-124.54v501.52L313.3-354.02h-44.97v160H199Zm253.83-155.57v-260.82l-121.85 72.56H137.37v115.7h193.61l121.85 72.56Zm108.37 9.57v-280.2q29.63 24.72 47.56 61.01 17.94 36.3 17.94 79.21t-17.89 79.18q-17.89 36.27-47.61 60.8ZM295.22-480Z",
58846
- // ---- Scheduling ----
58847
- event: "M596.82-220Q556-220 528-248.18q-28-28.19-28-69Q500-358 528.18-386q28.19-28 69-28Q638-414 666-385.82q28 28.19 28 69Q694-276 665.82-248q-28.19 28-69 28ZM182.15-74.02q-27.6 0-47.86-20.27-20.27-20.26-20.27-47.86v-615.7q0-27.7 20.27-48.03 20.26-20.34 47.86-20.34H245v-60h69.07v60h331.86v-60H715v60h62.85q27.7 0 48.03 20.34 20.34 20.33 20.34 48.03v615.7q0 27.6-20.34 47.86-20.33 20.27-48.03 20.27h-595.7Zm0-68.13h595.7V-570h-595.7v427.85Zm0-487.85h595.7v-127.85h-595.7V-630Zm0 0v-127.85V-630Z",
58848
- schedule: "m624.37-286.04 49.06-48.59-157.8-158.86v-198.55h-65.26v224.89l174 181.11ZM480.03-74.02q-83.46 0-157.51-31.95-74.05-31.94-129.32-87.21-55.28-55.26-87.23-129.3-31.95-74.03-31.95-157.49 0-83.46 32-157.54 32-74.07 87.2-129.27 55.2-55.2 129.25-87.32 74.05-32.12 157.53-32.12t157.53 32.12q74.05 32.12 129.25 87.32 55.2 55.2 87.32 129.25 32.12 74.05 32.12 157.53T854.1-322.47q-32.12 74.05-87.32 129.25-55.2 55.2-129.24 87.2t-157.51 32Zm.12 337.85q139.16 0 238.57-99.17 99.4-99.16 99.4-238.56t-99.37-238.69Q619.11-817.85 480-817.85q-139.28 0-238.57 99.26-99.28 99.25-99.28 238.59 0 139.52 99.28 238.68 99.28 99.17 238.45 99.17Z",
58849
- timer: "M354.5-860v-65.5h251v65.5h-251Zm92.87 452.02h65.26v-230.48h-65.26v230.48ZM479.94-70q-75.49 0-142.05-28.94-66.56-28.94-116.36-78.7-49.79-49.75-78.65-116.29-28.86-66.54-28.86-142.01 0-75.47 28.88-142.04 28.88-66.56 78.68-116.4 49.79-49.84 116.35-78.83Q404.5-802.2 480-802.2q67.48 0 127.08 22.5 59.59 22.5 105.83 62.74l53.16-53.15 46.3 46.07-53.15 53.15q36.24 40.48 61.62 97.96 25.38 57.47 25.38 136.95 0 75.52-28.96 142.11-28.95 66.59-78.78 116.31T622.04-98.92Q555.43-70 479.94-70Zm.02-68.37q124.32 0 211.11-86.62 86.78-86.62 86.78-210.95 0-124.32-86.74-211.1-86.75-86.79-211.07-86.79t-211.11 86.75q-86.78 86.74-86.78 211.06 0 124.32 86.74 210.99 86.75 86.66 211.07 86.66Zm.04-296.61Z",
58850
- // ---- General tools ----
58851
- terminal: "M795.76-114.3 531.33-378.5q-29.76 25.26-69.6 39.41-39.84 14.16-85.16 14.16-109.84 0-185.96-76.2Q114.5-477.33 114.5-585t76.2-183.87q76.19-76.2 184.37-76.2 108.17 0 183.86 76.2 75.7 76.2 75.7 184.02 0 43.33-13.64 82.97t-40.92 74.4L845.5-164.04l-49.74 49.74ZM375.65-393.07q79.73 0 135.29-56.24Q566.5-505.55 566.5-585q0-79.45-55.6-135.69-55.59-56.24-135.25-56.24-80.49 0-136.76 56.24-56.26 56.24-56.26 135.69 0 79.45 56.23 135.69 56.23 56.24 136.79 56.24Z",
58852
- settings: "M480.12-330q70.88 0 120.38-49.62t49.5-120.5q0-70.88-49.62-120.38T479.88-670Q409-670 359.5-620.38T310-499.88q0 70.88 49.62 120.38t120.5 49.5Zm-.3-61.83q-45.15 0-76.57-31.6-31.42-31.6-31.42-76.75t31.6-76.57q31.6-31.42 76.75-31.42t76.57 31.6q31.42 31.6 31.42 76.75t-31.6 76.57q-31.6 31.42-76.75 31.42ZM480-194.5q-147.91 0-267.35-84.67Q93.22-363.85 34.5-500q58.72-136.15 178.15-220.83Q332.09-805.5 480-805.5q147.91 0 267.35 84.67Q866.78-636.15 925.5-500q-58.72 136.15-178.15 220.83Q627.91-194.5 480-194.5Zm0-305.5Zm-.15 240q121 0 222.34-65.5Q803.52-391 856.52-500q-53-109-154.19-174.5Q601.15-740 480.15-740t-222.34 65.5Q156.48-609 102.48-500q54 109 155.19 174.5Q358.85-260 479.85-260Z",
58853
- tune: "M425.57-114.5V-345h65.5v83h353v65.5h-353v82h-65.5Zm-309.64-82V-262h252.5v65.5h-252.5Zm187-168.87v-82h-187v-65.26h187v-84h65.5v231.26h-65.5Zm122.64-82v-65.26h418.5v65.26h-418.5Zm166-167.63v-230.5h65.5v82h187v65.5h-187v83h-65.5Zm-475.64-83v-65.5h418.5v65.5h-418.5Z",
58854
- search: "M795.76-114.3 531.33-378.5q-29.76 25.26-69.6 39.41-39.84 14.16-85.16 14.16-109.84 0-185.96-76.2Q114.5-477.33 114.5-585t76.2-183.87q76.19-76.2 184.37-76.2 108.17 0 183.86 76.2 75.7 76.2 75.7 184.02 0 43.33-13.64 82.97t-40.92 74.4L845.5-164.04l-49.74 49.74ZM375.65-393.07q79.73 0 135.29-56.24Q566.5-505.55 566.5-585q0-79.45-55.6-135.69-55.59-56.24-135.25-56.24-80.49 0-136.76 56.24-56.26 56.24-56.26 135.69 0 79.45 56.23 135.69 56.23 56.24 136.79 56.24Z",
58855
- save: "M846.22-685.63v503.48q0 27.6-20.34 47.86-20.33 20.27-48.03 20.27h-595.7q-27.6 0-47.86-20.27-20.27-20.26-20.27-47.86v-595.7q0-27.7 20.27-48.03 20.26-20.34 47.86-20.34h503.48l160.59 160.59Zm-68.37 30.59L655.04-777.85H182.15v595.7h595.7v-472.89ZM479.76-247.15q43.24 0 73.74-30.27 30.5-30.26 30.5-73.5 0-43.23-30.26-73.73-30.27-30.5-73.5-30.5-43.24 0-73.74 30.26-30.5 30.27-30.5 73.5 0 43.24 30.26 73.74 30.27 30.5 73.5 30.5Zm-244.61-334.7h358v-143h-358v143Zm-53-73.19v472.89-595.7 122.81Z",
58856
- upload: "M445.93-315.15v-359.52l-118.56 118.8-48.98-48.74L480-806.22l201.61 201.61-48.98 48.74-118.56-118.8v359.52h-68.14ZM222.15-154.02q-27.6 0-47.86-20.27-20.27-20.26-20.27-47.86v-143h68.13v143h515.7v-143h68.37v143q0 27.58-20.34 47.86-20.33 20.27-48.03 20.27h-515.7Z",
58857
- download: "M480-315.15 278.39-516.76l48.98-48.5L445.93-446.7v-359.52h68.14v359.52l118.56-118.56 48.98 48.5L480-315.15ZM222.15-154.02q-27.6 0-47.86-20.27-20.27-20.26-20.27-47.86v-143h68.13v143h515.7v-143h68.37v143q0 27.58-20.34 47.86-20.33 20.27-48.03 20.27h-515.7Z",
58858
- edit: "M181.91-182.15h44.24l459.81-458.81-43.76-44-460.29 459.05v43.76Zm-67.89 68.13V-253.5l574.52-573.76q8.24-8.48 19.81-13.22 11.56-4.74 24.11-4.74 11.47 0 22.95 4.74 11.48 4.74 21.2 12.98l51.89 51.17q9.24 9.72 13.48 21.32t4.24 23.31q0 11.72-4.74 23.7-4.74 11.98-12.98 20.46L253.74-114.02H114.02ZM775.17-732.7l-41.24-41.47 41.24 41.47ZM664.2-663.2l-22-21.76 43.76 44-21.76-22.24Z",
58859
- delete: "M259.09-114.02q-28.45 0-48.41-19.89-19.96-19.89-19.96-48.24v-565.94h-45.07v-68.13h198.28v-34.3h271.9v34.3h198.52v68.13h-45.07v565.94q0 27.6-20.33 47.86-20.34 20.27-48.04 20.27H259.09Zm441.82-634.07H259.09v565.94h441.82v-565.94ZM363.89-266.24h64.07v-399h-64.07v399Zm168.15 0h64.31v-399h-64.31v399ZM259.09-748.09v565.94-565.94Z",
58860
- // ---- Status ----
58861
- checkCircle: "m420.52-294.41 285.63-285.63-50.78-50.03-234.85 234.85-117.85-117.85-49.78 50.03 167.63 168.63Zm59.51 220.39q-83.46 0-157.54-31.88-74.07-31.88-129.39-87.2-55.32-55.32-87.2-129.36-31.88-74.04-31.88-157.51 0-84.46 31.88-158.54 31.88-74.07 87.16-128.9 55.28-54.84 129.34-86.82 74.06-31.99 157.55-31.99 84.48 0 158.59 31.97 74.1 31.97 128.91 86.77 54.82 54.8 86.79 128.88 31.98 74.08 31.98 158.6 0 83.5-31.99 157.57-31.98 74.07-86.82 129.36-54.83 55.29-128.87 87.17-74.04 31.88-158.51 31.88Zm-.03-68.13q141.04 0 239.45-98.75 98.4-98.76 98.4-239.1 0-141.04-98.4-239.45-98.41-98.4-239.57-98.4-140.16 0-238.95 98.4-98.78 98.41-98.78 239.57 0 140.16 98.75 238.95 98.76 98.78 239.1 98.78ZM480-480Z",
58862
- error: "M479.93-274.02q16.46 0 27.4-10.74 10.93-10.75 10.93-27.21t-10.86-27.52q-10.86-11.05-27.33-11.05-16.46 0-27.4 11.03-10.93 11.04-10.93 27.5 0 16.47 10.86 27.23 10.86 10.76 27.33 10.76Zm-31-158.74h68.14v-257.07h-68.14v257.07ZM480.3-74.02q-84.2 0-158.04-31.88-73.84-31.88-129.16-87.2-55.32-55.32-87.2-129.2-31.88-73.88-31.88-158.17 0-84.28 31.88-158.2 31.88-73.91 87.16-128.74 55.28-54.84 129.18-86.82 73.9-31.99 158.21-31.99 84.3 0 158.25 31.97 73.94 31.97 128.75 86.77 54.82 54.8 86.79 128.88 31.98 74.08 31.98 158.33 0 84.24-31.99 158.07-31.98 73.84-86.82 128.95-54.83 55.1-128.87 87.17Q564.5-74.02 480.3-74.02Zm.2-68.13q140.54 0 238.95-98.75 98.4-98.76 98.4-239.6 0-140.54-98.22-238.95-98.21-98.4-239.75-98.4-140.16 0-238.95 98.22-98.78 98.21-98.78 239.75 0 140.16 98.75 238.95 98.76 98.78 239.6 98.78ZM480-480Z",
58863
- warning: "M34.74-116.89 480-886.22l445.26 769.33H34.74Zm113.8-65.74h662.92L480-754.98 148.54-182.63Zm335.64-54.85q12.96 0 21.87-9.08 8.91-9.09 8.91-22.05t-9.09-21.75q-9.08-8.79-22.05-8.79-12.96 0-21.87 8.96-8.91 8.97-8.91 21.93 0 12.96 9.09 21.87 9.08 8.91 22.05 8.91ZM454-348h60v-222.09h-60V-348Zm26-120.8Z",
58864
- info: "M450.37-277.37h65.26V-520h-65.26v242.63ZM480-590.41q15.55 0 26.07-10.23 10.52-10.24 10.52-25.36 0-16.24-10.52-26.92-10.51-10.67-26.05-10.67-15.81 0-26.21 10.67-10.4 10.68-10.4 26.8 0 15.27 10.52 25.49 10.52 10.22 26.07 10.22Zm.3 516.39q-84.2 0-158.04-31.88-73.84-31.88-129.16-87.2-55.32-55.32-87.2-129.2-31.88-73.88-31.88-158.17 0-84.28 31.88-158.2 31.88-73.91 87.16-128.74 55.28-54.84 129.18-86.82 73.9-31.99 158.21-31.99 84.3 0 158.25 31.97 73.94 31.97 128.75 86.77 54.82 54.8 86.79 128.88 31.98 74.08 31.98 158.33 0 84.24-31.99 158.07-31.98 73.84-86.82 128.95-54.83 55.1-128.87 87.17Q564.5-74.02 480.3-74.02Zm.2-68.13q140.54 0 238.95-98.75 98.4-98.76 98.4-239.6 0-140.54-98.22-238.95-98.21-98.4-239.75-98.4-140.16 0-238.95 98.22-98.78 98.21-98.78 239.75 0 140.16 98.75 238.95 98.76 98.78 239.6 98.78ZM480-480Z",
58865
- help: "M483.52-247q16.48 0 28.2-11.72 11.71-11.71 11.71-28.35 0-16.63-11.71-28.19-11.72-11.57-28.32-11.57t-28.19 11.55q-11.6 11.54-11.6 28.33 0 16.52 11.63 28.23Q466.87-247 483.52-247Zm-36.91-146h62.59q0-25.52 6.5-47.02 6.5-21.5 39.78-49.02 30.52-25.05 43.4-50.34 12.88-25.29 12.88-55.69 0-53.69-34.09-86.05t-91.19-32.36q-49.72 0-88.06 25.46-38.33 25.45-55.81 69.45l56.82 21.4q11.24-28.24 32.88-43.62 21.64-15.38 50.21-15.38 31.73 0 51.83 17.58 20.11 17.58 20.11 45.47 0 21.12-12.64 40.38-12.65 19.26-36.45 39.07-29.52 25.52-44.14 51.75-14.62 26.24-14.62 68.92Zm33.42 318.98q-83.46 0-157.54-31.88-74.07-31.88-129.39-87.2-55.32-55.32-87.2-129.36-31.88-74.04-31.88-157.51 0-84.46 31.88-158.54 31.88-74.07 87.16-128.9 55.28-54.84 129.34-86.82 74.06-31.99 157.55-31.99 84.48 0 158.59 31.97 74.1 31.97 128.91 86.77 54.82 54.8 86.79 128.88 31.98 74.08 31.98 158.6 0 83.5-31.99 157.57-31.98 74.07-86.82 129.36-54.83 55.29-128.87 87.17-74.04 31.88-158.51 31.88Zm-.03-68.13q141.04 0 239.45-98.75 98.4-98.76 98.4-239.1 0-141.04-98.4-239.45-98.41-98.4-239.57-98.4-140.16 0-238.95 98.4-98.78 98.41-98.78 239.57 0 140.16 98.75 238.95 98.76 98.78 239.1 98.78ZM480-480Z",
58866
- visibility: "M480.12-330q70.88 0 120.38-49.62t49.5-120.5q0-70.88-49.62-120.38T479.88-670Q409-670 359.5-620.38T310-499.88q0 70.88 49.62 120.38t120.5 49.5Zm-.3-61.83q-45.15 0-76.57-31.6-31.42-31.6-31.42-76.75t31.6-76.57q31.6-31.42 76.75-31.42t76.57 31.6q31.42 31.6 31.42 76.75t-31.6 76.57q-31.6 31.42-76.75 31.42ZM480-194.5q-147.91 0-267.35-84.67Q93.22-363.85 34.5-500q58.72-136.15 178.15-220.83Q332.09-805.5 480-805.5q147.91 0 267.35 84.67Q866.78-636.15 925.5-500q-58.72 136.15-178.15 220.83Q627.91-194.5 480-194.5Zm0-305.5Zm-.15 240q121 0 222.34-65.5Q803.52-391 856.52-500q-53-109-154.19-174.5Q601.15-740 480.15-740t-222.34 65.5Q156.48-609 102.48-500q54 109 155.19 174.5Q358.85-260 479.85-260Z",
58867
- // ---- Files ----
58868
- folder: "M142.15-154.02q-27.6 0-47.86-20.77-20.27-20.76-20.27-47.36v-515.7q0-26.7 20.27-47.53 20.26-20.84 47.86-20.84h276.22L481-743.35h336.85q26.7 0 47.53 20.77 20.84 20.76 20.84 47.36v453.07q0 26.6-20.84 47.36-20.83 20.77-47.53 20.77h-675.7Zm0-68.13h675.7v-453.07h-365.2l-62.63-62.63H142.15v515.7Zm0 0v-515.7 515.7Z",
58869
- description: "M319-249.52h322v-62.63H319v62.63Zm0-170h322v-62.63H319v62.63Zm-96.85 345.5q-27.6 0-47.86-20.27-20.27-20.26-20.27-47.86v-675.7q0-27.7 20.27-48.03 20.26-20.34 47.86-20.34h361.48l222.59 222.59v521.48q0 27.6-20.34 47.86-20.33 20.27-48.03 20.27h-515.7Zm326.7-557.83v-186h-326.7v675.7h515.7v-489.7h-189Zm-326.7-186v186-186 675.7-675.7Z",
58870
- attachFile: "M737.33-324.39q0 105.46-74.69 177.91-74.69 72.46-180.26 72.46-105.58 0-180.35-72.46-74.77-72.45-74.77-177.85v-383.82q0-74.63 53.41-126.35 53.42-51.72 127.75-51.72 74.34 0 127.69 51.72 53.35 51.72 53.35 126.35v363.82q0 43.66-31.56 74.62-31.55 30.97-75.81 30.97-44.26 0-75.61-30.64t-31.35-74.95v-370h66.46v370q0 16.05 11.97 27.59t29.2 11.54q17.24 0 28.74-11.5 11.5-11.51 11.5-27.63v-363.58q.24-47.35-33.38-79.6-33.62-32.25-81.35-32.25-47.74 0-81.14 32.19-33.41 32.19-33.41 79.42v383.82q.24 77.83 55.57 130.96 55.33 53.13 133.62 53.13 77.86 0 133.03-53.16 55.17-53.17 54.93-130.93v-396.93h66.46v396.87Z"
58871
- };
58872
- function darkenHex(hex, amount) {
58873
- const r = parseInt(hex.slice(1, 3), 16);
58874
- const g = parseInt(hex.slice(3, 5), 16);
58875
- const b = parseInt(hex.slice(5, 7), 16);
58876
- const nr = Math.round(r * (1 - amount));
58877
- const ng = Math.round(g * (1 - amount));
58878
- const nb = Math.round(b * (1 - amount));
58879
- return `#${nr.toString(16).padStart(2, "0")}${ng.toString(16).padStart(2, "0")}${nb.toString(16).padStart(2, "0")}`;
58880
- }
59325
+ init_theme();
58881
59326
 
58882
59327
  // src/diagram/layout.ts
58883
59328
  init_constants();
@@ -60512,6 +60957,7 @@ function maxPortLabelExtent(ports) {
60512
60957
  }
60513
60958
 
60514
60959
  // src/diagram/renderer.ts
60960
+ init_theme();
60515
60961
  function escapeXml(str2) {
60516
60962
  return str2.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;");
60517
60963
  }
@@ -95748,7 +96194,7 @@ function displayInstalledPackage(pkg) {
95748
96194
  }
95749
96195
 
95750
96196
  // src/cli/index.ts
95751
- var version2 = true ? "0.9.1" : "0.0.0-dev";
96197
+ var version2 = true ? "0.9.3" : "0.0.0-dev";
95752
96198
  var program2 = new Command();
95753
96199
  program2.name("flow-weaver").description("Flow Weaver Annotations - Compile and validate workflow files").version(version2, "-v, --version", "Output the current version");
95754
96200
  program2.configureOutput({