skybridge 0.0.0-dev.e1d8efe → 0.0.0-dev.e205b05

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 (166) hide show
  1. package/dist/src/server/devtoolsStaticServer.d.ts +15 -0
  2. package/dist/src/server/devtoolsStaticServer.js +38 -0
  3. package/dist/src/server/devtoolsStaticServer.js.map +1 -0
  4. package/dist/src/server/index.d.ts +3 -2
  5. package/dist/src/server/index.js +1 -0
  6. package/dist/src/server/index.js.map +1 -1
  7. package/dist/src/server/inferUtilityTypes.d.ts +10 -0
  8. package/dist/src/server/server.d.ts +42 -16
  9. package/dist/src/server/server.js +51 -31
  10. package/dist/src/server/server.js.map +1 -1
  11. package/dist/src/server/templateHelper.d.ts +3 -0
  12. package/dist/src/server/templateHelper.js +3 -2
  13. package/dist/src/server/templateHelper.js.map +1 -1
  14. package/dist/src/server/templates/development.hbs +3 -2
  15. package/dist/src/server/templates/production.hbs +1 -0
  16. package/dist/src/server/widgetsDevServer.js +0 -1
  17. package/dist/src/server/widgetsDevServer.js.map +1 -1
  18. package/dist/src/test/utils.d.ts +54 -8
  19. package/dist/src/test/utils.js +81 -3
  20. package/dist/src/test/utils.js.map +1 -1
  21. package/dist/src/test/widget.test.js +82 -25
  22. package/dist/src/test/widget.test.js.map +1 -1
  23. package/dist/src/web/bridges/adaptors/apps-sdk-adaptor.d.ts +13 -0
  24. package/dist/src/web/bridges/adaptors/apps-sdk-adaptor.js +33 -0
  25. package/dist/src/web/bridges/adaptors/apps-sdk-adaptor.js.map +1 -0
  26. package/dist/src/web/bridges/adaptors/mcp-app-adaptor.d.ts +16 -0
  27. package/dist/src/web/bridges/adaptors/mcp-app-adaptor.js +115 -0
  28. package/dist/src/web/bridges/adaptors/mcp-app-adaptor.js.map +1 -0
  29. package/dist/src/web/bridges/apps-sdk-bridge.d.ts +10 -0
  30. package/dist/src/web/bridges/apps-sdk-bridge.js +46 -0
  31. package/dist/src/web/bridges/apps-sdk-bridge.js.map +1 -0
  32. package/dist/src/web/bridges/hooks/use-adaptor.d.ts +2 -0
  33. package/dist/src/web/bridges/hooks/use-adaptor.js +8 -0
  34. package/dist/src/web/bridges/hooks/use-adaptor.js.map +1 -0
  35. package/dist/src/web/bridges/hooks/use-apps-sdk-bridge.d.ts +2 -0
  36. package/dist/src/web/bridges/hooks/use-apps-sdk-bridge.js +7 -0
  37. package/dist/src/web/bridges/hooks/use-apps-sdk-bridge.js.map +1 -0
  38. package/dist/src/web/bridges/hooks/use-bridge.d.ts +2 -0
  39. package/dist/src/web/bridges/hooks/use-bridge.js +8 -0
  40. package/dist/src/web/bridges/hooks/use-bridge.js.map +1 -0
  41. package/dist/src/web/bridges/hooks/use-mcp-app-bridge.d.ts +5 -0
  42. package/dist/src/web/bridges/hooks/use-mcp-app-bridge.js +7 -0
  43. package/dist/src/web/bridges/hooks/use-mcp-app-bridge.js.map +1 -0
  44. package/dist/src/web/bridges/hooks/use-mcp-app-bridge.test.js +41 -0
  45. package/dist/src/web/bridges/hooks/use-mcp-app-bridge.test.js.map +1 -0
  46. package/dist/src/web/bridges/index.d.ts +4 -0
  47. package/dist/src/web/bridges/index.js +5 -0
  48. package/dist/src/web/bridges/index.js.map +1 -0
  49. package/dist/src/web/bridges/mcp-app-bridge.d.ts +38 -0
  50. package/dist/src/web/bridges/mcp-app-bridge.js +162 -0
  51. package/dist/src/web/bridges/mcp-app-bridge.js.map +1 -0
  52. package/dist/src/web/bridges/types.d.ts +57 -0
  53. package/dist/src/web/bridges/types.js +2 -0
  54. package/dist/src/web/bridges/types.js.map +1 -0
  55. package/dist/src/web/create-store.d.ts +3 -0
  56. package/dist/src/web/create-store.js +25 -0
  57. package/dist/src/web/create-store.js.map +1 -0
  58. package/dist/src/web/create-store.test.js +70 -0
  59. package/dist/src/web/create-store.test.js.map +1 -0
  60. package/dist/src/web/data-llm.d.ts +1 -0
  61. package/dist/src/web/data-llm.js +8 -5
  62. package/dist/src/web/data-llm.js.map +1 -1
  63. package/dist/src/web/data-llm.test.js.map +1 -1
  64. package/dist/src/web/generate-helpers.d.ts +7 -5
  65. package/dist/src/web/generate-helpers.js +4 -2
  66. package/dist/src/web/generate-helpers.js.map +1 -1
  67. package/dist/src/web/generate-helpers.test-d.js +59 -3
  68. package/dist/src/web/generate-helpers.test-d.js.map +1 -1
  69. package/dist/src/web/generate-helpers.test.js.map +1 -1
  70. package/dist/src/web/helpers/state.d.ts +7 -0
  71. package/dist/src/web/helpers/state.js +40 -0
  72. package/dist/src/web/helpers/state.js.map +1 -0
  73. package/dist/src/web/helpers/state.test.js +53 -0
  74. package/dist/src/web/helpers/state.test.js.map +1 -0
  75. package/dist/src/web/hooks/index.d.ts +2 -3
  76. package/dist/src/web/hooks/index.js +2 -3
  77. package/dist/src/web/hooks/index.js.map +1 -1
  78. package/dist/src/web/hooks/test/utils.d.ts +10 -0
  79. package/dist/src/web/hooks/test/utils.js +40 -0
  80. package/dist/src/web/hooks/test/utils.js.map +1 -0
  81. package/dist/src/web/hooks/use-call-tool.d.ts +1 -1
  82. package/dist/src/web/hooks/use-call-tool.js +12 -4
  83. package/dist/src/web/hooks/use-call-tool.js.map +1 -1
  84. package/dist/src/web/hooks/use-call-tool.test-d.js.map +1 -1
  85. package/dist/src/web/hooks/use-call-tool.test.js +34 -14
  86. package/dist/src/web/hooks/use-call-tool.test.js.map +1 -1
  87. package/dist/src/web/hooks/use-display-mode.d.ts +1 -1
  88. package/dist/src/web/hooks/use-display-mode.js +6 -3
  89. package/dist/src/web/hooks/use-display-mode.js.map +1 -1
  90. package/dist/src/web/hooks/use-display-mode.test.js +1 -0
  91. package/dist/src/web/hooks/use-display-mode.test.js.map +1 -1
  92. package/dist/src/web/hooks/use-files.js.map +1 -1
  93. package/dist/src/web/hooks/use-files.test.js.map +1 -1
  94. package/dist/src/web/hooks/use-layout.d.ts +22 -0
  95. package/dist/src/web/hooks/use-layout.js +23 -0
  96. package/dist/src/web/hooks/use-layout.js.map +1 -0
  97. package/dist/src/web/hooks/use-layout.test.d.ts +1 -0
  98. package/dist/src/web/hooks/use-layout.test.js +95 -0
  99. package/dist/src/web/hooks/use-layout.test.js.map +1 -0
  100. package/dist/src/web/hooks/use-open-external.js +5 -3
  101. package/dist/src/web/hooks/use-open-external.js.map +1 -1
  102. package/dist/src/web/hooks/use-open-external.test.js +41 -15
  103. package/dist/src/web/hooks/use-open-external.test.js.map +1 -1
  104. package/dist/src/web/hooks/use-openai-global.d.ts +3 -2
  105. package/dist/src/web/hooks/use-openai-global.js +3 -20
  106. package/dist/src/web/hooks/use-openai-global.js.map +1 -1
  107. package/dist/src/web/hooks/use-request-modal.d.ts +6 -3
  108. package/dist/src/web/hooks/use-request-modal.js +6 -1
  109. package/dist/src/web/hooks/use-request-modal.js.map +1 -1
  110. package/dist/src/web/hooks/use-request-modal.test.js +35 -2
  111. package/dist/src/web/hooks/use-request-modal.test.js.map +1 -1
  112. package/dist/src/web/hooks/use-send-follow-up-message.js +3 -6
  113. package/dist/src/web/hooks/use-send-follow-up-message.js.map +1 -1
  114. package/dist/src/web/hooks/use-tool-info.d.ts +13 -2
  115. package/dist/src/web/hooks/use-tool-info.js +15 -11
  116. package/dist/src/web/hooks/use-tool-info.js.map +1 -1
  117. package/dist/src/web/hooks/use-tool-info.test-d.js +40 -5
  118. package/dist/src/web/hooks/use-tool-info.test-d.js.map +1 -1
  119. package/dist/src/web/hooks/use-tool-info.test.js +117 -46
  120. package/dist/src/web/hooks/use-tool-info.test.js.map +1 -1
  121. package/dist/src/web/hooks/use-user.d.ts +18 -0
  122. package/dist/src/web/hooks/use-user.js +19 -0
  123. package/dist/src/web/hooks/use-user.js.map +1 -0
  124. package/dist/src/web/hooks/use-user.test.d.ts +1 -0
  125. package/dist/src/web/hooks/use-user.test.js +93 -0
  126. package/dist/src/web/hooks/use-user.test.js.map +1 -0
  127. package/dist/src/web/hooks/use-widget-state.js +4 -26
  128. package/dist/src/web/hooks/use-widget-state.js.map +1 -1
  129. package/dist/src/web/hooks/use-widget-state.test.js +1 -0
  130. package/dist/src/web/hooks/use-widget-state.test.js.map +1 -1
  131. package/dist/src/web/index.d.ts +2 -0
  132. package/dist/src/web/index.js +2 -0
  133. package/dist/src/web/index.js.map +1 -1
  134. package/dist/src/web/mount-widget.js.map +1 -1
  135. package/dist/src/web/plugin/data-llm.test.js.map +1 -1
  136. package/dist/src/web/plugin/plugin.js +10 -4
  137. package/dist/src/web/plugin/plugin.js.map +1 -1
  138. package/dist/src/web/plugin/transform-data-llm.js +6 -3
  139. package/dist/src/web/plugin/transform-data-llm.js.map +1 -1
  140. package/dist/src/web/plugin/transform-data-llm.test.js.map +1 -1
  141. package/dist/src/web/proxy.js +5 -0
  142. package/dist/src/web/proxy.js.map +1 -1
  143. package/dist/src/web/types.d.ts +27 -11
  144. package/dist/src/web/types.js.map +1 -1
  145. package/dist/vitest.config.js.map +1 -1
  146. package/package.json +73 -68
  147. package/LICENSE +0 -674
  148. package/README.md +0 -28
  149. package/dist/src/web/hooks/use-locale.d.ts +0 -1
  150. package/dist/src/web/hooks/use-locale.js +0 -5
  151. package/dist/src/web/hooks/use-locale.js.map +0 -1
  152. package/dist/src/web/hooks/use-locale.test.js +0 -21
  153. package/dist/src/web/hooks/use-locale.test.js.map +0 -1
  154. package/dist/src/web/hooks/use-theme.d.ts +0 -1
  155. package/dist/src/web/hooks/use-theme.js +0 -5
  156. package/dist/src/web/hooks/use-theme.js.map +0 -1
  157. package/dist/src/web/hooks/use-theme.test.js +0 -26
  158. package/dist/src/web/hooks/use-theme.test.js.map +0 -1
  159. package/dist/src/web/hooks/use-user-agent.d.ts +0 -1
  160. package/dist/src/web/hooks/use-user-agent.js +0 -5
  161. package/dist/src/web/hooks/use-user-agent.js.map +0 -1
  162. package/dist/src/web/hooks/use-user-agent.test.js +0 -31
  163. package/dist/src/web/hooks/use-user-agent.test.js.map +0 -1
  164. /package/dist/src/web/{hooks/use-locale.test.d.ts → bridges/hooks/use-mcp-app-bridge.test.d.ts} +0 -0
  165. /package/dist/src/web/{hooks/use-theme.test.d.ts → create-store.test.d.ts} +0 -0
  166. /package/dist/src/web/{hooks/use-user-agent.test.d.ts → helpers/state.test.d.ts} +0 -0
package/README.md DELETED
@@ -1,28 +0,0 @@
1
- <div align="center">
2
-
3
- # Skybridge
4
-
5
- **Skybridge is the TypeScript framework for building ChatGPT apps**
6
-
7
- [![By Alpic](https://img.shields.io/badge/Made%20by%20Alpic-f6ffed?logo=alpic)](https://alpic.ai)
8
-
9
- ![NPM Downloads](https://img.shields.io/npm/dm/skybridge?color=e90060)
10
- ![NPM Version](https://img.shields.io/npm/v/skybridge?color=e90060)
11
- ![GitHub License](https://img.shields.io/github/license/alpic-ai/skybridge?color=e90060)
12
-
13
- </div>
14
-
15
- Skybridge is a fullstack library. It comes with modular packages aiming at simplifying the development of ChatGPT apps:
16
-
17
- - HMR server for development and build pipeline for production including end-to-end (tools-to-widget) type safety
18
- - collection of React hooks for state management, async data fetching
19
- - attribute for widget-to-context synchronization
20
-
21
- ### <a href="https://skybridge.tech">Read the docs →</b></a>
22
-
23
- ## Get Involved
24
-
25
- We welcome issues and pull requests!</br>
26
- Participate in [GitHub discussions](https://github.com/alpic-ai/skybridge/discussions)</br>
27
- Chat with the community on [Discord](https://discord.com/invite/gNAazGueab)</br>
28
- See [CONTRIBUTING.md](CONTRIBUTING.md) for setup instructions
@@ -1 +0,0 @@
1
- export declare function useLocale(): string;
@@ -1,5 +0,0 @@
1
- import { useOpenAiGlobal } from "./use-openai-global.js";
2
- export function useLocale() {
3
- return useOpenAiGlobal("locale");
4
- }
5
- //# sourceMappingURL=use-locale.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-locale.js","sourceRoot":"","sources":["../../../../src/web/hooks/use-locale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,UAAU,SAAS;IACxB,OAAO,eAAe,CAAC,QAAQ,CAAE,CAAC;AACnC,CAAC"}
@@ -1,21 +0,0 @@
1
- import { renderHook } from "@testing-library/react";
2
- import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
3
- import { useLocale } from "./use-locale.js";
4
- describe("useLocale", () => {
5
- let OpenaiMock;
6
- beforeEach(() => {
7
- OpenaiMock = {
8
- locale: "en-US",
9
- };
10
- vi.stubGlobal("openai", OpenaiMock);
11
- });
12
- afterEach(() => {
13
- vi.unstubAllGlobals();
14
- vi.resetAllMocks();
15
- });
16
- it("should return the current locale from window.openai.locale", () => {
17
- const { result } = renderHook(() => useLocale());
18
- expect(result.current).toBe("en-US");
19
- });
20
- });
21
- //# sourceMappingURL=use-locale.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-locale.test.js","sourceRoot":"","sources":["../../../../src/web/hooks/use-locale.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IAC1B,IAAI,UAEH,CAAC;IAEF,UAAU,CAAC,GAAG,EAAE;QACf,UAAU,GAAG;YACZ,MAAM,EAAE,OAAO;SACf,CAAC;QACF,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACtB,EAAE,CAAC,aAAa,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACrE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QAEjD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export declare function useTheme(): import("../types.js").Theme;
@@ -1,5 +0,0 @@
1
- import { useOpenAiGlobal } from "./use-openai-global.js";
2
- export function useTheme() {
3
- return useOpenAiGlobal("theme");
4
- }
5
- //# sourceMappingURL=use-theme.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-theme.js","sourceRoot":"","sources":["../../../../src/web/hooks/use-theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,UAAU,QAAQ;IACvB,OAAO,eAAe,CAAC,OAAO,CAAE,CAAC;AAClC,CAAC"}
@@ -1,26 +0,0 @@
1
- import { renderHook } from "@testing-library/react";
2
- import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
3
- import { useTheme } from "./use-theme.js";
4
- describe("useTheme", () => {
5
- let OpenaiMock;
6
- beforeEach(() => {
7
- OpenaiMock = {
8
- theme: "light",
9
- };
10
- vi.stubGlobal("openai", OpenaiMock);
11
- });
12
- afterEach(() => {
13
- vi.unstubAllGlobals();
14
- vi.resetAllMocks();
15
- });
16
- it("should return the current theme from window.openai.theme", () => {
17
- const { result } = renderHook(() => useTheme());
18
- expect(result.current).toBe("light");
19
- });
20
- it("should return dark theme when set to dark", () => {
21
- OpenaiMock.theme = "dark";
22
- const { result } = renderHook(() => useTheme());
23
- expect(result.current).toBe("dark");
24
- });
25
- });
26
- //# sourceMappingURL=use-theme.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-theme.test.js","sourceRoot":"","sources":["../../../../src/web/hooks/use-theme.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACzB,IAAI,UAEH,CAAC;IAEF,UAAU,CAAC,GAAG,EAAE;QACf,UAAU,GAAG;YACZ,KAAK,EAAE,OAAO;SACd,CAAC;QACF,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACtB,EAAE,CAAC,aAAa,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QACnE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACpD,UAAU,CAAC,KAAK,GAAG,MAAM,CAAC;QAC1B,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export declare function useUserAgent(): import("../types.js").UserAgent;
@@ -1,5 +0,0 @@
1
- import { useOpenAiGlobal } from "./use-openai-global.js";
2
- export function useUserAgent() {
3
- return useOpenAiGlobal("userAgent");
4
- }
5
- //# sourceMappingURL=use-user-agent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-user-agent.js","sourceRoot":"","sources":["../../../../src/web/hooks/use-user-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,UAAU,YAAY;IAC3B,OAAO,eAAe,CAAC,WAAW,CAAE,CAAC;AACtC,CAAC"}
@@ -1,31 +0,0 @@
1
- import { renderHook } from "@testing-library/react";
2
- import { afterEach, beforeEach, describe, expect, it, vi, } from "vitest";
3
- import { useUserAgent } from "./use-user-agent.js";
4
- describe("useUserAgent", () => {
5
- let OpenaiMock;
6
- beforeEach(() => {
7
- OpenaiMock = {
8
- userAgent: {
9
- device: { type: "mobile" },
10
- capabilities: { hover: false, touch: true },
11
- },
12
- };
13
- vi.stubGlobal("openai", OpenaiMock);
14
- });
15
- afterEach(() => {
16
- vi.unstubAllGlobals();
17
- vi.resetAllMocks();
18
- });
19
- it("should return the current user agent from window.openai.userAgent", () => {
20
- OpenaiMock.userAgent = {
21
- device: { type: "mobile" },
22
- capabilities: { hover: false, touch: true },
23
- };
24
- const { result } = renderHook(() => useUserAgent());
25
- expect(result.current).toEqual({
26
- device: { type: "mobile" },
27
- capabilities: { hover: false, touch: true },
28
- });
29
- });
30
- });
31
- //# sourceMappingURL=use-user-agent.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use-user-agent.test.js","sourceRoot":"","sources":["../../../../src/web/hooks/use-user-agent.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EACN,SAAS,EACT,UAAU,EACV,QAAQ,EACR,MAAM,EACN,EAAE,EAEF,EAAE,GACF,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC7B,IAAI,UAEH,CAAC;IAEF,UAAU,CAAC,GAAG,EAAE;QACf,UAAU,GAAG;YACZ,SAAS,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,YAAY,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;aAC3C;SACD,CAAC;QACF,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,gBAAgB,EAAE,CAAC;QACtB,EAAE,CAAC,aAAa,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC5E,UAAU,CAAC,SAAS,GAAG;YACtB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,YAAY,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;SAC3C,CAAC;QACF,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC;QAEpD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;YAC9B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,YAAY,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;SAC3C,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}