@voilabs/plugins 0.0.1-beta.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 (46) hide show
  1. package/README.md +634 -0
  2. package/dist/adapters/elysia.d.ts +31 -0
  3. package/dist/adapters/elysia.d.ts.map +1 -0
  4. package/dist/adapters/elysia.js +28 -0
  5. package/dist/adapters/elysia.js.map +1 -0
  6. package/dist/adapters/next.d.ts +25 -0
  7. package/dist/adapters/next.d.ts.map +1 -0
  8. package/dist/adapters/next.js +51 -0
  9. package/dist/adapters/next.js.map +1 -0
  10. package/dist/client.d.ts +33 -0
  11. package/dist/client.d.ts.map +1 -0
  12. package/dist/client.js +123 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/examples/lumina.d.ts +9 -0
  15. package/dist/examples/lumina.d.ts.map +1 -0
  16. package/dist/examples/lumina.js +197 -0
  17. package/dist/examples/lumina.js.map +1 -0
  18. package/dist/http.d.ts +19 -0
  19. package/dist/http.d.ts.map +1 -0
  20. package/dist/http.js +523 -0
  21. package/dist/http.js.map +1 -0
  22. package/dist/index.d.ts +7 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +7 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/injection.d.ts +10 -0
  27. package/dist/injection.d.ts.map +1 -0
  28. package/dist/injection.js +174 -0
  29. package/dist/injection.js.map +1 -0
  30. package/dist/manager.d.ts +121 -0
  31. package/dist/manager.d.ts.map +1 -0
  32. package/dist/manager.js +1006 -0
  33. package/dist/manager.js.map +1 -0
  34. package/dist/plugin.d.ts +25 -0
  35. package/dist/plugin.d.ts.map +1 -0
  36. package/dist/plugin.js +209 -0
  37. package/dist/plugin.js.map +1 -0
  38. package/dist/react.d.ts +34 -0
  39. package/dist/react.d.ts.map +1 -0
  40. package/dist/react.js +88 -0
  41. package/dist/react.js.map +1 -0
  42. package/dist/types.d.ts +416 -0
  43. package/dist/types.d.ts.map +1 -0
  44. package/dist/types.js +2 -0
  45. package/dist/types.js.map +1 -0
  46. package/package.json +57 -0
@@ -0,0 +1,174 @@
1
+ export async function renderPluginInjection(injection, context) {
2
+ if (injection.enabled === false) {
3
+ return null;
4
+ }
5
+ if (injection.render) {
6
+ const rendered = await injection.render(context);
7
+ if (!rendered) {
8
+ return null;
9
+ }
10
+ return typeof rendered === "string"
11
+ ? {
12
+ html: renderStaticInjection({
13
+ ...injection,
14
+ content: rendered,
15
+ }, context),
16
+ }
17
+ : rendered;
18
+ }
19
+ const html = renderStaticInjection(injection, context);
20
+ return html ? { html } : null;
21
+ }
22
+ export function renderStaticInjection(injection, context = {}) {
23
+ switch (injection.type) {
24
+ case "html":
25
+ return injection.content ?? "";
26
+ case "script":
27
+ return renderScript(injection, context.nonce);
28
+ case "style":
29
+ return renderStyle(injection, context.nonce);
30
+ case "link":
31
+ return renderLink(injection);
32
+ case "meta":
33
+ return renderMeta(injection);
34
+ case "noscript":
35
+ return injection.content
36
+ ? `<noscript>${injection.content}</noscript>`
37
+ : "";
38
+ default:
39
+ return "";
40
+ }
41
+ }
42
+ export function renderInjectionHtml(injections, options = {}) {
43
+ const html = [...injections]
44
+ .sort(sortInjections)
45
+ .map((injection) => injection.html)
46
+ .filter(Boolean)
47
+ .join(options.minify ? "" : "\n");
48
+ return options.minify ? html : html ? `${html}\n` : "";
49
+ }
50
+ export function injectHtml(html, injections, options = {}) {
51
+ const groups = groupInjections(injections);
52
+ let output = html;
53
+ output = injectAtHeadStart(output, renderTargets(groups, ["head:start"], options));
54
+ output = injectAtHeadEnd(output, renderTargets(groups, ["head", "head:end", "admin:head", "public:head"], options));
55
+ output = injectAtBodyStart(output, renderTargets(groups, ["body:start"], options));
56
+ output = injectAtBodyEnd(output, renderTargets(groups, ["body", "body:end", "footer", "admin:body", "admin:footer", "public:body", "public:footer"], options));
57
+ return output;
58
+ }
59
+ function renderScript(injection, nonce) {
60
+ const attributes = attrs({
61
+ ...injection.attributes,
62
+ src: injection.src,
63
+ type: injection.module ? "module" : injection.attributes?.["type"],
64
+ async: injection.async,
65
+ defer: injection.defer,
66
+ integrity: injection.integrity,
67
+ crossorigin: injection.crossOrigin,
68
+ referrerpolicy: injection.referrerPolicy,
69
+ nonce: injection.nonce ?? nonce,
70
+ "data-plugin-strategy": injection.strategy,
71
+ });
72
+ return `<script${attributes}>${injection.src ? "" : injection.content ?? ""}</script>`;
73
+ }
74
+ function renderStyle(injection, nonce) {
75
+ if (injection.src) {
76
+ return renderLink({
77
+ ...injection,
78
+ attributes: {
79
+ rel: "stylesheet",
80
+ ...injection.attributes,
81
+ },
82
+ });
83
+ }
84
+ const attributes = attrs({
85
+ ...injection.attributes,
86
+ nonce: injection.nonce ?? nonce,
87
+ });
88
+ return `<style${attributes}>${injection.content ?? ""}</style>`;
89
+ }
90
+ function renderLink(injection) {
91
+ const attributes = attrs({
92
+ rel: injection.preload ? "preload" : undefined,
93
+ ...injection.attributes,
94
+ href: injection.src ?? injection.attributes?.["href"],
95
+ integrity: injection.integrity,
96
+ crossorigin: injection.crossOrigin,
97
+ referrerpolicy: injection.referrerPolicy,
98
+ });
99
+ return `<link${attributes}>`;
100
+ }
101
+ function renderMeta(injection) {
102
+ const attributes = attrs(injection.attributes ?? {});
103
+ return attributes ? `<meta${attributes}>` : "";
104
+ }
105
+ function attrs(attributes) {
106
+ const rendered = Object.entries(attributes)
107
+ .filter((entry) => {
108
+ const [, value] = entry;
109
+ return value !== undefined && value !== null && value !== false;
110
+ })
111
+ .map(([key, value]) => {
112
+ if (value === true) {
113
+ return escapeAttributeName(key);
114
+ }
115
+ return `${escapeAttributeName(key)}="${escapeAttributeValue(String(value))}"`;
116
+ });
117
+ return rendered.length ? ` ${rendered.join(" ")}` : "";
118
+ }
119
+ function groupInjections(injections) {
120
+ const groups = new Map();
121
+ for (const injection of injections) {
122
+ const group = groups.get(injection.placement) ?? [];
123
+ group.push(injection);
124
+ groups.set(injection.placement, group);
125
+ }
126
+ return groups;
127
+ }
128
+ function renderTargets(groups, placements, options) {
129
+ return renderInjectionHtml(placements.flatMap((placement) => groups.get(placement) ?? []), options);
130
+ }
131
+ function injectAtHeadStart(html, injection) {
132
+ if (!injection) {
133
+ return html;
134
+ }
135
+ return html.replace(/<head(\s[^>]*)?>/i, (match) => `${match}${injection}`);
136
+ }
137
+ function injectAtHeadEnd(html, injection) {
138
+ if (!injection) {
139
+ return html;
140
+ }
141
+ if (/<\/head>/i.test(html)) {
142
+ return html.replace(/<\/head>/i, `${injection}</head>`);
143
+ }
144
+ return `${injection}${html}`;
145
+ }
146
+ function injectAtBodyStart(html, injection) {
147
+ if (!injection) {
148
+ return html;
149
+ }
150
+ return html.replace(/<body(\s[^>]*)?>/i, (match) => `${match}${injection}`);
151
+ }
152
+ function injectAtBodyEnd(html, injection) {
153
+ if (!injection) {
154
+ return html;
155
+ }
156
+ if (/<\/body>/i.test(html)) {
157
+ return html.replace(/<\/body>/i, `${injection}</body>`);
158
+ }
159
+ return `${html}${injection}`;
160
+ }
161
+ function sortInjections(left, right) {
162
+ return (left.order ?? 0) - (right.order ?? 0) || left.key.localeCompare(right.key);
163
+ }
164
+ function escapeAttributeName(value) {
165
+ return value.replace(/[^a-zA-Z0-9_:\-.[\]]/g, "");
166
+ }
167
+ function escapeAttributeValue(value) {
168
+ return value
169
+ .replace(/&/g, "&amp;")
170
+ .replace(/"/g, "&quot;")
171
+ .replace(/</g, "&lt;")
172
+ .replace(/>/g, "&gt;");
173
+ }
174
+ //# sourceMappingURL=injection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injection.js","sourceRoot":"","sources":["../src/injection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ import { Plugin } from "./plugin.js";
2
+ import type { PluginConfig, PluginConfigUpdateOptions, PluginDatabase, PluginDefinition, PluginEncryptionProvider, PluginHtmlInjectionOptions, PluginInjectionQuery, PluginInstallOptions, PluginInstallation, PluginListItem, PluginListOptions, PluginManifest, PluginMetaTag, PluginScope, PaginatedResult, ResolvedPluginInjection } from "./types.js";
3
+ export interface PluginManagerOptions {
4
+ plugins?: Array<Plugin | PluginDefinition>;
5
+ marketplaces?: MarketplaceSource[];
6
+ redisUrl?: string;
7
+ database?: PluginDatabase;
8
+ encryption?: PluginEncryptionProvider;
9
+ fetcher?: typeof fetch;
10
+ defaultTenantId?: string;
11
+ autoSyncMarketplaces?: boolean;
12
+ syncOnInit?: boolean;
13
+ marketplaceRefreshIntervalMs?: number;
14
+ github?: GitHubMarketplaceOptions;
15
+ }
16
+ export interface GitHubMarketplaceOptions {
17
+ branch?: string;
18
+ files?: string[];
19
+ pluginFiles?: boolean;
20
+ pluginFileExtensions?: string[];
21
+ recursivePluginFiles?: boolean;
22
+ avatarSize?: number;
23
+ token?: string;
24
+ headers?: HeadersInit;
25
+ rawBaseUrl?: string;
26
+ apiBaseUrl?: string;
27
+ }
28
+ export type MarketplaceSource = string | UrlMarketplaceSource | GitHubMarketplaceSource;
29
+ export interface UrlMarketplaceSource {
30
+ url: string;
31
+ headers?: HeadersInit;
32
+ }
33
+ export interface GitHubMarketplaceSource extends GitHubMarketplaceOptions {
34
+ github?: string;
35
+ owner?: string;
36
+ repo?: string;
37
+ repository?: string;
38
+ path?: string;
39
+ }
40
+ export interface PluginMarketplaceSyncOptions {
41
+ force?: boolean;
42
+ }
43
+ export interface PluginMarketplaceSyncResult {
44
+ loaded: number;
45
+ marketplaces: number;
46
+ }
47
+ export declare class PluginManagerError extends Error {
48
+ constructor(message: string);
49
+ }
50
+ export declare class PluginNotFoundError extends PluginManagerError {
51
+ constructor(pluginId: string);
52
+ }
53
+ export declare class PluginNotInstalledError extends PluginManagerError {
54
+ constructor(pluginId: string);
55
+ }
56
+ export declare class MemoryPluginDatabase implements PluginDatabase {
57
+ private readonly records;
58
+ list(scope?: PluginScope): Promise<PluginInstallation[]>;
59
+ load(pluginId: string, scope?: PluginScope): Promise<PluginInstallation | null>;
60
+ save(installation: PluginInstallation): Promise<PluginInstallation>;
61
+ update(pluginId: string, patch: Partial<PluginInstallation>, scope?: PluginScope): Promise<PluginInstallation>;
62
+ delete(pluginId: string, scope?: PluginScope): Promise<void>;
63
+ }
64
+ export declare class PluginManager {
65
+ readonly marketplaces: MarketplaceSource[];
66
+ readonly redisUrl?: string;
67
+ private readonly registry;
68
+ private readonly database;
69
+ private readonly encryption?;
70
+ private readonly fetcher?;
71
+ private readonly defaultTenantId?;
72
+ private marketplacesSynced;
73
+ private marketplacesSyncedAt?;
74
+ private marketplaceSyncPromise?;
75
+ private readonly autoSyncMarketplaces;
76
+ private readonly marketplaceRefreshIntervalMs?;
77
+ private readonly github;
78
+ constructor(options?: PluginManagerOptions);
79
+ register(pluginOrPlugins: Plugin | PluginDefinition | Array<Plugin | PluginDefinition>): this;
80
+ unregister(pluginId: string): boolean;
81
+ getById<TConfig extends PluginConfig = PluginConfig>(pluginId: string): Plugin<TConfig> | undefined;
82
+ require<TConfig extends PluginConfig = PluginConfig>(pluginId: string): Plugin<TConfig>;
83
+ get(options?: PluginListOptions): Promise<PaginatedResult<PluginListItem>>;
84
+ getPluginView(pluginId: string, scope?: PluginScope): Promise<PluginListItem>;
85
+ install<TConfig extends PluginConfig = PluginConfig>(pluginId: string, config: Partial<TConfig>, options?: PluginInstallOptions): Promise<PluginInstallation>;
86
+ updateConfig<TConfig extends PluginConfig = PluginConfig>(pluginId: string, config: Partial<TConfig>, options?: PluginConfigUpdateOptions): Promise<PluginInstallation>;
87
+ enable(pluginId: string, scope?: PluginScope): Promise<PluginInstallation>;
88
+ disable(pluginId: string, scope?: PluginScope): Promise<PluginInstallation>;
89
+ uninstall(pluginId: string, scope?: PluginScope): Promise<void>;
90
+ getInstallation(pluginId: string, scope?: PluginScope): Promise<PluginInstallation | null>;
91
+ getInstallationConfig<TConfig extends PluginConfig = PluginConfig>(pluginId: string, scope?: PluginScope): Promise<TConfig>;
92
+ getManifest(pluginId: string): PluginManifest;
93
+ getAdditionalMetaTags(pluginId?: string): PluginMetaTag[];
94
+ getFrontendComponents(slot?: string): {
95
+ pluginId: string;
96
+ key: string;
97
+ slot: import("./types.js").PluginComponentSlot;
98
+ component: import("./types.js").PluginComponentReference;
99
+ label?: string;
100
+ description?: string;
101
+ props?: Record<string, unknown>;
102
+ order?: number;
103
+ permissions?: string[];
104
+ visibleWhen?: Record<string, unknown>;
105
+ }[];
106
+ getInjections(options?: PluginInjectionQuery): Promise<ResolvedPluginInjection[]>;
107
+ renderInjections(options?: PluginHtmlInjectionOptions): Promise<string>;
108
+ injectHtml(html: string, options?: PluginHtmlInjectionOptions): Promise<string>;
109
+ ready(): Promise<void>;
110
+ syncMarketplaces(options?: PluginMarketplaceSyncOptions): Promise<PluginMarketplaceSyncResult>;
111
+ private loadMarketplaces;
112
+ private loadMarketplace;
113
+ private shouldSyncMarketplaces;
114
+ private isMarketplaceSyncStale;
115
+ private listInstallations;
116
+ private savePatch;
117
+ private resolveTenantId;
118
+ private sealConfig;
119
+ private revealConfig;
120
+ }
121
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAMrC,OAAO,KAAK,EAIV,YAAY,EACZ,yBAAyB,EACzB,cAAc,EACd,gBAAgB,EAChB,wBAAwB,EAExB,0BAA0B,EAI1B,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAElB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,WAAW,EACX,eAAe,EACf,uBAAuB,EAExB,MAAM,YAAY,CAAC;AAOpB,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC;IAC3C,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,MAAM,CAAC,EAAE,wBAAwB,CAAC;CACnC;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,oBAAoB,GACpB,uBAAuB,CAAC;AAE5B,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,MAAM,WAAW,uBAAwB,SAAQ,wBAAwB;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,4BAA4B;IAC3C,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,mBAAoB,SAAQ,kBAAkB;gBAC7C,QAAQ,EAAE,MAAM;CAI7B;AAED,qBAAa,uBAAwB,SAAQ,kBAAkB;gBACjD,QAAQ,EAAE,MAAM;CAI7B;AAED,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IAE3D,IAAI,CAAC,KAAK,GAAE,WAAgB,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAM5D,IAAI,CACR,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,WAAgB,GACtB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAI/B,IAAI,CAAC,YAAY,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAQnE,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,EAClC,KAAK,GAAE,WAAgB,GACtB,OAAO,CAAC,kBAAkB,CAAC;IAkBxB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAGvE;AAED,qBAAa,aAAa;IACxB,QAAQ,CAAC,YAAY,EAAE,iBAAiB,EAAE,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAA2B;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAS;IAC1C,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,oBAAoB,CAAC,CAAS;IACtC,OAAO,CAAC,sBAAsB,CAAC,CAAuC;IACtE,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAU;IAC/C,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAS;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;gBAEtC,OAAO,GAAE,oBAAyB;IAsB9C,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,gBAAgB,GAAG,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC,GAAG,IAAI;IAe7F,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIrC,OAAO,CAAC,OAAO,SAAS,YAAY,GAAG,YAAY,EACjD,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS;IAI9B,OAAO,CAAC,OAAO,SAAS,YAAY,GAAG,YAAY,EACjD,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC,OAAO,CAAC;IASZ,GAAG,CACP,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;IAsErC,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,WAAgB,GACtB,OAAO,CAAC,cAAc,CAAC;IAepB,OAAO,CAAC,OAAO,SAAS,YAAY,GAAG,YAAY,EACvD,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,EACxB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,kBAAkB,CAAC;IAmCxB,YAAY,CAAC,OAAO,SAAS,YAAY,GAAG,YAAY,EAC5D,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,EACxB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,kBAAkB,CAAC;IA0CxB,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,WAAgB,GACtB,OAAO,CAAC,kBAAkB,CAAC;IAqBxB,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,WAAgB,GACtB,OAAO,CAAC,kBAAkB,CAAC;IAqBxB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BnE,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,WAAgB,GACtB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAQ/B,qBAAqB,CAAC,OAAO,SAAS,YAAY,GAAG,YAAY,EACrE,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,WAAgB,GACtB,OAAO,CAAC,OAAO,CAAC;IAanB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAI7C,qBAAqB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,aAAa,EAAE;IAUzD,qBAAqB,CAAC,IAAI,CAAC,EAAE,MAAM;;;;;;;;;;;;IAY7B,aAAa,CACjB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,uBAAuB,EAAE,CAAC;IA6E/B,gBAAgB,CACpB,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,MAAM,CAAC;IAIZ,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,MAAM,CAAC;IAIZ,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,gBAAgB,CACpB,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,2BAA2B,CAAC;YA2BzB,gBAAgB;YAgBhB,eAAe;IAsF7B,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,sBAAsB;YAQhB,iBAAiB;YAcjB,SAAS;IA4BvB,OAAO,CAAC,eAAe;YAIT,UAAU;YA2BV,YAAY;CAsB3B"}