@elizaos/plugin-computeruse 2.0.0-alpha.9 → 2.0.0-beta.1

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 (127) hide show
  1. package/dist/actions/desktop-handlers.d.ts +20 -0
  2. package/dist/actions/desktop-handlers.d.ts.map +1 -0
  3. package/dist/actions/desktop.d.ts +11 -0
  4. package/dist/actions/desktop.d.ts.map +1 -0
  5. package/dist/actions/helpers.d.ts +33 -0
  6. package/dist/actions/helpers.d.ts.map +1 -0
  7. package/dist/actions/use-computer.d.ts +3 -0
  8. package/dist/actions/use-computer.d.ts.map +1 -0
  9. package/dist/approval-manager.d.ts +29 -0
  10. package/dist/approval-manager.d.ts.map +1 -0
  11. package/dist/index.d.ts +30 -5
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +7125 -59
  14. package/dist/index.js.map +34 -1
  15. package/dist/osworld/action-converter.d.ts +35 -0
  16. package/dist/osworld/action-converter.d.ts.map +1 -0
  17. package/dist/osworld/adapter.d.ts +78 -0
  18. package/dist/osworld/adapter.d.ts.map +1 -0
  19. package/dist/osworld/types.d.ts +69 -0
  20. package/dist/osworld/types.d.ts.map +1 -0
  21. package/dist/platform/a11y.d.ts +36 -0
  22. package/dist/platform/a11y.d.ts.map +1 -0
  23. package/dist/platform/browser.d.ts +61 -0
  24. package/dist/platform/browser.d.ts.map +1 -0
  25. package/dist/platform/capabilities.d.ts +10 -0
  26. package/dist/platform/capabilities.d.ts.map +1 -0
  27. package/dist/platform/desktop.d.ts +33 -0
  28. package/dist/platform/desktop.d.ts.map +1 -0
  29. package/dist/platform/driver.d.ts +27 -0
  30. package/dist/platform/driver.d.ts.map +1 -0
  31. package/dist/platform/file-ops.d.ts +10 -0
  32. package/dist/platform/file-ops.d.ts.map +1 -0
  33. package/dist/platform/helpers.d.ts +61 -0
  34. package/dist/platform/helpers.d.ts.map +1 -0
  35. package/dist/platform/nut-driver.d.ts +19 -0
  36. package/dist/platform/nut-driver.d.ts.map +1 -0
  37. package/dist/platform/permissions.d.ts +21 -0
  38. package/dist/platform/permissions.d.ts.map +1 -0
  39. package/dist/platform/screenshot.d.ts +16 -0
  40. package/dist/platform/screenshot.d.ts.map +1 -0
  41. package/dist/platform/security.d.ts +12 -0
  42. package/dist/platform/security.d.ts.map +1 -0
  43. package/dist/platform/terminal.d.ts +38 -0
  44. package/dist/platform/terminal.d.ts.map +1 -0
  45. package/dist/platform/windows-list.d.ts +36 -0
  46. package/dist/platform/windows-list.d.ts.map +1 -0
  47. package/dist/providers/computer-state.d.ts +9 -0
  48. package/dist/providers/computer-state.d.ts.map +1 -0
  49. package/dist/register-routes.d.ts +2 -0
  50. package/dist/register-routes.d.ts.map +1 -0
  51. package/dist/register-routes.js +7111 -0
  52. package/dist/register-routes.js.map +34 -0
  53. package/dist/routes/computer-use-compat-routes.d.ts +29 -0
  54. package/dist/routes/computer-use-compat-routes.d.ts.map +1 -0
  55. package/dist/routes/computer-use-routes.d.ts +3 -0
  56. package/dist/routes/computer-use-routes.d.ts.map +1 -0
  57. package/dist/routes/sandbox-routes.d.ts +53 -0
  58. package/dist/routes/sandbox-routes.d.ts.map +1 -0
  59. package/dist/services/computer-use-service.d.ts +66 -0
  60. package/dist/services/computer-use-service.d.ts.map +1 -0
  61. package/dist/services/desktop-control.d.ts +35 -0
  62. package/dist/services/desktop-control.d.ts.map +1 -0
  63. package/dist/types.d.ts +273 -39
  64. package/dist/types.d.ts.map +1 -1
  65. package/package.json +100 -103
  66. package/dist/actions/click-coordinates.d.ts +0 -3
  67. package/dist/actions/click-coordinates.d.ts.map +0 -1
  68. package/dist/actions/click-coordinates.js +0 -139
  69. package/dist/actions/click-coordinates.js.map +0 -1
  70. package/dist/actions/click.d.ts +0 -3
  71. package/dist/actions/click.d.ts.map +0 -1
  72. package/dist/actions/click.js +0 -144
  73. package/dist/actions/click.js.map +0 -1
  74. package/dist/actions/drag.d.ts +0 -3
  75. package/dist/actions/drag.d.ts.map +0 -1
  76. package/dist/actions/drag.js +0 -145
  77. package/dist/actions/drag.js.map +0 -1
  78. package/dist/actions/get-applications.d.ts +0 -3
  79. package/dist/actions/get-applications.d.ts.map +0 -1
  80. package/dist/actions/get-applications.js +0 -105
  81. package/dist/actions/get-applications.js.map +0 -1
  82. package/dist/actions/get-window-tree.d.ts +0 -3
  83. package/dist/actions/get-window-tree.d.ts.map +0 -1
  84. package/dist/actions/get-window-tree.js +0 -133
  85. package/dist/actions/get-window-tree.js.map +0 -1
  86. package/dist/actions/open-application.d.ts +0 -3
  87. package/dist/actions/open-application.d.ts.map +0 -1
  88. package/dist/actions/open-application.js +0 -117
  89. package/dist/actions/open-application.js.map +0 -1
  90. package/dist/actions/press-key.d.ts +0 -3
  91. package/dist/actions/press-key.d.ts.map +0 -1
  92. package/dist/actions/press-key.js +0 -115
  93. package/dist/actions/press-key.js.map +0 -1
  94. package/dist/actions/screenshot.d.ts +0 -3
  95. package/dist/actions/screenshot.d.ts.map +0 -1
  96. package/dist/actions/screenshot.js +0 -99
  97. package/dist/actions/screenshot.js.map +0 -1
  98. package/dist/actions/scroll.d.ts +0 -3
  99. package/dist/actions/scroll.d.ts.map +0 -1
  100. package/dist/actions/scroll.js +0 -137
  101. package/dist/actions/scroll.js.map +0 -1
  102. package/dist/actions/type.d.ts +0 -3
  103. package/dist/actions/type.d.ts.map +0 -1
  104. package/dist/actions/type.js +0 -163
  105. package/dist/actions/type.js.map +0 -1
  106. package/dist/providers/available-apps.d.ts +0 -3
  107. package/dist/providers/available-apps.d.ts.map +0 -1
  108. package/dist/providers/available-apps.js +0 -28
  109. package/dist/providers/available-apps.js.map +0 -1
  110. package/dist/providers/computeruse-state.d.ts +0 -3
  111. package/dist/providers/computeruse-state.d.ts.map +0 -1
  112. package/dist/providers/computeruse-state.js +0 -36
  113. package/dist/providers/computeruse-state.js.map +0 -1
  114. package/dist/service-registry.d.ts +0 -7
  115. package/dist/service-registry.d.ts.map +0 -1
  116. package/dist/service-registry.js +0 -2
  117. package/dist/service-registry.js.map +0 -1
  118. package/dist/services/computeruse-service.d.ts +0 -36
  119. package/dist/services/computeruse-service.d.ts.map +0 -1
  120. package/dist/services/computeruse-service.js +0 -391
  121. package/dist/services/computeruse-service.js.map +0 -1
  122. package/dist/types.js +0 -11
  123. package/dist/types.js.map +0 -1
  124. package/dist/utils/params.d.ts +0 -5
  125. package/dist/utils/params.d.ts.map +0 -1
  126. package/dist/utils/params.js +0 -13
  127. package/dist/utils/params.js.map +0 -1
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Pure handler functions for the DESKTOP parent action — one per op group.
3
+ *
4
+ * Each handler takes the live `ComputerUseService` instance and the resolved
5
+ * params object, executes the underlying service call, and returns an
6
+ * `ActionResult`. Format/text helpers stay local to this file so the parent
7
+ * action only does dispatch.
8
+ *
9
+ * Logic preserved verbatim from the original per-verb actions
10
+ * (file-action.ts / manage-window.ts / terminal-action.ts).
11
+ */
12
+ import type { ActionResult, HandlerCallback } from "@elizaos/core";
13
+ import type { ComputerUseService } from "../services/computer-use-service.js";
14
+ import type { FileActionParams, TerminalActionParams, WindowActionParams } from "../types.js";
15
+ export declare const DESKTOP_OPS: readonly ["file", "window", "terminal"];
16
+ export type DesktopOp = (typeof DESKTOP_OPS)[number];
17
+ export declare function handleFileOp(service: ComputerUseService, params: FileActionParams, callback?: HandlerCallback): Promise<ActionResult>;
18
+ export declare function handleWindowOp(service: ComputerUseService, params: WindowActionParams, callback?: HandlerCallback): Promise<ActionResult>;
19
+ export declare function handleTerminalOp(service: ComputerUseService, params: TerminalActionParams, callback?: HandlerCallback): Promise<ActionResult>;
20
+ //# sourceMappingURL=desktop-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop-handlers.d.ts","sourceRoot":"","sources":["../../src/actions/desktop-handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EACV,gBAAgB,EAEhB,oBAAoB,EAEpB,kBAAkB,EAEnB,MAAM,aAAa,CAAC;AAGrB,eAAO,MAAM,WAAW,yCAA0C,CAAC;AACnE,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAmBrD,wBAAsB,YAAY,CAChC,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,CAAC,EAAE,eAAe,GACzB,OAAO,CAAC,YAAY,CAAC,CAoBvB;AA4BD,wBAAsB,cAAc,CAClC,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,CAAC,EAAE,eAAe,GACzB,OAAO,CAAC,YAAY,CAAC,CAmBvB;AAcD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,CAAC,EAAE,eAAe,GACzB,OAAO,CAAC,YAAY,CAAC,CAoCvB"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * DESKTOP parent action — single canonical action that dispatches to the
3
+ * underlying desktop ops (file, window, terminal). Built on the same
4
+ * `op`/`subaction` pattern as BROWSER. Future ops (`screenshot`, `ocr`,
5
+ * `detect_elements`) are reserved in the enum but not yet implemented here —
6
+ * canonical screen capture / OCR / element detection live on the
7
+ * COMPUTER_USE action and stay there until intentionally moved.
8
+ */
9
+ import { type Action } from "@elizaos/core";
10
+ export declare const desktopAction: Action;
11
+ //# sourceMappingURL=desktop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desktop.d.ts","sourceRoot":"","sources":["../../src/actions/desktop.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,KAAK,MAAM,EASZ,MAAM,eAAe,CAAC;AAqCvB,eAAO,MAAM,aAAa,EAAE,MAkT3B,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { ActionResult, HandlerOptions, Memory } from "@elizaos/core";
2
+ export interface NativeComputerUseResult {
3
+ success: boolean;
4
+ message?: string;
5
+ error?: string;
6
+ permissionDenied?: boolean;
7
+ permissionType?: string;
8
+ approvalRequired?: boolean;
9
+ approvalId?: string;
10
+ screenshot?: string;
11
+ frontendScreenshot?: string;
12
+ }
13
+ export declare function resolveActionParams<T>(message: Memory, options?: HandlerOptions): T;
14
+ export declare function buildScreenshotAttachment(args: {
15
+ idPrefix: string;
16
+ screenshot: string;
17
+ title: string;
18
+ description: string;
19
+ }): {
20
+ id: string;
21
+ url: string;
22
+ title: string;
23
+ source: string;
24
+ description: string;
25
+ contentType: "image";
26
+ };
27
+ export declare function toComputerUseActionResult<T extends NativeComputerUseResult>({ action, result, text, suppressClipboard, }: {
28
+ action: string;
29
+ result: T;
30
+ text: string;
31
+ suppressClipboard?: boolean;
32
+ }): ActionResult;
33
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/actions/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE1E,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,cAAc,GACvB,CAAC,CAiBH;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;;;;;;;EASA;AAqBD,wBAAgB,yBAAyB,CAAC,CAAC,SAAS,uBAAuB,EAAE,EAC3E,MAAM,EACN,MAAM,EACN,IAAI,EACJ,iBAAyB,GAC1B,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,CAAC,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG,YAAY,CAYf"}
@@ -0,0 +1,3 @@
1
+ import type { Action } from "@elizaos/core";
2
+ export declare const useComputerAction: Action;
3
+ //# sourceMappingURL=use-computer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-computer.d.ts","sourceRoot":"","sources":["../../src/actions/use-computer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAOP,MAAM,eAAe,CAAC;AAuJvB,eAAO,MAAM,iBAAiB,EAAE,MA6O/B,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { ApprovalMode, ApprovalResolution, ApprovalSnapshot } from "./types.js";
2
+ type ApprovalDecision = {
3
+ approved: boolean;
4
+ cancelled: boolean;
5
+ reason?: string;
6
+ };
7
+ type ApprovalListener = (snapshot: ApprovalSnapshot) => void;
8
+ export declare function isApprovalMode(value: string): value is ApprovalMode;
9
+ export declare class ComputerUseApprovalManager {
10
+ private mode;
11
+ private pending;
12
+ private listeners;
13
+ private readonly configPath;
14
+ constructor();
15
+ getMode(): ApprovalMode;
16
+ setMode(mode: string): ApprovalMode;
17
+ shouldAutoApprove(command: string): boolean;
18
+ isDenyAll(): boolean;
19
+ requestApproval(command: string, parameters?: Record<string, unknown>): Promise<ApprovalDecision>;
20
+ getSnapshot(): ApprovalSnapshot;
21
+ resolveApproval(id: string, approved: boolean, reason?: string): ApprovalResolution | null;
22
+ cancelAll(reason?: string): void;
23
+ subscribe(listener: ApprovalListener): () => void;
24
+ private loadConfig;
25
+ private saveConfig;
26
+ private emit;
27
+ }
28
+ export {};
29
+ //# sourceMappingURL=approval-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval-manager.d.ts","sourceRoot":"","sources":["../src/approval-manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AA+BpB,KAAK,gBAAgB,GAAG;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAMF,KAAK,gBAAgB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAE7D,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CAEnE;AAED,qBAAa,0BAA0B;IACrC,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,OAAO,CAA4C;IAC3D,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAIzB;;IAMF,OAAO,IAAI,YAAY;IAIvB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY;IASnC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAY3C,SAAS,IAAI,OAAO;IAIpB,eAAe,CACb,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACvC,OAAO,CAAC,gBAAgB,CAAC;IAgB5B,WAAW,IAAI,gBAAgB;IAe/B,eAAe,CACb,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,OAAO,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,kBAAkB,GAAG,IAAI;IAsB5B,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAQhC,SAAS,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,IAAI;IAQjD,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,IAAI;CAMb"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,33 @@
1
+ /**
2
+ * @elizaos/plugin-computeruse
3
+ *
4
+ * Desktop automation plugin for elizaOS agents — screenshots, mouse/keyboard
5
+ * control, browser CDP automation, terminal access, file operations, and
6
+ * window management.
7
+ *
8
+ * Deeply ported from coasty-ai/open-computer-use (Apache 2.0).
9
+ *
10
+ * Enable via:
11
+ * - Config: features.computeruse: true
12
+ * - Env: COMPUTER_USE_ENABLED=1
13
+ *
14
+ * Platform requirements:
15
+ * macOS — screencapture (built-in), cliclick (brew install cliclick), AppleScript
16
+ * Linux — xdotool (sudo apt install xdotool), ImageMagick/scrot for screenshots
17
+ * Windows — PowerShell (built-in)
18
+ * Browser — puppeteer-core + Chrome/Edge/Brave installed
19
+ *
20
+ * @module @elizaos/plugin-computeruse
21
+ */
1
22
  import type { Plugin } from "@elizaos/core";
2
- import "./service-registry.js";
3
- import { ComputerUseService } from "./services/computeruse-service.js";
4
- export * from "./types.js";
5
- export { ComputerUseService };
23
+ export declare const computerUsePlugin: Plugin;
6
24
  export declare const computerusePlugin: Plugin;
7
- export default computerusePlugin;
25
+ export default computerUsePlugin;
26
+ export { ComputerUseService } from "./services/computer-use-service.js";
27
+ export { captureDesktopScreenshot, commandExists, detectDesktopControlCapabilities, getDesktopPlatformName, isHeadfulGuiAvailable, listDesktopWindows, performDesktopClick, performDesktopDoubleClick, performDesktopKeypress, performDesktopMouseMove, performDesktopScroll, performDesktopTextInput, } from "./services/desktop-control.js";
28
+ export type { DesktopControlCapabilities, DesktopControlCapability, DesktopInputButton, DesktopScreenshotRegion, DesktopWindowInfo, } from "./services/desktop-control.js";
29
+ export { handleComputerUseRoutes } from "./routes/computer-use-routes.js";
30
+ export { handleSandboxRoute } from "./routes/sandbox-routes.js";
31
+ export type { ActionHistoryEntry, ApprovalMode, ApprovalResolution, ApprovalSnapshot, BrowserActionParams, BrowserActionResult, BrowserActionType, BrowserInfo, BrowserState, BrowserTab, ClickableElement, ComputerActionResult, ComputerUseConfig, ComputerUseResult, DesktopActionParams, DesktopActionType, FileActionParams, FileActionResult, FileActionType, FileEntry, PendingApproval, PermissionType, PlatformCapabilities, ScreenRegion, ScreenSize, TerminalActionParams, TerminalActionResult, TerminalActionType, WindowActionParams, WindowActionResult, WindowActionType, WindowInfo, } from "./types.js";
32
+ export * from "./register-routes.js";
8
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,MAAM,EAAE,MAAM,eAAe,CAAC;AAG3D,OAAO,uBAAuB,CAAC;AAa/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAY9B,eAAO,MAAM,iBAAiB,EAAE,MAuC/B,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAS,MAAM,eAAe,CAAC;AAsCnD,eAAO,MAAM,iBAAiB,EAAE,MA2B/B,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAoB,CAAC;AAEnD,eAAe,iBAAiB,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,gCAAgC,EAChC,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EACV,0BAA0B,EAC1B,wBAAwB,EACxB,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,cAAc,sBAAsB,CAAC"}