claude-in-mobile 2.1.2 → 2.3.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 (43) hide show
  1. package/desktop-companion/build/install/desktop-companion/bin/desktop-companion +248 -0
  2. package/desktop-companion/build/install/desktop-companion/bin/desktop-companion.bat +92 -0
  3. package/desktop-companion/build/install/desktop-companion/lib/annotations-23.0.0.jar +0 -0
  4. package/desktop-companion/build/install/desktop-companion/lib/desktop-companion-1.0.0.jar +0 -0
  5. package/desktop-companion/build/install/desktop-companion/lib/jna-5.14.0.jar +0 -0
  6. package/desktop-companion/build/install/desktop-companion/lib/jna-platform-5.14.0.jar +0 -0
  7. package/desktop-companion/build/install/desktop-companion/lib/kotlin-stdlib-1.9.22.jar +0 -0
  8. package/desktop-companion/build/install/desktop-companion/lib/kotlin-stdlib-jdk7-1.8.20.jar +0 -0
  9. package/desktop-companion/build/install/desktop-companion/lib/kotlin-stdlib-jdk8-1.8.20.jar +0 -0
  10. package/desktop-companion/build/install/desktop-companion/lib/kotlinx-coroutines-core-jvm-1.7.3.jar +0 -0
  11. package/desktop-companion/build/install/desktop-companion/lib/kotlinx-serialization-core-jvm-1.6.2.jar +0 -0
  12. package/desktop-companion/build/install/desktop-companion/lib/kotlinx-serialization-json-jvm-1.6.2.jar +0 -0
  13. package/dist/adb/ui-parser.d.ts +63 -0
  14. package/dist/adb/ui-parser.d.ts.map +1 -1
  15. package/dist/adb/ui-parser.js +186 -0
  16. package/dist/adb/ui-parser.js.map +1 -1
  17. package/dist/desktop/client.d.ts +162 -0
  18. package/dist/desktop/client.d.ts.map +1 -0
  19. package/dist/desktop/client.js +485 -0
  20. package/dist/desktop/client.js.map +1 -0
  21. package/dist/desktop/gradle.d.ts +45 -0
  22. package/dist/desktop/gradle.d.ts.map +1 -0
  23. package/dist/desktop/gradle.js +228 -0
  24. package/dist/desktop/gradle.js.map +1 -0
  25. package/dist/desktop/index.d.ts +7 -0
  26. package/dist/desktop/index.d.ts.map +1 -0
  27. package/dist/desktop/index.js +7 -0
  28. package/dist/desktop/index.js.map +1 -0
  29. package/dist/desktop/types.d.ts +131 -0
  30. package/dist/desktop/types.d.ts.map +1 -0
  31. package/dist/desktop/types.js +5 -0
  32. package/dist/desktop/types.js.map +1 -0
  33. package/dist/device-manager.d.ts +41 -10
  34. package/dist/device-manager.d.ts.map +1 -1
  35. package/dist/device-manager.js +226 -39
  36. package/dist/device-manager.js.map +1 -1
  37. package/dist/index.js +318 -19
  38. package/dist/index.js.map +1 -1
  39. package/dist/utils/image.d.ts +2 -0
  40. package/dist/utils/image.d.ts.map +1 -1
  41. package/dist/utils/image.js +25 -2
  42. package/dist/utils/image.js.map +1 -1
  43. package/package.json +7 -2
package/dist/index.js CHANGED
@@ -3,14 +3,14 @@ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
3
3
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
4
  import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
5
5
  import { DeviceManager } from "./device-manager.js";
6
- import { parseUiHierarchy, findByText, findByResourceId, findElements, formatUiTree, formatElement, } from "./adb/ui-parser.js";
6
+ import { parseUiHierarchy, findByText, findByResourceId, findElements, formatUiTree, formatElement, analyzeScreen, findBestMatch, formatScreenAnalysis, } from "./adb/ui-parser.js";
7
7
  // Initialize device manager
8
8
  const deviceManager = new DeviceManager();
9
9
  // Platform parameter schema (reused across tools)
10
10
  const platformParam = {
11
11
  type: "string",
12
- enum: ["android", "ios"],
13
- description: "Target platform. If not specified, uses the active device.",
12
+ enum: ["android", "ios", "desktop"],
13
+ description: "Target platform. If not specified, uses the active target.",
14
14
  };
15
15
  // Define tools
16
16
  const tools = [
@@ -382,6 +382,165 @@ const tools = [
382
382
  },
383
383
  },
384
384
  },
385
+ // ============ Desktop Tools ============
386
+ {
387
+ name: "set_target",
388
+ description: "Switch the active target between Android, iOS, and Desktop platforms",
389
+ inputSchema: {
390
+ type: "object",
391
+ properties: {
392
+ target: {
393
+ type: "string",
394
+ enum: ["android", "ios", "desktop"],
395
+ description: "Target platform to switch to",
396
+ },
397
+ },
398
+ required: ["target"],
399
+ },
400
+ },
401
+ {
402
+ name: "get_target",
403
+ description: "Get the current active target and its status",
404
+ inputSchema: {
405
+ type: "object",
406
+ properties: {},
407
+ },
408
+ },
409
+ {
410
+ name: "launch_desktop_app",
411
+ description: "Start desktop automation. Optionally also launches a Compose Desktop application via Gradle.",
412
+ inputSchema: {
413
+ type: "object",
414
+ properties: {
415
+ projectPath: {
416
+ type: "string",
417
+ description: "Path to the Gradle project directory. If provided, also launches the user's app.",
418
+ },
419
+ task: {
420
+ type: "string",
421
+ description: "Gradle task to run (e.g., ':desktopApp:run'). Auto-detected if not specified.",
422
+ },
423
+ jvmArgs: {
424
+ type: "array",
425
+ items: { type: "string" },
426
+ description: "JVM arguments to pass to the app",
427
+ },
428
+ },
429
+ },
430
+ },
431
+ {
432
+ name: "stop_desktop_app",
433
+ description: "Stop the running desktop application",
434
+ inputSchema: {
435
+ type: "object",
436
+ properties: {},
437
+ },
438
+ },
439
+ {
440
+ name: "get_window_info",
441
+ description: "Get information about desktop windows (Desktop only)",
442
+ inputSchema: {
443
+ type: "object",
444
+ properties: {},
445
+ },
446
+ },
447
+ {
448
+ name: "focus_window",
449
+ description: "Focus a specific desktop window (Desktop only)",
450
+ inputSchema: {
451
+ type: "object",
452
+ properties: {
453
+ windowId: {
454
+ type: "string",
455
+ description: "Window ID from get_window_info",
456
+ },
457
+ },
458
+ required: ["windowId"],
459
+ },
460
+ },
461
+ {
462
+ name: "resize_window",
463
+ description: "Resize a desktop window (Desktop only)",
464
+ inputSchema: {
465
+ type: "object",
466
+ properties: {
467
+ windowId: {
468
+ type: "string",
469
+ description: "Window ID (optional, uses focused window if not specified)",
470
+ },
471
+ width: {
472
+ type: "number",
473
+ description: "New window width in pixels",
474
+ },
475
+ height: {
476
+ type: "number",
477
+ description: "New window height in pixels",
478
+ },
479
+ },
480
+ required: ["width", "height"],
481
+ },
482
+ },
483
+ {
484
+ name: "get_clipboard",
485
+ description: "Get clipboard text content (Desktop only)",
486
+ inputSchema: {
487
+ type: "object",
488
+ properties: {},
489
+ },
490
+ },
491
+ {
492
+ name: "set_clipboard",
493
+ description: "Set clipboard text content (Desktop only)",
494
+ inputSchema: {
495
+ type: "object",
496
+ properties: {
497
+ text: {
498
+ type: "string",
499
+ description: "Text to set in clipboard",
500
+ },
501
+ },
502
+ required: ["text"],
503
+ },
504
+ },
505
+ {
506
+ name: "get_performance_metrics",
507
+ description: "Get memory and CPU usage metrics (Desktop only)",
508
+ inputSchema: {
509
+ type: "object",
510
+ properties: {},
511
+ },
512
+ },
513
+ // ============ Smart Android UI Tools ============
514
+ {
515
+ name: "analyze_screen",
516
+ description: "Get structured analysis of the current screen without taking a screenshot. Returns buttons, input fields, text content, and scrollable areas. Much cheaper than screenshot for understanding screen layout. (Android only)",
517
+ inputSchema: {
518
+ type: "object",
519
+ properties: {
520
+ platform: platformParam,
521
+ },
522
+ },
523
+ },
524
+ {
525
+ name: "find_and_tap",
526
+ description: "Smart tap by element description. Uses fuzzy matching to find the best element by text, content description, or resource ID, then taps it. More reliable than exact text matching. (Android only)",
527
+ inputSchema: {
528
+ type: "object",
529
+ properties: {
530
+ description: {
531
+ type: "string",
532
+ description: "Natural language description of the element to tap, e.g., 'submit button', 'settings', 'back'",
533
+ },
534
+ minConfidence: {
535
+ type: "number",
536
+ description: "Minimum confidence score (0-100) to accept a match (default: 30)",
537
+ default: 30,
538
+ },
539
+ platform: platformParam,
540
+ },
541
+ required: ["description"],
542
+ },
543
+ },
385
544
  ];
386
545
  // Cache for UI elements (to support tap by index)
387
546
  let cachedElements = [];
@@ -395,14 +554,16 @@ async function handleTool(name, args) {
395
554
  return { text: "No devices connected. Make sure ADB/Xcode is running and a device/emulator/simulator is connected." };
396
555
  }
397
556
  const activeDevice = deviceManager.getActiveDevice();
557
+ const { target: activeTarget } = deviceManager.getTarget();
398
558
  // Group by platform
399
559
  const android = devices.filter(d => d.platform === "android");
400
560
  const ios = devices.filter(d => d.platform === "ios");
561
+ const desktop = devices.filter(d => d.platform === "desktop");
401
562
  let result = "Connected devices:\n";
402
563
  if (android.length > 0) {
403
564
  result += "\nAndroid:\n";
404
565
  for (const d of android) {
405
- const active = activeDevice?.id === d.id ? " [ACTIVE]" : "";
566
+ const active = activeDevice?.id === d.id && activeTarget === "android" ? " [ACTIVE]" : "";
406
567
  const type = d.isSimulator ? "emulator" : "physical";
407
568
  result += ` • ${d.id} - ${d.name} (${type}, ${d.state})${active}\n`;
408
569
  }
@@ -410,11 +571,18 @@ async function handleTool(name, args) {
410
571
  if (ios.length > 0) {
411
572
  result += "\niOS:\n";
412
573
  for (const d of ios) {
413
- const active = activeDevice?.id === d.id ? " [ACTIVE]" : "";
574
+ const active = activeDevice?.id === d.id && activeTarget === "ios" ? " [ACTIVE]" : "";
414
575
  const type = d.isSimulator ? "simulator" : "physical";
415
576
  result += ` • ${d.id} - ${d.name} (${type}, ${d.state})${active}\n`;
416
577
  }
417
578
  }
579
+ if (desktop.length > 0) {
580
+ result += "\nDesktop:\n";
581
+ for (const d of desktop) {
582
+ const active = activeTarget === "desktop" ? " [ACTIVE]" : "";
583
+ result += ` • ${d.id} - ${d.name} (${d.state})${active}\n`;
584
+ }
585
+ }
418
586
  return { text: result.trim() };
419
587
  }
420
588
  case "set_device": {
@@ -441,7 +609,12 @@ async function handleTool(name, args) {
441
609
  if (currentPlatform === "ios") {
442
610
  return { text: "iOS UI hierarchy is limited. Use screenshot + tap by coordinates, or integrate WebDriverAgent for full UI inspection." };
443
611
  }
444
- const xml = deviceManager.getUiHierarchy(platform);
612
+ // Desktop returns pre-formatted text from DeviceManager
613
+ const xml = await deviceManager.getUiHierarchy(platform);
614
+ if (currentPlatform === "desktop") {
615
+ return { text: xml };
616
+ }
617
+ // Android: parse XML and format
445
618
  cachedElements = parseUiHierarchy(xml);
446
619
  const tree = formatUiTree(cachedElements, {
447
620
  showAll: args.showAll,
@@ -456,7 +629,7 @@ async function handleTool(name, args) {
456
629
  if (args.index !== undefined && currentPlatform === "android") {
457
630
  const idx = args.index;
458
631
  if (cachedElements.length === 0) {
459
- const xml = deviceManager.getUiHierarchy("android");
632
+ const xml = await deviceManager.getUiHierarchy("android");
460
633
  cachedElements = parseUiHierarchy(xml);
461
634
  }
462
635
  const el = cachedElements.find(e => e.index === idx);
@@ -468,7 +641,7 @@ async function handleTool(name, args) {
468
641
  }
469
642
  // Find by text or resourceId (Android only)
470
643
  if ((args.text || args.resourceId) && currentPlatform === "android") {
471
- const xml = deviceManager.getUiHierarchy("android");
644
+ const xml = await deviceManager.getUiHierarchy("android");
472
645
  cachedElements = parseUiHierarchy(xml);
473
646
  let found = [];
474
647
  if (args.text) {
@@ -488,7 +661,7 @@ async function handleTool(name, args) {
488
661
  if (x === undefined || y === undefined) {
489
662
  return { text: "Please provide x,y coordinates, text, resourceId, or index" };
490
663
  }
491
- deviceManager.tap(x, y, platform);
664
+ await deviceManager.tap(x, y, platform);
492
665
  return { text: `Tapped at (${x}, ${y})` };
493
666
  }
494
667
  case "long_press": {
@@ -497,7 +670,7 @@ async function handleTool(name, args) {
497
670
  const duration = args.duration ?? 1000;
498
671
  const currentPlatform = platform ?? deviceManager.getCurrentPlatform();
499
672
  if (args.text && currentPlatform === "android") {
500
- const xml = deviceManager.getUiHierarchy("android");
673
+ const xml = await deviceManager.getUiHierarchy("android");
501
674
  cachedElements = parseUiHierarchy(xml);
502
675
  const found = findByText(cachedElements, args.text);
503
676
  if (found.length === 0) {
@@ -509,28 +682,28 @@ async function handleTool(name, args) {
509
682
  if (x === undefined || y === undefined) {
510
683
  return { text: "Please provide x,y coordinates or text" };
511
684
  }
512
- deviceManager.longPress(x, y, duration, platform);
685
+ await deviceManager.longPress(x, y, duration, platform);
513
686
  return { text: `Long pressed at (${x}, ${y}) for ${duration}ms` };
514
687
  }
515
688
  case "swipe": {
516
689
  if (args.direction) {
517
- deviceManager.swipeDirection(args.direction, platform);
690
+ await deviceManager.swipeDirection(args.direction, platform);
518
691
  return { text: `Swiped ${args.direction}` };
519
692
  }
520
693
  if (args.x1 !== undefined && args.y1 !== undefined &&
521
694
  args.x2 !== undefined && args.y2 !== undefined) {
522
695
  const duration = args.duration ?? 300;
523
- deviceManager.swipe(args.x1, args.y1, args.x2, args.y2, duration, platform);
696
+ await deviceManager.swipe(args.x1, args.y1, args.x2, args.y2, duration, platform);
524
697
  return { text: `Swiped from (${args.x1}, ${args.y1}) to (${args.x2}, ${args.y2})` };
525
698
  }
526
699
  return { text: "Please provide direction or x1,y1,x2,y2 coordinates" };
527
700
  }
528
701
  case "input_text": {
529
- deviceManager.inputText(args.text, platform);
702
+ await deviceManager.inputText(args.text, platform);
530
703
  return { text: `Entered text: "${args.text}"` };
531
704
  }
532
705
  case "press_key": {
533
- deviceManager.pressKey(args.key, platform);
706
+ await deviceManager.pressKey(args.key, platform);
534
707
  return { text: `Pressed key: ${args.key}` };
535
708
  }
536
709
  case "find_element": {
@@ -538,7 +711,7 @@ async function handleTool(name, args) {
538
711
  if (currentPlatform === "ios") {
539
712
  return { text: "find_element is only available for Android. Use screenshot + tap by coordinates for iOS." };
540
713
  }
541
- const xml = deviceManager.getUiHierarchy("android");
714
+ const xml = await deviceManager.getUiHierarchy("android");
542
715
  cachedElements = parseUiHierarchy(xml);
543
716
  const found = findElements(cachedElements, {
544
717
  text: args.text,
@@ -606,9 +779,135 @@ async function handleTool(name, args) {
606
779
  return { text: result };
607
780
  }
608
781
  case "get_system_info": {
609
- const info = deviceManager.getSystemInfo(platform);
782
+ const info = await deviceManager.getSystemInfo(platform);
610
783
  return { text: info };
611
784
  }
785
+ // ============ Desktop Tools ============
786
+ case "set_target": {
787
+ const target = args.target;
788
+ deviceManager.setTarget(target);
789
+ return { text: `Target set to: ${target}` };
790
+ }
791
+ case "get_target": {
792
+ const { target, status } = deviceManager.getTarget();
793
+ return { text: `Current target: ${target} (${status})` };
794
+ }
795
+ case "launch_desktop_app": {
796
+ const result = await deviceManager.launchDesktopApp({
797
+ projectPath: args.projectPath,
798
+ task: args.task,
799
+ jvmArgs: args.jvmArgs,
800
+ });
801
+ return { text: result };
802
+ }
803
+ case "stop_desktop_app": {
804
+ await deviceManager.stopDesktopApp();
805
+ return { text: "Desktop app stopped" };
806
+ }
807
+ case "get_window_info": {
808
+ if (!deviceManager.isDesktopRunning()) {
809
+ return { text: "Desktop app is not running. Use launch_desktop_app first." };
810
+ }
811
+ const windowInfo = await deviceManager.getDesktopClient().getWindowInfo();
812
+ if (windowInfo.windows.length === 0) {
813
+ return { text: "No windows found" };
814
+ }
815
+ let result = "Desktop windows:\n";
816
+ for (const w of windowInfo.windows) {
817
+ const focused = w.focused ? " [FOCUSED]" : "";
818
+ result += ` • ${w.id} - ${w.title}${focused} (${w.bounds.width}x${w.bounds.height})\n`;
819
+ }
820
+ return { text: result.trim() };
821
+ }
822
+ case "focus_window": {
823
+ if (!deviceManager.isDesktopRunning()) {
824
+ return { text: "Desktop app is not running. Use launch_desktop_app first." };
825
+ }
826
+ await deviceManager.getDesktopClient().focusWindow(args.windowId);
827
+ return { text: `Focused window: ${args.windowId}` };
828
+ }
829
+ case "resize_window": {
830
+ if (!deviceManager.isDesktopRunning()) {
831
+ return { text: "Desktop app is not running. Use launch_desktop_app first." };
832
+ }
833
+ await deviceManager.getDesktopClient().resizeWindow(args.width, args.height, args.windowId);
834
+ return { text: `Resized window to ${args.width}x${args.height}` };
835
+ }
836
+ case "get_clipboard": {
837
+ if (!deviceManager.isDesktopRunning()) {
838
+ return { text: "Desktop app is not running. Use launch_desktop_app first." };
839
+ }
840
+ const clipboardText = await deviceManager.getDesktopClient().getClipboard();
841
+ return { text: clipboardText || "(empty)" };
842
+ }
843
+ case "set_clipboard": {
844
+ if (!deviceManager.isDesktopRunning()) {
845
+ return { text: "Desktop app is not running. Use launch_desktop_app first." };
846
+ }
847
+ await deviceManager.getDesktopClient().setClipboard(args.text);
848
+ return { text: "Clipboard set" };
849
+ }
850
+ case "get_performance_metrics": {
851
+ if (!deviceManager.isDesktopRunning()) {
852
+ return { text: "Desktop app is not running. Use launch_desktop_app first." };
853
+ }
854
+ const metrics = await deviceManager.getDesktopClient().getPerformanceMetrics();
855
+ let result = "Performance metrics:\n";
856
+ result += ` Memory: ${metrics.memoryUsageMb} MB\n`;
857
+ if (metrics.cpuPercent !== undefined) {
858
+ result += ` CPU: ${metrics.cpuPercent}%\n`;
859
+ }
860
+ return { text: result.trim() };
861
+ }
862
+ // ============ Smart Android UI Tools ============
863
+ case "analyze_screen": {
864
+ const currentPlatform = platform ?? deviceManager.getCurrentPlatform();
865
+ if (currentPlatform !== "android") {
866
+ return { text: "analyze_screen is only available for Android. Use screenshot for iOS/Desktop." };
867
+ }
868
+ const xml = await deviceManager.getUiHierarchy("android");
869
+ cachedElements = parseUiHierarchy(xml);
870
+ // Get current activity for context
871
+ let activity;
872
+ try {
873
+ activity = deviceManager.getAndroidClient().getCurrentActivity();
874
+ }
875
+ catch {
876
+ // Ignore - activity is optional
877
+ }
878
+ const analysis = analyzeScreen(cachedElements, activity);
879
+ return { text: formatScreenAnalysis(analysis) };
880
+ }
881
+ case "find_and_tap": {
882
+ const currentPlatform = platform ?? deviceManager.getCurrentPlatform();
883
+ if (currentPlatform !== "android") {
884
+ return { text: "find_and_tap is only available for Android. Use tap with coordinates for iOS/Desktop." };
885
+ }
886
+ const description = args.description;
887
+ const minConfidence = args.minConfidence ?? 30;
888
+ // Get fresh UI hierarchy
889
+ const xml = await deviceManager.getUiHierarchy("android");
890
+ cachedElements = parseUiHierarchy(xml);
891
+ // Find best matching element
892
+ const match = findBestMatch(cachedElements, description);
893
+ if (!match) {
894
+ return { text: `No element found matching "${description}". Try using get_ui or analyze_screen to see available elements.` };
895
+ }
896
+ if (match.confidence < minConfidence) {
897
+ return {
898
+ text: `Best match has low confidence (${match.confidence}%): ${match.reason}\n` +
899
+ `Element: ${formatElement(match.element)}\n` +
900
+ `Set minConfidence lower or use tap with coordinates.`
901
+ };
902
+ }
903
+ // Tap the element
904
+ await deviceManager.tap(match.element.centerX, match.element.centerY, "android");
905
+ return {
906
+ text: `Tapped "${description}" (${match.confidence}% confidence)\n` +
907
+ `Match: ${match.reason}\n` +
908
+ `Coordinates: (${match.element.centerX}, ${match.element.centerY})`
909
+ };
910
+ }
612
911
  default:
613
912
  throw new Error(`Unknown tool: ${name}`);
614
913
  }
@@ -616,7 +915,7 @@ async function handleTool(name, args) {
616
915
  // Create server
617
916
  const server = new Server({
618
917
  name: "claude-mobile",
619
- version: "2.1.1",
918
+ version: "2.3.0",
620
919
  }, {
621
920
  capabilities: {
622
921
  tools: {},
@@ -673,7 +972,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
673
972
  async function main() {
674
973
  const transport = new StdioServerTransport();
675
974
  await server.connect(transport);
676
- console.error("Claude Mobile MCP server running (Android + iOS)");
975
+ console.error("Claude Mobile MCP server running (Android + iOS + Desktop)");
677
976
  }
678
977
  main().catch((error) => {
679
978
  console.error("Fatal error:", error);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAY,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,aAAa,GAEd,MAAM,oBAAoB,CAAC;AAE5B,4BAA4B;AAC5B,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;AAE1C,kDAAkD;AAClD,MAAM,aAAa,GAAG;IACpB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;IACxB,WAAW,EAAE,4DAA4D;CAC1E,CAAC;AAEF,eAAe;AACf,MAAM,KAAK,GAAW;IACpB;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,iEAAiE;QAC9E,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,GAAG,aAAa;oBAChB,WAAW,EAAE,gEAAgE;iBAC9E;aACF;SACF;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,oDAAoD;QACjE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6BAA6B;iBAC3C;gBACD,QAAQ,EAAE,aAAa;aACxB;YACD,QAAQ,EAAE,CAAC,UAAU,CAAC;SACvB;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,yGAAyG;QACtH,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE,aAAa;gBACvB,QAAQ,EAAE;oBACR,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,iEAAiE;oBAC9E,OAAO,EAAE,IAAI;iBACd;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sDAAsD;oBACnE,OAAO,EAAE,GAAG;iBACb;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wDAAwD;oBACrE,OAAO,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kCAAkC;oBAC/C,OAAO,EAAE,EAAE;iBACZ;aACF;SACF;KACF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,gJAAgJ;QAC7J,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,kDAAkD;oBAC/D,OAAO,EAAE,KAAK;iBACf;gBACD,QAAQ,EAAE,aAAa;aACxB;SACF;KACF;IACD;QACE,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,sEAAsE;QACnF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,CAAC,EAAE;oBACD,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qBAAqB;iBACnC;gBACD,CAAC,EAAE;oBACD,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qBAAqB;iBACnC;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6DAA6D;iBAC3E;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,8DAA8D;iBAC5E;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wDAAwD;iBACtE;gBACD,QAAQ,EAAE,aAAa;aACxB;SACF;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,4CAA4C;QACzD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,CAAC,EAAE;oBACD,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,cAAc;iBAC5B;gBACD,CAAC,EAAE;oBACD,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,cAAc;iBAC5B;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qCAAqC;iBACnD;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0CAA0C;oBACvD,OAAO,EAAE,IAAI;iBACd;gBACD,QAAQ,EAAE,aAAa;aACxB;SACF;KACF;IACD;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,yBAAyB;QACtC,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;oBACrC,WAAW,EAAE,iBAAiB;iBAC/B;gBACD,EAAE,EAAE;oBACF,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4BAA4B;iBAC1C;gBACD,EAAE,EAAE;oBACF,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4BAA4B;iBAC1C;gBACD,EAAE,EAAE;oBACF,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0BAA0B;iBACxC;gBACD,EAAE,EAAE;oBACF,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0BAA0B;iBACxC;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+BAA+B;oBAC5C,OAAO,EAAE,GAAG;iBACb;gBACD,QAAQ,EAAE,aAAa;aACxB;SACF;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,kDAAkD;QAC/D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,cAAc;iBAC5B;gBACD,QAAQ,EAAE,aAAa;aACxB;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,wFAAwF;QACrG,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qFAAqF;iBACnG;gBACD,QAAQ,EAAE,aAAa;aACxB;YACD,QAAQ,EAAE,CAAC,KAAK,CAAC;SAClB;KACF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,yEAAyE;QACtF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gDAAgD;iBAC9D;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,qCAAqC;iBACnD;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oBAAoB;iBAClC;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,2BAA2B;iBACzC;gBACD,QAAQ,EAAE,aAAa;aACxB;SACF;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,4DAA4D;QACzE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gGAAgG;iBAC9G;gBACD,QAAQ,EAAE,aAAa;aACxB;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2CAA2C;iBACzD;gBACD,QAAQ,EAAE,aAAa;aACxB;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,gEAAgE;QAC7E,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,4CAA4C;iBAC1D;gBACD,QAAQ,EAAE,aAAa;aACxB;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,sDAAsD;QACnE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE,aAAa;aACxB;SACF;KACF;IACD;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,8DAA8D;QAC3E,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0BAA0B;iBACxC;gBACD,QAAQ,EAAE,aAAa;aACxB;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,6BAA6B;QAC1C,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,EAAE,EAAE;oBACF,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0BAA0B;oBACvC,OAAO,EAAE,IAAI;iBACd;aACF;SACF;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,4BAA4B;QACzC,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,aAAa;iBAC3B;gBACD,QAAQ,EAAE,aAAa;aACxB;YACD,QAAQ,EAAE,CAAC,KAAK,CAAC;SAClB;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,iHAAiH;QAC9H,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE,aAAa;gBACvB,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sHAAsH;iBACpI;gBACD,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,8BAA8B;iBAC5C;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0CAA0C;oBACvD,OAAO,EAAE,GAAG;iBACb;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6BAA6B;iBAC3C;aACF;SACF;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,wCAAwC;QACrD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE,aAAa;aACxB;SACF;KACF;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,oEAAoE;QACjF,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,QAAQ,EAAE,aAAa;aACxB;SACF;KACF;CACF,CAAC;AAEF,kDAAkD;AAClD,IAAI,cAAc,GAAgB,EAAE,CAAC;AAErC,gBAAgB;AAChB,KAAK,UAAU,UAAU,CAAC,IAAY,EAAE,IAA6B;IACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAgC,CAAC;IAEvD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,EAAE,IAAI,EAAE,oGAAoG,EAAE,CAAC;YACxH,CAAC;YAED,MAAM,YAAY,GAAG,aAAa,CAAC,eAAe,EAAE,CAAC;YAErD,oBAAoB;YACpB,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;YAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC;YAEtD,IAAI,MAAM,GAAG,sBAAsB,CAAC;YAEpC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,cAAc,CAAC;gBACzB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACxB,MAAM,MAAM,GAAG,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5D,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;oBACrD,MAAM,IAAI,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,KAAK,IAAI,MAAM,IAAI,CAAC;gBACvE,CAAC;YACH,CAAC;YAED,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnB,MAAM,IAAI,UAAU,CAAC;gBACrB,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;oBACpB,MAAM,MAAM,GAAG,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5D,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;oBACtD,MAAM,IAAI,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,KAAK,IAAI,MAAM,IAAI,CAAC;gBACvE,CAAC;YACH,CAAC;YAED,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACjC,CAAC;QAED,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,QAAkB,EAAE,QAAQ,CAAC,CAAC;YAC1E,OAAO,EAAE,IAAI,EAAE,kBAAkB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;QACtF,CAAC;QAED,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC;YACzC,MAAM,OAAO,GAAG;gBACd,QAAQ,EAAE,IAAI,CAAC,QAA8B;gBAC7C,SAAS,EAAE,IAAI,CAAC,SAA+B;gBAC/C,OAAO,EAAE,IAAI,CAAC,OAA6B;aAC5C,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC3E,OAAO;gBACL,KAAK,EAAE;oBACL,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B;aACF,CAAC;QACJ,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,eAAe,GAAG,QAAQ,IAAI,aAAa,CAAC,kBAAkB,EAAE,CAAC;YAEvE,IAAI,eAAe,KAAK,KAAK,EAAE,CAAC;gBAC9B,OAAO,EAAE,IAAI,EAAE,uHAAuH,EAAE,CAAC;YAC3I,CAAC;YAED,MAAM,GAAG,GAAG,aAAa,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACnD,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YACvC,MAAM,IAAI,GAAG,YAAY,CAAC,cAAc,EAAE;gBACxC,OAAO,EAAE,IAAI,CAAC,OAAkB;aACjC,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxB,CAAC;QAED,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,IAAI,CAAC,GAAuB,IAAI,CAAC,CAAW,CAAC;YAC7C,IAAI,CAAC,GAAuB,IAAI,CAAC,CAAW,CAAC;YAC7C,MAAM,eAAe,GAAG,QAAQ,IAAI,aAAa,CAAC,kBAAkB,EAAE,CAAC;YAEvE,oDAAoD;YACpD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAe,CAAC;gBACjC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAChC,MAAM,GAAG,GAAG,aAAa,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;oBACpD,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBACzC,CAAC;gBACD,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;gBACrD,IAAI,CAAC,EAAE,EAAE,CAAC;oBACR,OAAO,EAAE,IAAI,EAAE,sBAAsB,GAAG,+BAA+B,EAAE,CAAC;gBAC5E,CAAC;gBACD,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;gBACf,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;YACjB,CAAC;YAED,4CAA4C;YAC5C,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBACpE,MAAM,GAAG,GAAG,aAAa,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBACpD,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBAEvC,IAAI,KAAK,GAAgB,EAAE,CAAC;gBAC5B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,KAAK,GAAG,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,IAAc,CAAC,CAAC;gBAC1D,CAAC;qBAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC3B,KAAK,GAAG,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,UAAoB,CAAC,CAAC;gBACtE,CAAC;gBAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvB,OAAO,EAAE,IAAI,EAAE,sBAAsB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;gBACxE,CAAC;gBAED,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;gBACnD,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;gBACnB,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;YACrB,CAAC;YAED,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBACvC,OAAO,EAAE,IAAI,EAAE,4DAA4D,EAAE,CAAC;YAChF,CAAC;YAED,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;YAClC,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC5C,CAAC;QAED,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,GAAuB,IAAI,CAAC,CAAW,CAAC;YAC7C,IAAI,CAAC,GAAuB,IAAI,CAAC,CAAW,CAAC;YAC7C,MAAM,QAAQ,GAAI,IAAI,CAAC,QAAmB,IAAI,IAAI,CAAC;YACnD,MAAM,eAAe,GAAG,QAAQ,IAAI,aAAa,CAAC,kBAAkB,EAAE,CAAC;YAEvE,IAAI,IAAI,CAAC,IAAI,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBAC/C,MAAM,GAAG,GAAG,aAAa,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBACpD,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;gBACvC,MAAM,KAAK,GAAG,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,IAAc,CAAC,CAAC;gBAC9D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvB,OAAO,EAAE,IAAI,EAAE,sBAAsB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBACrD,CAAC;gBACD,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACrB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACvB,CAAC;YAED,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBACvC,OAAO,EAAE,IAAI,EAAE,wCAAwC,EAAE,CAAC;YAC5D,CAAC;YAED,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAClD,OAAO,EAAE,IAAI,EAAE,oBAAoB,CAAC,KAAK,CAAC,SAAS,QAAQ,IAAI,EAAE,CAAC;QACpE,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,SAA6C,EAAE,QAAQ,CAAC,CAAC;gBAC3F,OAAO,EAAE,IAAI,EAAE,UAAU,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YAC9C,CAAC;YAED,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS;gBAC9C,IAAI,CAAC,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;gBACnD,MAAM,QAAQ,GAAI,IAAI,CAAC,QAAmB,IAAI,GAAG,CAAC;gBAClD,aAAa,CAAC,KAAK,CACjB,IAAI,CAAC,EAAY,EACjB,IAAI,CAAC,EAAY,EACjB,IAAI,CAAC,EAAY,EACjB,IAAI,CAAC,EAAY,EACjB,QAAQ,EACR,QAAQ,CACT,CAAC;gBACF,OAAO,EAAE,IAAI,EAAE,gBAAgB,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,SAAS,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;YACtF,CAAC;YAED,OAAO,EAAE,IAAI,EAAE,qDAAqD,EAAE,CAAC;QACzE,CAAC;QAED,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,IAAc,EAAE,QAAQ,CAAC,CAAC;YACvD,OAAO,EAAE,IAAI,EAAE,kBAAkB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QAClD,CAAC;QAED,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAa,EAAE,QAAQ,CAAC,CAAC;YACrD,OAAO,EAAE,IAAI,EAAE,gBAAgB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC9C,CAAC;QAED,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,eAAe,GAAG,QAAQ,IAAI,aAAa,CAAC,kBAAkB,EAAE,CAAC;YAEvE,IAAI,eAAe,KAAK,KAAK,EAAE,CAAC;gBAC9B,OAAO,EAAE,IAAI,EAAE,0FAA0F,EAAE,CAAC;YAC9G,CAAC;YAED,MAAM,GAAG,GAAG,aAAa,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACpD,cAAc,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAEvC,MAAM,KAAK,GAAG,YAAY,CAAC,cAAc,EAAE;gBACzC,IAAI,EAAE,IAAI,CAAC,IAA0B;gBACrC,UAAU,EAAE,IAAI,CAAC,UAAgC;gBACjD,SAAS,EAAE,IAAI,CAAC,SAA+B;gBAC/C,SAAS,EAAE,IAAI,CAAC,SAAgC;aACjD,CAAC,CAAC;YAEH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,EAAE,IAAI,EAAE,qCAAqC,EAAE,CAAC;YACzD,CAAC;YAED,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9D,OAAO,EAAE,IAAI,EAAE,SAAS,KAAK,CAAC,MAAM,iBAAiB,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;QACnG,CAAC;QAED,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,OAAiB,EAAE,QAAQ,CAAC,CAAC;YACzE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC1B,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,OAAiB,EAAE,QAAQ,CAAC,CAAC;YACxD,OAAO,EAAE,IAAI,EAAE,YAAY,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAC9C,CAAC;QAED,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,IAAc,EAAE,QAAQ,CAAC,CAAC;YACvE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC1B,CAAC;QAED,KAAK,sBAAsB,CAAC,CAAC,CAAC;YAC5B,MAAM,eAAe,GAAG,QAAQ,IAAI,aAAa,CAAC,kBAAkB,EAAE,CAAC;YAEvE,IAAI,eAAe,KAAK,KAAK,EAAE,CAAC;gBAC9B,OAAO,EAAE,IAAI,EAAE,qDAAqD,EAAE,CAAC;YACzE,CAAC;YAED,MAAM,QAAQ,GAAG,aAAa,CAAC,gBAAgB,EAAE,CAAC,kBAAkB,EAAE,CAAC;YACvE,OAAO,EAAE,IAAI,EAAE,qBAAqB,QAAQ,EAAE,EAAE,CAAC;QACnD,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,OAAiB,EAAE,QAAQ,CAAC,CAAC;YACrE,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,aAAa,EAAE,CAAC;QAC3C,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,EAAE,GAAI,IAAI,CAAC,EAAa,IAAI,IAAI,CAAC;YACvC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;YACtD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACpC,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,eAAe,GAAG,QAAQ,IAAI,aAAa,CAAC,kBAAkB,EAAE,CAAC;YAEvE,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBAClC,aAAa,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,8CAA8C,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YACpG,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAa,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC7C,CAAC;QAED,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC;gBACjC,QAAQ;gBACR,KAAK,EAAE,IAAI,CAAC,KAA2B;gBACvC,GAAG,EAAE,IAAI,CAAC,GAAyB;gBACnC,KAAK,EAAG,IAAI,CAAC,KAAgB,IAAI,GAAG;gBACpC,OAAO,EAAE,IAAI,CAAC,OAA6B;aAC5C,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,WAAW,EAAE,CAAC;QACvC,CAAC;QAED,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACjD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC1B,CAAC;QAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,MAAM,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACnD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxB,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,gBAAgB;AAChB,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,eAAe;IACrB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAC;AAEF,2BAA2B;AAC3B,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;IAC1D,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEH,2BAA2B;AAC3B,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAElD,wBAAwB;QACxB,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;YACvE,MAAM,GAAG,GAAI,MAAwD,CAAC,KAAK,CAAC;YAC5E,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,OAAO;wBACb,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;qBACvB;iBACF;aACF,CAAC;QACJ,CAAC;QAED,uBAAuB;QACvB,MAAM,IAAI,GAAG,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,IAAI,MAAM;YAC5E,CAAC,CAAE,MAA2B,CAAC,IAAI;YACnC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE3B,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI;iBACL;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,UAAU,KAAK,CAAC,OAAO,EAAE;iBAChC;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe;AACf,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;AACpE,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -2,11 +2,13 @@ export interface CompressOptions {
2
2
  maxWidth?: number;
3
3
  maxHeight?: number;
4
4
  quality?: number;
5
+ maxSizeBytes?: number;
5
6
  }
6
7
  /**
7
8
  * Compress PNG image buffer
8
9
  * - Resize if larger than max dimensions
9
10
  * - Convert to JPEG with specified quality
11
+ * - Iteratively reduce quality if still too large
10
12
  * Returns base64 encoded JPEG
11
13
  */
12
14
  export declare function compressScreenshot(pngBuffer: Buffer, options?: CompressOptions): Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/utils/image.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAQD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAgC7C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAK9E"}
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../src/utils/image.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AASD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA0D7C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAK9E"}
@@ -3,11 +3,13 @@ const DEFAULT_OPTIONS = {
3
3
  maxWidth: 800, // Safe for API limit of 2000px
4
4
  maxHeight: 1400, // Safe for API limit of 2000px
5
5
  quality: 70,
6
+ maxSizeBytes: 1024 * 1024, // 1MB max for base64 (safe margin for API)
6
7
  };
7
8
  /**
8
9
  * Compress PNG image buffer
9
10
  * - Resize if larger than max dimensions
10
11
  * - Convert to JPEG with specified quality
12
+ * - Iteratively reduce quality if still too large
11
13
  * Returns base64 encoded JPEG
12
14
  */
13
15
  export async function compressScreenshot(pngBuffer, options = {}) {
@@ -29,8 +31,29 @@ export async function compressScreenshot(pngBuffer, options = {}) {
29
31
  if (newWidth !== width || newHeight !== height) {
30
32
  image.resize({ w: newWidth, h: newHeight });
31
33
  }
32
- // Convert to JPEG buffer
33
- const jpegBuffer = await image.getBuffer("image/jpeg", { quality: opts.quality });
34
+ // Convert to JPEG with iterative quality reduction if needed
35
+ let quality = opts.quality;
36
+ let jpegBuffer;
37
+ let attempts = 0;
38
+ const maxAttempts = 5;
39
+ do {
40
+ jpegBuffer = await image.getBuffer("image/jpeg", { quality });
41
+ // Check if size is within limit
42
+ if (jpegBuffer.length <= opts.maxSizeBytes) {
43
+ break;
44
+ }
45
+ // Reduce quality and try again
46
+ quality = Math.max(20, quality - 15);
47
+ attempts++;
48
+ } while (attempts < maxAttempts);
49
+ // If still too large after quality reduction, resize further
50
+ if (jpegBuffer.length > opts.maxSizeBytes) {
51
+ const scaleFactor = Math.sqrt(opts.maxSizeBytes / jpegBuffer.length) * 0.9;
52
+ const smallerWidth = Math.round(newWidth * scaleFactor);
53
+ const smallerHeight = Math.round(newHeight * scaleFactor);
54
+ image.resize({ w: smallerWidth, h: smallerHeight });
55
+ jpegBuffer = await image.getBuffer("image/jpeg", { quality: 50 });
56
+ }
34
57
  return {
35
58
  data: jpegBuffer.toString("base64"),
36
59
  mimeType: "image/jpeg",
@@ -1 +1 @@
1
- {"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/utils/image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAQ5B,MAAM,eAAe,GAAoB;IACvC,QAAQ,EAAE,GAAG,EAAK,+BAA+B;IACjD,SAAS,EAAE,IAAI,EAAG,+BAA+B;IACjD,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,SAAiB,EACjB,UAA2B,EAAE;IAE7B,MAAM,IAAI,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;IAEhD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B,oDAAoD;IACpD,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,SAAS,GAAG,MAAM,CAAC;IAEvB,IAAI,KAAK,GAAG,IAAI,CAAC,QAAS,IAAI,MAAM,GAAG,IAAI,CAAC,SAAU,EAAE,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAS,GAAG,KAAK,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAU,GAAG,MAAM,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAEhD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;QACrC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,mBAAmB;IACnB,IAAI,QAAQ,KAAK,KAAK,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QAC/C,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,yBAAyB;IACzB,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAQ,EAAE,CAAC,CAAC;IAEnF,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACnC,QAAQ,EAAE,YAAY;KACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC/B,QAAQ,EAAE,WAAW;KACtB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/utils/image.ts"],"names":[],"mappings":"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"}