@knpkv/alchemy-console 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +78 -23
  2. package/dist/api.d.ts +16 -2
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/client/assets/empty-state-creature-CWMFWDpa.svg +60 -0
  5. package/dist/client/assets/index-C5EGKyzJ.js +58 -0
  6. package/dist/client/assets/{index-CrA-MUdX.css → index-CHwWf6VU.css} +1 -1
  7. package/dist/client/index.html +2 -2
  8. package/dist/index.d.ts +1 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +1 -1
  11. package/dist/index.js.map +1 -1
  12. package/dist/internal/resource-identity.d.ts +7 -0
  13. package/dist/internal/resource-identity.d.ts.map +1 -0
  14. package/dist/internal/resource-identity.js +180 -0
  15. package/dist/internal/resource-identity.js.map +1 -0
  16. package/dist/local-state.d.ts.map +1 -1
  17. package/dist/local-state.js +11 -1
  18. package/dist/local-state.js.map +1 -1
  19. package/dist/outputs.d.ts +5 -0
  20. package/dist/outputs.d.ts.map +1 -0
  21. package/dist/outputs.js +15 -0
  22. package/dist/outputs.js.map +1 -0
  23. package/dist/presentation/ResourceDetailView.d.ts +13 -0
  24. package/dist/presentation/ResourceDetailView.d.ts.map +1 -0
  25. package/dist/presentation/ResourceDetailView.js +12 -0
  26. package/dist/presentation/ResourceDetailView.js.map +1 -0
  27. package/dist/presentation/ResourceTree.d.ts +18 -0
  28. package/dist/presentation/ResourceTree.d.ts.map +1 -0
  29. package/dist/presentation/ResourceTree.js +36 -0
  30. package/dist/presentation/ResourceTree.js.map +1 -0
  31. package/dist/presentation/StackDetailView.d.ts +15 -0
  32. package/dist/presentation/StackDetailView.d.ts.map +1 -0
  33. package/dist/presentation/StackDetailView.js +36 -0
  34. package/dist/presentation/StackDetailView.js.map +1 -0
  35. package/dist/presentation/StackListView.d.ts +4 -2
  36. package/dist/presentation/StackListView.d.ts.map +1 -1
  37. package/dist/presentation/StackListView.js +4 -4
  38. package/dist/presentation/StackListView.js.map +1 -1
  39. package/dist/presentation/detail-model.d.ts +40 -0
  40. package/dist/presentation/detail-model.d.ts.map +1 -0
  41. package/dist/presentation/detail-model.js +2 -0
  42. package/dist/presentation/detail-model.js.map +1 -0
  43. package/dist/presentation/detail-parts.d.ts +28 -0
  44. package/dist/presentation/detail-parts.d.ts.map +1 -0
  45. package/dist/presentation/detail-parts.js +42 -0
  46. package/dist/presentation/detail-parts.js.map +1 -0
  47. package/dist/presentation/resource-graph.d.ts +4 -0
  48. package/dist/presentation/resource-graph.d.ts.map +1 -0
  49. package/dist/presentation/resource-graph.js +25 -0
  50. package/dist/presentation/resource-graph.js.map +1 -0
  51. package/dist/s3-live.d.ts +1 -0
  52. package/dist/s3-live.d.ts.map +1 -1
  53. package/dist/s3-live.js +20 -14
  54. package/dist/s3-live.js.map +1 -1
  55. package/dist/s3-reader.d.ts +2 -1
  56. package/dist/s3-reader.d.ts.map +1 -1
  57. package/dist/s3-reader.js.map +1 -1
  58. package/dist/s3-state.d.ts.map +1 -1
  59. package/dist/s3-state.js +13 -1
  60. package/dist/s3-state.js.map +1 -1
  61. package/dist/schema.d.ts +22 -3
  62. package/dist/schema.d.ts.map +1 -1
  63. package/dist/schema.js +16 -5
  64. package/dist/schema.js.map +1 -1
  65. package/dist/server/Catalog.d.ts.map +1 -1
  66. package/dist/server/Catalog.js +15 -2
  67. package/dist/server/Catalog.js.map +1 -1
  68. package/dist/state.d.ts +2 -0
  69. package/dist/state.d.ts.map +1 -1
  70. package/dist/state.js +8 -8
  71. package/dist/state.js.map +1 -1
  72. package/dist/views/empty-state-creature.svg +60 -0
  73. package/dist/views/index.js +705 -105
  74. package/dist/views/style.css +1 -1
  75. package/dist/views.d.ts +5 -0
  76. package/dist/views.d.ts.map +1 -1
  77. package/dist/views.js +2 -1
  78. package/dist/views.js.map +1 -1
  79. package/package.json +3 -3
  80. package/dist/client/assets/index-CNQi3IQH.js +0 -58
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C,GAAG,EAAE,MAAM,CAAC,cAAc;IAC1B,SAAS,EAAE,MAAM,CAAC,cAAc;IAChC,YAAY,EAAE,MAAM,CAAC,cAAc;IACnC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAC5G,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;CACzC,CAAC,CAAA;AAGF,4GAA4G;AAC5G,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,GAAG,EAAE,MAAM,CAAC,cAAc;IAC1B,KAAK,EAAE,MAAM,CAAC,cAAc;IAC5B,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC;CACzC,CAAC,CAAA;AAGF,wGAAwG;AACxG,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,WAAW,EAAkB,CAAC,gBAAgB,EAAE;IACzF,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,eAAe,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;CACrH,CAAC;CAAG"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,uFAAuF;AACvF,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CACpD,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EACxB,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,EAC9B,MAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,CACxC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C,GAAG,EAAE,WAAW;IAChB,SAAS,EAAE,MAAM,CAAC,cAAc;IAChC,YAAY,EAAE,MAAM,CAAC,cAAc;IACnC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAC5G,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;CACvF,CAAC,CAAA;AAGF,yGAAyG;AACzG,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;IACzC,GAAG,EAAE,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACzD,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC,IAAI;CACzB,CAAC,CAAA;AAGF,qHAAqH;AACrH,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IACtC,GAAG,EAAE,MAAM,CAAC,cAAc;IAC1B,KAAK,EAAE,MAAM,CAAC,cAAc;IAC5B,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1E,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;CACpF,CAAC,CAAA;AAGF,wGAAwG;AACxG,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,WAAW,EAAkB,CAAC,gBAAgB,EAAE;IACzF,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,eAAe,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;CACrH,CAAC;CAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"Catalog.d.ts","sourceRoot":"","sources":["../../src/server/Catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAA0B,MAAM,QAAQ,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAChF,OAAO,EAAwB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAEpE,8GAA8G;AAC9G,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAA;CAC3D;;uBAGoB,MAAM,CAAC,MAAM,CAAC;QAC/B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,CAAA;QAC/C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;KAC/C,EAAE,gBAAgB,CAAC;;AAJtB,qBAAa,WAAY,SAAQ,gBAKS;CAAG;;mBAG5B,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,gBAAgB,CAAC;kBAC3C,CAAC,EAAE,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,GAAG,gBAAgB,CAAC;;AAF7F,qBAAa,OAAQ,SAAQ,YAGS;IACpC,MAAM,CAAC,QAAQ,CAAC,KAAK,2DAqEpB;CACF"}
1
+ {"version":3,"file":"Catalog.d.ts","sourceRoot":"","sources":["../../src/server/Catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAA0B,MAAM,QAAQ,CAAA;AAC/E,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAChF,OAAO,EAA4C,KAAK,UAAU,EAAE,MAAM,cAAc,CAAA;AAExF,8GAA8G;AAC9G,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAA;CAC3D;;uBAGoB,MAAM,CAAC,MAAM,CAAC;QAC/B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,eAAe,CAAC,CAAA;QAC/C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;KAC/C,EAAE,gBAAgB,CAAC;;AAJtB,qBAAa,WAAY,SAAQ,gBAKS;CAAG;;mBAG5B,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,gBAAgB,CAAC;kBAC3C,CAAC,EAAE,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,aAAa,GAAG,gBAAgB,CAAC;;AAF7F,qBAAa,OAAQ,SAAQ,YAGS;IACpC,MAAM,CAAC,QAAQ,CAAC,KAAK,2DA+EpB;CACF"}
@@ -53,6 +53,12 @@ export class Catalog extends Context.Service()("@knpkv/alchemy-console/Catalog")
53
53
  return yield* new CatalogReadError({ reason: "invalid-source" });
54
54
  if (state.resources.length > 50_000)
55
55
  return yield* new CatalogReadError({ reason: "limit" });
56
+ if (state.outputs !== null && state.outputs.length > 1000) {
57
+ return yield* new CatalogReadError({ reason: "limit" });
58
+ }
59
+ const edgeCount = state.resources.reduce((count, resource) => count + (resource.downstream?.length ?? 0), 0);
60
+ if (edgeCount > 100_000)
61
+ return yield* new CatalogReadError({ reason: "limit" });
56
62
  return {
57
63
  id,
58
64
  state: {
@@ -61,7 +67,12 @@ export class Catalog extends Context.Service()("@knpkv/alchemy-console/Catalog")
61
67
  backend: state.backend,
62
68
  alchemyVersion: state.alchemyVersion,
63
69
  lastDeploy: state.lastDeploy,
64
- resources: state.resources.map(publicResource)
70
+ resources: state.resources.map(publicResource),
71
+ outputs: state.outputs === null ? null : state.outputs.map((output) => ({
72
+ key: output.key,
73
+ value: { _tag: "Hidden" },
74
+ description: null
75
+ }))
65
76
  }
66
77
  };
67
78
  });
@@ -78,6 +89,8 @@ const publicResource = (resource) => ({
78
89
  providerId: resource.providerId,
79
90
  account: resource.account,
80
91
  region: resource.region,
81
- consoleUrl: resource.consoleUrl
92
+ consoleUrl: resource.consoleUrl,
93
+ updatedAt: resource.updatedAt,
94
+ downstream: resource.downstream
82
95
  });
83
96
  //# sourceMappingURL=Catalog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Catalog.js","sourceRoot":"","sources":["../../src/server/Catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Catalog.js","sourceRoot":"","sources":["../../src/server/Catalog.ts"],"names":[],"mappings":"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"}
package/dist/state.d.ts CHANGED
@@ -11,5 +11,7 @@ export declare const decodeResource: (text: string) => Effect.Effect<{
11
11
  readonly account: string | null;
12
12
  readonly region: string | null;
13
13
  readonly consoleUrl: string | null;
14
+ readonly updatedAt: string | null;
15
+ readonly downstream: readonly string[] | null;
14
16
  } | null, StateReadError, never>;
15
17
  //# sourceMappingURL=state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,QAAQ,CAAA;AAClD,OAAO,EAAmB,cAAc,EAAE,MAAM,aAAa,CAAA;AA6B7D,mGAAmG;AACnG,eAAO,MAAM,cAAc;;;;;;;;;;gCAoBzB,CAAA"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA6B,MAAM,QAAQ,CAAA;AAE1D,OAAO,EAAmB,cAAc,EAAE,MAAM,aAAa,CAAA;AA8B7D,mGAAmG;AACnG,eAAO,MAAM,cAAc;;;;;;;;;;;;gCAkBzB,CAAA"}
package/dist/state.js CHANGED
@@ -1,21 +1,23 @@
1
- import { Effect, Predicate, Schema } from "effect";
1
+ import { Effect, Option, Predicate, Schema } from "effect";
2
+ import { projectResourceIdentity } from "./internal/resource-identity.js";
2
3
  import { ResourceSummary, StateReadError } from "./schema.js";
3
4
  const ResourceRow = Schema.Struct({
4
5
  kind: Schema.optionalKey(Schema.Literal("resource")),
5
- fqn: Schema.NonEmptyString,
6
+ fqn: ResourceSummary.fields.fqn,
6
7
  logicalId: Schema.NonEmptyString,
7
8
  resourceType: Schema.NonEmptyString,
8
9
  status: ResourceSummary.fields.status
9
10
  });
10
11
  const ActionRow = Schema.Struct({
11
12
  kind: Schema.Literal("action"),
12
- fqn: Schema.NonEmptyString,
13
+ fqn: ResourceSummary.fields.fqn,
13
14
  logicalId: Schema.NonEmptyString,
14
15
  actionType: Schema.NonEmptyString,
15
16
  status: Schema.Literals(["running", "ran"])
16
17
  });
17
18
  const metadataKeys = ["kind", "fqn", "logicalId", "resourceType", "actionType", "status"];
18
- /** Discard properties and outputs entirely. Mask marker objects in metadata, including their siblings. */
19
+ const Downstream = Schema.Array(ResourceSummary.fields.fqn).check(Schema.isMaxLength(50_000));
20
+ /** Select resource metadata only. Own identity has a separate allowlist; raw props and output values never pass through. */
19
21
  const metadata = (value) => {
20
22
  if (Object.hasOwn(value, "__redacted__"))
21
23
  return null;
@@ -36,10 +38,8 @@ export const decodeResource = Effect.fn("AlchemyConsole.decodeResource")(functio
36
38
  resourceType: row.resourceType,
37
39
  status: row.status,
38
40
  parent: slash === -1 ? null : row.fqn.slice(0, slash),
39
- providerId: null,
40
- account: null,
41
- region: null,
42
- consoleUrl: null
41
+ ...projectResourceIdentity(row.resourceType, json),
42
+ downstream: Option.getOrNull(Schema.decodeUnknownOption(Downstream)(json.downstream))
43
43
  });
44
44
  });
45
45
  //# sourceMappingURL=state.js.map
package/dist/state.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="56" height="56" aria-hidden="true" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter">
2
+ <defs fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter">
3
+ <radialGradient id="bpkgsrc-56-dc-38" cx="38%" cy="30%" r="80%" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><stop offset="0" stop-color="oklch(0.86 0.12 273)" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /><stop offset="0.55" stop-color="oklch(0.66 0.17 273)" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /><stop offset="1" stop-color="oklch(0.46 0.17 291)" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /></radialGradient>
4
+ <radialGradient id="spkgsrc-56-dc-38" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><stop offset="0" stop-color="black" stop-opacity="0.28" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /><stop offset="1" stop-color="black" stop-opacity="0" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /></radialGradient>
5
+ <radialGradient id="cpkgsrc-56-dc-38" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><stop offset="0" stop-color="oklch(0.95 0.1 264)" stop-opacity="0.95" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /><stop offset="1" stop-color="oklch(0.75 0.15 264)" stop-opacity="0" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /></radialGradient>
6
+ <radialGradient id="gpkgsrc-56-dc-38" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><stop offset="0" stop-color="white" stop-opacity="0.55" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /><stop offset="1" stop-color="white" stop-opacity="0" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /></radialGradient>
7
+ <linearGradient id="dpkgsrc-56-dc-38" x1="0" x2="0" y1="0" y2="1" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><stop offset="0.55" stop-color="oklch(0.3 0.12 291)" stop-opacity="0" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /><stop offset="1" stop-color="oklch(0.3 0.12 291)" stop-opacity="0.45" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /></linearGradient>
8
+ <radialGradient id="wpkgsrc-56-dc-38" cy="40%" r="60%" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><stop offset="0.6" stop-color="oklch(0.99 0.006 264)" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /><stop offset="1" stop-color="oklch(0.86 0.03 264)" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /></radialGradient>
9
+ <radialGradient id="ipkgsrc-56-dc-38" cy="72%" r="70%" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><stop offset="0" stop-color="oklch(0.62 0.15 264)" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /><stop offset="1" stop-color="oklch(0.3 0.09 264)" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /></radialGradient>
10
+ <clipPath id="kpkgsrc-56-dc-38" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><path d="M89.0 58.1C88.9 61.1 88.9 64.0 88.3 66.9C87.8 69.8 87.2 73.0 85.7 75.7C84.2 78.5 82.0 81.2 79.3 83.2C76.6 85.1 73.0 86.4 69.7 87.2C66.3 88.0 62.6 87.9 59.4 88.0C56.1 88.1 53.1 87.7 50.0 87.7C46.9 87.6 44.0 87.8 40.7 87.6C37.5 87.5 33.9 87.6 30.6 86.9C27.2 86.1 23.5 85.0 20.7 83.2C17.9 81.3 15.4 78.6 13.8 76.0C12.3 73.3 11.7 70.0 11.2 67.0C10.7 64.0 10.9 61.1 11.0 58.1C11.1 55.2 11.1 52.3 11.7 49.4C12.2 46.4 12.8 43.2 14.3 40.5C15.8 37.8 18.0 35.0 20.7 33.1C23.4 31.2 27.0 29.9 30.3 29.1C33.7 28.3 37.4 28.3 40.6 28.3C43.9 28.2 46.9 28.5 50.0 28.6C53.1 28.7 56.0 28.5 59.3 28.6C62.5 28.8 66.1 28.7 69.4 29.4C72.8 30.2 76.5 31.3 79.3 33.1C82.1 34.9 84.6 37.6 86.2 40.3C87.7 43.0 88.3 46.3 88.8 49.3C89.3 52.2 89.1 55.2 89.0 58.1Z" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /></clipPath>
11
+ <clipPath id="e0pkgsrc-56-dc-38" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><ellipse cx="39.07" cy="52.158168587244646" rx="5.4" ry="5.832000000000001" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /></clipPath>
12
+ <clipPath id="o0pkgsrc-56-dc-38" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><ellipse cx="39.07" cy="52.158168587244646" rx="6.6000000000000005" ry="7.032000000000001" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /></clipPath>
13
+ <clipPath id="u0pkgsrc-56-dc-38" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><path d="M31.47 64.35V42.78Q39.07 46.28 46.67 42.78V64.35Z" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" transform="translate(0 2.052)" /></clipPath>
14
+ <clipPath id="l0pkgsrc-56-dc-38" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><path d="M31.47 39.96V58.04Q39.07 61.54 46.67 58.04V39.96Z" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /></clipPath><clipPath id="e1pkgsrc-56-dc-38" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><ellipse cx="60.93" cy="52.158168587244646" rx="5.4" ry="5.832000000000001" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /></clipPath>
15
+ <clipPath id="o1pkgsrc-56-dc-38" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><ellipse cx="60.93" cy="52.158168587244646" rx="6.6000000000000005" ry="7.032000000000001" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /></clipPath>
16
+ <clipPath id="u1pkgsrc-56-dc-38" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><path d="M53.33 64.35V42.78Q60.93 46.28 68.53 42.78V64.35Z" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" transform="translate(0 2.052)" /></clipPath>
17
+ <clipPath id="l1pkgsrc-56-dc-38" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><path d="M53.33 39.96V58.04Q60.93 61.54 68.53 58.04V39.96Z" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /></clipPath>
18
+ </defs>
19
+ <ellipse cx="50" cy="91" fill="url(#spkgsrc-56-dc-38)" rx="32.76" ry="5" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" />
20
+ <circle cx="50" cy="55" r="46" fill="none" stroke="oklch(0.4901 0.013 274.7)" stroke-width="2.5px" opacity="0" stroke-linecap="butt" stroke-linejoin="miter" />
21
+ <circle cx="50" cy="55" r="46" pathLength="100" fill="none" stroke="oklch(0.4901 0.013 274.7)" stroke-width="4.2px" opacity="0" stroke-linecap="round" stroke-linejoin="miter" stroke-dasharray="9px, 91px" />
22
+ <g transform="translate(76 6) scale(0.8)" display="none" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><circle cx="12" cy="12" r="11" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /><path d="M6 12h12" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" /></g>
23
+ <g fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><g fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><g fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter">
24
+ <path d="M89.0 58.1C88.9 61.1 88.9 64.0 88.3 66.9C87.8 69.8 87.2 73.0 85.7 75.7C84.2 78.5 82.0 81.2 79.3 83.2C76.6 85.1 73.0 86.4 69.7 87.2C66.3 88.0 62.6 87.9 59.4 88.0C56.1 88.1 53.1 87.7 50.0 87.7C46.9 87.6 44.0 87.8 40.7 87.6C37.5 87.5 33.9 87.6 30.6 86.9C27.2 86.1 23.5 85.0 20.7 83.2C17.9 81.3 15.4 78.6 13.8 76.0C12.3 73.3 11.7 70.0 11.2 67.0C10.7 64.0 10.9 61.1 11.0 58.1C11.1 55.2 11.1 52.3 11.7 49.4C12.2 46.4 12.8 43.2 14.3 40.5C15.8 37.8 18.0 35.0 20.7 33.1C23.4 31.2 27.0 29.9 30.3 29.1C33.7 28.3 37.4 28.3 40.6 28.3C43.9 28.2 46.9 28.5 50.0 28.6C53.1 28.7 56.0 28.5 59.3 28.6C62.5 28.8 66.1 28.7 69.4 29.4C72.8 30.2 76.5 31.3 79.3 33.1C82.1 34.9 84.6 37.6 86.2 40.3C87.7 43.0 88.3 46.3 88.8 49.3C89.3 52.2 89.1 55.2 89.0 58.1Z" fill="url(#bpkgsrc-56-dc-38)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" />
25
+ <g clip-path="url(#kpkgsrc-56-dc-38)" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter">
26
+ <circle cx="50" cy="71.27" r="16" fill="url(#cpkgsrc-56-dc-38)" stroke="none" stroke-width="1px" opacity="0.35" stroke-linecap="butt" stroke-linejoin="miter" />
27
+ <rect x="11.00" y="28.26" width="78.00" height="59.74" fill="url(#dpkgsrc-56-dc-38)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" />
28
+ <ellipse cx="34.40" cy="40.21" rx="13.26" ry="5.97" fill="url(#gpkgsrc-56-dc-38)" transform="rotate(-24 34.40 40.21)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" />
29
+ </g>
30
+ </g></g>
31
+ <g fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><g fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter">
32
+ <g fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter">
33
+ <g clip-path="url(#u0pkgsrc-56-dc-38)" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><g clip-path="url(#l0pkgsrc-56-dc-38)" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter">
34
+ <ellipse cx="39.07" cy="52.158168587244646" rx="6.6000000000000005" ry="7.032000000000001" fill="oklch(0.25 0.05 260 / 0.14)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" />
35
+ <ellipse cx="39.07" cy="52.158168587244646" rx="5.4" ry="5.832000000000001" fill="url(#wpkgsrc-56-dc-38)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" />
36
+ <g clip-path="url(#e0pkgsrc-56-dc-38)" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><g fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter">
37
+ <circle cx="39.07" cy="52.158168587244646" r="3.56" fill="url(#ipkgsrc-56-dc-38)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" />
38
+ <circle cx="39.07" cy="52.158168587244646" r="1.85" fill="oklch(0.14 0.02 260)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" />
39
+ <circle cx="37.79" cy="50.73" r="0.93" fill="oklch(1 0 none / 0.92)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" />
40
+ <circle cx="40.28" cy="53.44" r="0.43" fill="oklch(1 0 none / 0.92)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" />
41
+ </g></g>
42
+ </g></g>
43
+ <g clip-path="url(#o0pkgsrc-56-dc-38)" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><g fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" transform="translate(0 2.052)"><path d="M31.47 42.78Q39.07 46.28 46.67 42.78" fill="none" stroke="oklch(0.22 0.04 260 / 0.85)" stroke-width="0.9px" opacity="0" stroke-linecap="round" stroke-linejoin="miter" /></g></g>
44
+ </g><g fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter">
45
+ <g clip-path="url(#u1pkgsrc-56-dc-38)" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><g clip-path="url(#l1pkgsrc-56-dc-38)" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter">
46
+ <ellipse cx="60.93" cy="52.158168587244646" rx="6.6000000000000005" ry="7.032000000000001" fill="oklch(0.25 0.05 260 / 0.14)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" />
47
+ <ellipse cx="60.93" cy="52.158168587244646" rx="5.4" ry="5.832000000000001" fill="url(#wpkgsrc-56-dc-38)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" />
48
+ <g clip-path="url(#e1pkgsrc-56-dc-38)" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><g fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter">
49
+ <circle cx="60.93" cy="52.158168587244646" r="3.56" fill="url(#ipkgsrc-56-dc-38)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" />
50
+ <circle cx="60.93" cy="52.158168587244646" r="1.85" fill="oklch(0.14 0.02 260)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" />
51
+ <circle cx="59.65" cy="50.73" r="0.93" fill="oklch(1 0 none / 0.92)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" />
52
+ <circle cx="62.14" cy="53.44" r="0.43" fill="oklch(1 0 none / 0.92)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" />
53
+ </g></g>
54
+ </g></g>
55
+ <g clip-path="url(#o1pkgsrc-56-dc-38)" fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter"><g fill="rgb(0, 0, 0)" stroke="none" stroke-width="1px" opacity="1" stroke-linecap="butt" stroke-linejoin="miter" transform="translate(0 2.052)"><path d="M53.33 42.78Q60.93 46.28 68.53 42.78" fill="none" stroke="oklch(0.22 0.04 260 / 0.85)" stroke-width="0.9px" opacity="0" stroke-linecap="round" stroke-linejoin="miter" /></g></g>
56
+ </g>
57
+ <path d="M33.67 42.88Q39.07 39.13 44.47 42.23Q39.07 41.73 33.67 42.88Z" fill="oklch(0.36 0.09 291)" stroke="oklch(0.36 0.09 291)" stroke-width="0.6px" opacity="1" stroke-linecap="butt" stroke-linejoin="round" /><path d="M66.33 42.88Q60.93 39.13 55.53 42.23Q60.93 41.73 66.33 42.88Z" fill="oklch(0.36 0.09 291)" stroke="oklch(0.36 0.09 291)" stroke-width="0.6px" opacity="1" stroke-linecap="butt" stroke-linejoin="round" />
58
+ </g></g>
59
+ </g>
60
+ </svg>