peachsim 0.1.660 → 0.1.661

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +10 -15
  2. package/cli/drivers/linux-browser-libs.lock.json +1088 -0
  3. package/cli/drivers/linux-browser-libs.ts +182 -0
  4. package/cli/drivers/playwright-provisioning.ts +20 -98
  5. package/cli/drivers/playwright-sim-host.ts +9 -0
  6. package/cli/drivers/playwright.ts +2 -1
  7. package/dist-lib/agent-daemon-client.cjs +1 -1
  8. package/dist-lib/agent-events.cjs +1 -1
  9. package/dist-lib/agent-identity.cjs +1 -1
  10. package/dist-lib/agent-sessions.cjs +1 -1
  11. package/dist-lib/attached-projects.cjs +1 -1
  12. package/dist-lib/auth/shared-session.cjs +1 -1
  13. package/dist-lib/backend-origin.cjs +18 -1
  14. package/dist-lib/beta.cjs +1 -1
  15. package/dist-lib/beta.mjs +1 -1
  16. package/dist-lib/bridge-constants.cjs +1 -1
  17. package/dist-lib/bridge-contract-input.cjs +1 -1
  18. package/dist-lib/bridge-contract-input.mjs +1 -1
  19. package/dist-lib/bridge-contract.cjs +1 -1
  20. package/dist-lib/bridge-contract.mjs +1 -1
  21. package/dist-lib/capture-contract.cjs +1 -1
  22. package/dist-lib/capture-contract.mjs +1 -1
  23. package/dist-lib/cli-constants.cjs +1 -1
  24. package/dist-lib/cloud-contract.cjs +1 -1
  25. package/dist-lib/cloud-contract.mjs +1 -1
  26. package/dist-lib/cloud-test-args.cjs +1 -1
  27. package/dist-lib/cloud-test-args.mjs +1 -1
  28. package/dist-lib/cloud.cjs +1 -1
  29. package/dist-lib/cloud.mjs +1 -1
  30. package/dist-lib/config.cjs +1 -1
  31. package/dist-lib/detox/index.cjs +1 -1
  32. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  33. package/dist-lib/home-paths.cjs +1 -1
  34. package/dist-lib/host/bridge-host.cjs +45 -41
  35. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  36. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  37. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  38. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  39. package/dist-lib/host/websocket-proxy.cjs +1 -1
  40. package/dist-lib/index.cjs +1 -1
  41. package/dist-lib/jump-to-source-babel.cjs +1 -1
  42. package/dist-lib/jump-to-source-native.cjs +1 -1
  43. package/dist-lib/kotlin-host.cjs +4 -3
  44. package/dist-lib/menu.cjs +1 -1
  45. package/dist-lib/menu.mjs +1 -1
  46. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  47. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  48. package/dist-lib/metro-production-bundle.cjs +1 -1
  49. package/dist-lib/metro-production-bundle.mjs +1 -1
  50. package/dist-lib/metro.cjs +1 -1
  51. package/dist-lib/native-app-identity.cjs +1 -1
  52. package/dist-lib/native-app-identity.mjs +1 -1
  53. package/dist-lib/plist.cjs +1 -1
  54. package/dist-lib/plist.mjs +1 -1
  55. package/dist-lib/profiles.cjs +1 -1
  56. package/dist-lib/public-brand.cjs +1 -1
  57. package/dist-lib/react-native-host-modules.cjs +1 -1
  58. package/dist-lib/react-native-host-modules.mjs +1 -1
  59. package/dist-lib/render-mode.cjs +1 -1
  60. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  61. package/dist-lib/sdk.cjs +1 -1
  62. package/dist-lib/sdk.mjs +1 -1
  63. package/dist-lib/skills.cjs +1332 -177
  64. package/dist-lib/swift-compile.cjs +1 -1
  65. package/dist-lib/swift-compile.mjs +1 -1
  66. package/dist-lib/swift-package.cjs +1 -1
  67. package/dist-lib/swift-package.mjs +1 -1
  68. package/dist-lib/swift-submit.cjs +1 -1
  69. package/dist-lib/swift-submit.mjs +1 -1
  70. package/dist-lib/swift.cjs +1 -1
  71. package/dist-lib/vite-swift.cjs +1 -1
  72. package/dist-lib/vite.cjs +1 -1
  73. package/kotlin/AppSources/android/view/Window.kt +15 -9
  74. package/kotlin/AppSources/dev/peach/app/PeachApp.kt +29 -16
  75. package/package.json +2 -1
  76. package/src/android-theme.ts +14 -0
  77. package/src/backend-origin.ts +25 -0
  78. package/src/host/bridge-host.ts +24 -37
  79. package/src/kotlin-app.ts +22 -4
  80. package/src/kotlin-host.ts +3 -2
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.660 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.661 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -5072,7 +5072,7 @@ var init_supported_native_packages = __esm({
5072
5072
  "react-native-ota-hot-update",
5073
5073
  // seam
5074
5074
  "react-native-pager-view",
5075
- // preset+visual-proof
5075
+ // visual-proof
5076
5076
  "react-native-palette-full",
5077
5077
  // seam
5078
5078
  "react-native-pdf",
@@ -5194,7 +5194,7 @@ var init_supported_native_packages = __esm({
5194
5194
  "react-native-system-setting",
5195
5195
  // seam
5196
5196
  "react-native-teleport",
5197
- // preset+coverage
5197
+ // coverage
5198
5198
  "react-native-testfairy",
5199
5199
  // seam+coverage
5200
5200
  "react-native-text-input-mask",
@@ -21465,11 +21465,10 @@ async function installVerifiedTarball(tarball) {
21465
21465
  const { url, digest, destDir, installedMarker, label } = tarball;
21466
21466
  const downloadDir = import_node_fs7.default.mkdtempSync(import_node_path7.default.join(import_node_os2.default.tmpdir(), "runtime-delivery-download-"));
21467
21467
  const archivePath = import_node_path7.default.join(downloadDir, "archive.tar.gz");
21468
- const tmpDir = import_node_path7.default.join(
21469
- import_node_path7.default.dirname(destDir),
21470
- `.installing-${import_node_path7.default.basename(destDir)}-${process.pid}`
21468
+ import_node_fs7.default.mkdirSync(import_node_path7.default.dirname(destDir), { recursive: true });
21469
+ const tmpDir = import_node_fs7.default.mkdtempSync(
21470
+ import_node_path7.default.join(import_node_path7.default.dirname(destDir), `.installing-${import_node_path7.default.basename(destDir)}-`)
21471
21471
  );
21472
- import_node_fs7.default.rmSync(tmpDir, { recursive: true, force: true });
21473
21472
  try {
21474
21473
  await downloadToFile(url, archivePath);
21475
21474
  const actual = await digestFile(archivePath, digest.algorithm, digest.encoding);
@@ -21478,20 +21477,38 @@ async function installVerifiedTarball(tarball) {
21478
21477
  `${digest.algorithm} mismatch for ${label}: expected ${digest.value}, actual ${actual}`
21479
21478
  );
21480
21479
  }
21481
- import_node_fs7.default.mkdirSync(tmpDir, { recursive: true });
21482
21480
  await extractTarball(archivePath, tmpDir, tarball.stripComponents ?? 0);
21483
21481
  if (!import_node_fs7.default.existsSync(import_node_path7.default.join(tmpDir, installedMarker))) {
21484
21482
  throw new Error(`extracted tarball for ${label} is missing ${installedMarker}`);
21485
21483
  }
21486
- import_node_fs7.default.rmSync(destDir, { recursive: true, force: true });
21487
- import_node_fs7.default.renameSync(tmpDir, destDir);
21488
- } catch (err) {
21489
- import_node_fs7.default.rmSync(tmpDir, { recursive: true, force: true });
21490
- throw err;
21484
+ try {
21485
+ import_node_fs7.default.renameSync(tmpDir, destDir);
21486
+ } catch (err) {
21487
+ if (!isErrnoCode(err, "ENOTEMPTY", "EEXIST")) throw err;
21488
+ const aside = `${tmpDir}-replaced`;
21489
+ try {
21490
+ import_node_fs7.default.renameSync(destDir, aside);
21491
+ } catch (moveErr) {
21492
+ if (!isErrnoCode(moveErr, "ENOENT")) throw moveErr;
21493
+ }
21494
+ try {
21495
+ import_node_fs7.default.renameSync(tmpDir, destDir);
21496
+ } catch (landErr) {
21497
+ if (!isErrnoCode(landErr, "ENOTEMPTY", "EEXIST") || !import_node_fs7.default.existsSync(import_node_path7.default.join(destDir, installedMarker))) {
21498
+ throw landErr;
21499
+ }
21500
+ } finally {
21501
+ import_node_fs7.default.rmSync(aside, { recursive: true, force: true });
21502
+ }
21503
+ }
21491
21504
  } finally {
21505
+ import_node_fs7.default.rmSync(tmpDir, { recursive: true, force: true });
21492
21506
  import_node_fs7.default.rmSync(downloadDir, { recursive: true, force: true });
21493
21507
  }
21494
21508
  }
21509
+ function isErrnoCode(err, ...codes) {
21510
+ return err instanceof Error && "code" in err && codes.includes(String(err.code));
21511
+ }
21495
21512
  async function downloadToFile(url, destPath) {
21496
21513
  const res = await fetch(url);
21497
21514
  if (!res.ok || !res.body) {
@@ -29462,24 +29479,7 @@ var init_bridge_host = __esm({
29462
29479
  this.wsIsAlive.set(ws, true);
29463
29480
  });
29464
29481
  this.agentHost.registerSocket(ws);
29465
- if (role === "sim") {
29466
- sim = {
29467
- id: this.allocateSimId(),
29468
- ws,
29469
- origin,
29470
- connectedAt: Date.now(),
29471
- lastSeenAt: Date.now(),
29472
- lastActiveAt: 0,
29473
- recentActions: []
29474
- };
29475
- this.sims.set(sim.id, sim);
29476
- this.writeConnectedRuntimeSnapshot();
29477
- if (this.shouldPromoteSim(sim)) {
29478
- this.primarySimId = sim.id;
29479
- }
29480
- this.broadcastSimAssignments();
29481
- this.broadcastSimClientStates();
29482
- } else {
29482
+ if (role === "cli") {
29483
29483
  const fallbackKey = `ws-${this.nextCliFallbackId++}`;
29484
29484
  this.cliIdentityKeyBySocket.set(ws, fallbackKey);
29485
29485
  }
@@ -29560,25 +29560,29 @@ var init_bridge_host = __esm({
29560
29560
  }
29561
29561
  return;
29562
29562
  }
29563
- if (role === "sim" && msg.type === "bridge:hello" && sim && !sim.url) {
29564
- const provisionalId = sim.id;
29565
- this.sims.delete(provisionalId);
29566
- if (this.primarySimId === provisionalId) {
29567
- this.primarySimId = this.getOpenSim()?.id ?? null;
29568
- }
29569
- sim = null;
29563
+ if (role === "sim" && msg.type === "bridge:hello" && !sim) {
29570
29564
  role = "cli";
29571
29565
  this.cliIdentityKeyBySocket.set(ws, `ws-${this.nextCliFallbackId++}`);
29572
- this.writeConnectedRuntimeSnapshot();
29573
- this.broadcastSimAssignments();
29574
- this.broadcastSimClientStates();
29575
29566
  }
29576
29567
  if (role === "sim") {
29577
29568
  if (sim) {
29578
29569
  sim.lastSeenAt = Date.now();
29579
29570
  }
29580
- if (msg.type === "bridge:register" && sim) {
29571
+ if (msg.type === "bridge:register") {
29581
29572
  const registration = msg;
29573
+ const firstRegistration = !sim;
29574
+ if (!sim) {
29575
+ sim = {
29576
+ id: this.allocateSimId(),
29577
+ ws,
29578
+ origin,
29579
+ connectedAt: Date.now(),
29580
+ lastSeenAt: Date.now(),
29581
+ lastActiveAt: 0,
29582
+ recentActions: []
29583
+ };
29584
+ this.sims.set(sim.id, sim);
29585
+ }
29582
29586
  const restored = this.tryRestoreSimId(sim, registration.simId);
29583
29587
  sim.url = registration.url;
29584
29588
  sim.title = registration.title;
@@ -29592,7 +29596,7 @@ var init_bridge_host = __esm({
29592
29596
  }
29593
29597
  const reElected = this.primarySimId !== sim.id && this.shouldPromoteSim(sim);
29594
29598
  if (reElected) this.primarySimId = sim.id;
29595
- if (restored || reElected) {
29599
+ if (firstRegistration || restored || reElected) {
29596
29600
  this.broadcastSimAssignments();
29597
29601
  this.broadcastSimClientStates();
29598
29602
  }
@@ -34436,6 +34440,1241 @@ var init_playwright_core_pin = __esm({
34436
34440
  }
34437
34441
  });
34438
34442
 
34443
+ // cli/commands/inspect/env.ts
34444
+ function isAgentEnv(env = process.env) {
34445
+ if (env.PEACH_AGENT === "0") return false;
34446
+ for (const name2 of AGENT_ENV_VARS) {
34447
+ const v = env[name2];
34448
+ if (v && v.trim() && v !== "0") return true;
34449
+ }
34450
+ return false;
34451
+ }
34452
+ var AGENT_ENV_VARS;
34453
+ var init_env = __esm({
34454
+ "cli/commands/inspect/env.ts"() {
34455
+ "use strict";
34456
+ AGENT_ENV_VARS = [
34457
+ "PEACH_AGENT",
34458
+ "PEACH_CLI_IDENTITY",
34459
+ "CLAUDECODE",
34460
+ "CLAUDE_CODE_ENTRYPOINT",
34461
+ "CLAUDE_CODE_SESSION_ID",
34462
+ "CODEX_THREAD_ID",
34463
+ "CURSOR_TRACE_ID",
34464
+ "AIDER_MODEL"
34465
+ ];
34466
+ }
34467
+ });
34468
+
34469
+ // cli/cli-update.ts
34470
+ var DEFAULT_CLI_RELEASE_ORIGIN, CLI_UPDATE_CHECK_INTERVAL_MS, CLI_UPDATE_NOTIFICATION_COOLDOWN_MS;
34471
+ var init_cli_update = __esm({
34472
+ "cli/cli-update.ts"() {
34473
+ "use strict";
34474
+ init_src();
34475
+ init_automatic_update_policy();
34476
+ init_cli_version();
34477
+ init_home_paths();
34478
+ init_env();
34479
+ DEFAULT_CLI_RELEASE_ORIGIN = "https://r2.rnxsim.com/rnx-cli";
34480
+ CLI_UPDATE_CHECK_INTERVAL_MS = 20 * 60 * 60 * 1e3;
34481
+ CLI_UPDATE_NOTIFICATION_COOLDOWN_MS = 7 * 24 * 60 * 60 * 1e3;
34482
+ }
34483
+ });
34484
+
34485
+ // cli/drivers/linux-browser-libs.lock.json
34486
+ var linux_browser_libs_lock_default;
34487
+ var init_linux_browser_libs_lock = __esm({
34488
+ "cli/drivers/linux-browser-libs.lock.json"() {
34489
+ linux_browser_libs_lock_default = {
34490
+ id: "c7f1978ea55bd63f",
34491
+ suite: "focal",
34492
+ arches: {
34493
+ x64: [
34494
+ {
34495
+ name: "fontconfig-config",
34496
+ version: "2.13.1-2ubuntu3",
34497
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/f/fontconfig/fontconfig-config_2.13.1-2ubuntu3_all.deb",
34498
+ sha256: "80b090925c52aff3f4681b361c9823b041c42c57cca58b5baf2541bafc25fed9",
34499
+ size: 28780
34500
+ },
34501
+ {
34502
+ name: "libasound2",
34503
+ version: "1.2.2-2.1ubuntu2.5",
34504
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/a/alsa-lib/libasound2_1.2.2-2.1ubuntu2.5_amd64.deb",
34505
+ sha256: "5ea02b4590b210bb2d4a180007184c10e8941d0ee1f025361950b0d0084578a6",
34506
+ size: 334776
34507
+ },
34508
+ {
34509
+ name: "libasound2-data",
34510
+ version: "1.2.2-2.1ubuntu2.5",
34511
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/a/alsa-lib/libasound2-data_1.2.2-2.1ubuntu2.5_all.deb",
34512
+ sha256: "d740795494b8259fdb359f9343f224dabb7cb4a63511e13ccccc5ad2d96ffa95",
34513
+ size: 20104
34514
+ },
34515
+ {
34516
+ name: "libatk-bridge2.0-0",
34517
+ version: "2.34.2-0ubuntu2~20.04.1",
34518
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.34.2-0ubuntu2~20.04.1_amd64.deb",
34519
+ sha256: "2fcfc11cdb476274e1c11f0321c2dcabe97186dab45eb9ca91ee9dc1f6906603",
34520
+ size: 58212
34521
+ },
34522
+ {
34523
+ name: "libatk1.0-0",
34524
+ version: "2.35.1-1ubuntu2",
34525
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/a/atk1.0/libatk1.0-0_2.35.1-1ubuntu2_amd64.deb",
34526
+ sha256: "3bfb6d72e35771481be152dcc96d39b899d6ff246c995658c181114357f46656",
34527
+ size: 45520
34528
+ },
34529
+ {
34530
+ name: "libatk1.0-data",
34531
+ version: "2.35.1-1ubuntu2",
34532
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/a/atk1.0/libatk1.0-data_2.35.1-1ubuntu2_all.deb",
34533
+ sha256: "ded987a2b50f0fa9bfd04fba60ad817cb169fb4066f7bc22c174fcae1e2f1aad",
34534
+ size: 2964
34535
+ },
34536
+ {
34537
+ name: "libatspi2.0-0",
34538
+ version: "2.36.0-2",
34539
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/a/at-spi2-core/libatspi2.0-0_2.36.0-2_amd64.deb",
34540
+ sha256: "482f7e0c7081e9fd16b7cd71d3fc937271b1f722fdcfb0c40f934e108e9fdb80",
34541
+ size: 64244
34542
+ },
34543
+ {
34544
+ name: "libavahi-client3",
34545
+ version: "0.7-4ubuntu7.3",
34546
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-client3_0.7-4ubuntu7.3_amd64.deb",
34547
+ sha256: "965af1f0815d67f1989d5ed48e49b6339285b7ba1284bd80b01bf1dd141eca67",
34548
+ size: 25500
34549
+ },
34550
+ {
34551
+ name: "libavahi-common-data",
34552
+ version: "0.7-4ubuntu7.3",
34553
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-common-data_0.7-4ubuntu7.3_amd64.deb",
34554
+ sha256: "6a49402d2d53758a180030e4de03fb09de79067a8c649d6015016e05c249a09e",
34555
+ size: 21448
34556
+ },
34557
+ {
34558
+ name: "libavahi-common3",
34559
+ version: "0.7-4ubuntu7.3",
34560
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/a/avahi/libavahi-common3_0.7-4ubuntu7.3_amd64.deb",
34561
+ sha256: "8ace707dd8bdc0dcb6c09f136ad6e081dfd782e4316e61dc719afd0f4a5092bb",
34562
+ size: 21888
34563
+ },
34564
+ {
34565
+ name: "libblkid1",
34566
+ version: "2.34-0.1ubuntu9.6",
34567
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/u/util-linux/libblkid1_2.34-0.1ubuntu9.6_amd64.deb",
34568
+ sha256: "d34bb89928706ad665766a45ab48841cff05ef63fe488f74b2c477a75172fca2",
34569
+ size: 136756
34570
+ },
34571
+ {
34572
+ name: "libbsd0",
34573
+ version: "0.10.0-1",
34574
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libb/libbsd/libbsd0_0.10.0-1_amd64.deb",
34575
+ sha256: "4f668025fe923a372eb7fc368d6769fcfff6809233d48fd20fc072917cd82e60",
34576
+ size: 45356
34577
+ },
34578
+ {
34579
+ name: "libcairo2",
34580
+ version: "1.16.0-4ubuntu1",
34581
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/c/cairo/libcairo2_1.16.0-4ubuntu1_amd64.deb",
34582
+ sha256: "f01ae3e61485742b5b72e6195d45204767e64f934bbe96f6c639d26b5114513d",
34583
+ size: 583488
34584
+ },
34585
+ {
34586
+ name: "libcom-err2",
34587
+ version: "1.45.5-2ubuntu1.2",
34588
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/e/e2fsprogs/libcom-err2_1.45.5-2ubuntu1.2_amd64.deb",
34589
+ sha256: "248a8d03de9fdb926bae68748e9b7715598759a2d3cd0a375e3a96764997b48b",
34590
+ size: 9580
34591
+ },
34592
+ {
34593
+ name: "libcups2",
34594
+ version: "2.3.1-9ubuntu1.9",
34595
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/c/cups/libcups2_2.3.1-9ubuntu1.9_amd64.deb",
34596
+ sha256: "9f8f67dcb2beb5ef1e78913310c67797733373b0e9e839c33d98bb6dbf346314",
34597
+ size: 233504
34598
+ },
34599
+ {
34600
+ name: "libdatrie1",
34601
+ version: "0.2.12-3",
34602
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libd/libdatrie/libdatrie1_0.2.12-3_amd64.deb",
34603
+ sha256: "521d1e41b2362abd51b65e5889529ffe0f83442498b81fd2628c44ed43c7abb6",
34604
+ size: 18692
34605
+ },
34606
+ {
34607
+ name: "libdbus-1-3",
34608
+ version: "1.12.16-2ubuntu2.3",
34609
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/d/dbus/libdbus-1-3_1.12.16-2ubuntu2.3_amd64.deb",
34610
+ sha256: "624e7f78a22f483477bf806c3c4278ce3d5c6707d1176a646baf1dfc453a0982",
34611
+ size: 179056
34612
+ },
34613
+ {
34614
+ name: "libdrm-common",
34615
+ version: "2.4.107-8ubuntu1~20.04.2",
34616
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libd/libdrm/libdrm-common_2.4.107-8ubuntu1~20.04.2_all.deb",
34617
+ sha256: "52bdffa2e90751b316978799650bb3e8c373c238cc71775ee596069241847e08",
34618
+ size: 5396
34619
+ },
34620
+ {
34621
+ name: "libdrm2",
34622
+ version: "2.4.107-8ubuntu1~20.04.2",
34623
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libd/libdrm/libdrm2_2.4.107-8ubuntu1~20.04.2_amd64.deb",
34624
+ sha256: "9b01d73313841abe8e3f24c2715edced675fbe329bbd10be912a5b135cd51fb6",
34625
+ size: 34112
34626
+ },
34627
+ {
34628
+ name: "libexpat1",
34629
+ version: "2.2.9-1ubuntu0.8",
34630
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/e/expat/libexpat1_2.2.9-1ubuntu0.8_amd64.deb",
34631
+ sha256: "021d56318dba1f753dc8284623161fad3051e4ec2f69ad84c16d649b1ac7d0c0",
34632
+ size: 75552
34633
+ },
34634
+ {
34635
+ name: "libffi7",
34636
+ version: "3.3-4",
34637
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libf/libffi/libffi7_3.3-4_amd64.deb",
34638
+ sha256: "4584aa8fef1bf5086168ce2f7078cd2ebd78fdc4cc0d86d958d795d4e0b0f50d",
34639
+ size: 19688
34640
+ },
34641
+ {
34642
+ name: "libfontconfig1",
34643
+ version: "2.13.1-2ubuntu3",
34644
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/f/fontconfig/libfontconfig1_2.13.1-2ubuntu3_amd64.deb",
34645
+ sha256: "7ca5523936a9b8e42f60c0f01c232145809387e5680b05c7bce0bea31844a522",
34646
+ size: 114072
34647
+ },
34648
+ {
34649
+ name: "libfreetype6",
34650
+ version: "2.10.1-2ubuntu0.4",
34651
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/f/freetype/libfreetype6_2.10.1-2ubuntu0.4_amd64.deb",
34652
+ sha256: "db8593630b432c9f69682f6040578a7db3a6ae2df6d172bc0e6df9982a714e27",
34653
+ size: 340804
34654
+ },
34655
+ {
34656
+ name: "libfribidi0",
34657
+ version: "1.0.8-2ubuntu0.1",
34658
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/f/fribidi/libfribidi0_1.0.8-2ubuntu0.1_amd64.deb",
34659
+ sha256: "3c8b091cb092358ee1812473bb6da5447642005d9c5f0412d63c8f1e4a974e4d",
34660
+ size: 24168
34661
+ },
34662
+ {
34663
+ name: "libgbm1",
34664
+ version: "21.2.6-0ubuntu0.1~20.04.2",
34665
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/m/mesa/libgbm1_21.2.6-0ubuntu0.1~20.04.2_amd64.deb",
34666
+ sha256: "58b610bf61b00e2fb599d44c5247850ea422ff712085639224b0a1cbcee95e50",
34667
+ size: 29200
34668
+ },
34669
+ {
34670
+ name: "libgcrypt20",
34671
+ version: "1.8.5-5ubuntu1.1",
34672
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libg/libgcrypt20/libgcrypt20_1.8.5-5ubuntu1.1_amd64.deb",
34673
+ sha256: "f040f801e2cced9bd82e484c23678cb9b464d04974a9cf4cf25fc9ad09d9e90d",
34674
+ size: 419920
34675
+ },
34676
+ {
34677
+ name: "libglib2.0-0",
34678
+ version: "2.64.6-1~ubuntu20.04.9",
34679
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/g/glib2.0/libglib2.0-0_2.64.6-1~ubuntu20.04.9_amd64.deb",
34680
+ sha256: "459d8f08c5e3e8c0454b1cb16660fc7a11274729c83bd41886e5a1388feeddbd",
34681
+ size: 1289696
34682
+ },
34683
+ {
34684
+ name: "libgmp10",
34685
+ version: "2:6.2.0+dfsg-4ubuntu0.1",
34686
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/g/gmp/libgmp10_6.2.0+dfsg-4ubuntu0.1_amd64.deb",
34687
+ sha256: "541dc5050b0cecdecbfe155641588ba08da645b61b11fc4bcb045f2f4773da43",
34688
+ size: 240684
34689
+ },
34690
+ {
34691
+ name: "libgnutls30",
34692
+ version: "3.6.13-2ubuntu1.12",
34693
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/g/gnutls28/libgnutls30_3.6.13-2ubuntu1.12_amd64.deb",
34694
+ sha256: "af6ff8ce571a81d8aae3f55e84ff4bb777598f3a348660e53086e3ba2554d74a",
34695
+ size: 828712
34696
+ },
34697
+ {
34698
+ name: "libgpg-error0",
34699
+ version: "1.37-1",
34700
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libg/libgpg-error/libgpg-error0_1.37-1_amd64.deb",
34701
+ sha256: "4744163850851f60080a8b0fdf3dd3258d93114bd83f8024414737a2826da7fe",
34702
+ size: 58004
34703
+ },
34704
+ {
34705
+ name: "libgraphite2-3",
34706
+ version: "1.3.13-11build1",
34707
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/g/graphite2/libgraphite2-3_1.3.13-11build1_amd64.deb",
34708
+ sha256: "e4ae794210c589fedb1c008429188066259e5bc61657747a4ecd9502f31b3294",
34709
+ size: 73548
34710
+ },
34711
+ {
34712
+ name: "libgssapi-krb5-2",
34713
+ version: "1.17-6ubuntu4.11",
34714
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/k/krb5/libgssapi-krb5-2_1.17-6ubuntu4.11_amd64.deb",
34715
+ sha256: "08356bc6b140564abeea043b9cc8e9fd395f0775d652be739da2ea8ed0915322",
34716
+ size: 121224
34717
+ },
34718
+ {
34719
+ name: "libharfbuzz0b",
34720
+ version: "2.6.4-1ubuntu4.3",
34721
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/h/harfbuzz/libharfbuzz0b_2.6.4-1ubuntu4.3_amd64.deb",
34722
+ sha256: "2611c609a50b13cbd47c276ef0c82383e6f6a8321a78f11a9058297cf26b3915",
34723
+ size: 391136
34724
+ },
34725
+ {
34726
+ name: "libhogweed5",
34727
+ version: "3.5.1+really3.5.1-2ubuntu0.2",
34728
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/n/nettle/libhogweed5_3.5.1+really3.5.1-2ubuntu0.2_amd64.deb",
34729
+ sha256: "12d76fa6c9149af3da228e3062faaefd7d12e0c6fd3424579627672437a84f14",
34730
+ size: 137880
34731
+ },
34732
+ {
34733
+ name: "libidn2-0",
34734
+ version: "2.2.0-2",
34735
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libi/libidn2/libidn2-0_2.2.0-2_amd64.deb",
34736
+ sha256: "698abe11d444c7e87c656c2083373d1e0fae04b3a64be0371adb2bb180092537",
34737
+ size: 50448
34738
+ },
34739
+ {
34740
+ name: "libk5crypto3",
34741
+ version: "1.17-6ubuntu4.11",
34742
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/k/krb5/libk5crypto3_1.17-6ubuntu4.11_amd64.deb",
34743
+ sha256: "f5cc56017b5714f427b257e46599f5a228821760439f408ebb7de7c01e5b1ab5",
34744
+ size: 80316
34745
+ },
34746
+ {
34747
+ name: "libkeyutils1",
34748
+ version: "1.6-6ubuntu1.1",
34749
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/k/keyutils/libkeyutils1_1.6-6ubuntu1.1_amd64.deb",
34750
+ sha256: "5a098b2585e549b997a979c38e5bfcc07a5df3efef4753e41ad4dab1122d576c",
34751
+ size: 10252
34752
+ },
34753
+ {
34754
+ name: "libkrb5-3",
34755
+ version: "1.17-6ubuntu4.11",
34756
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/k/krb5/libkrb5-3_1.17-6ubuntu4.11_amd64.deb",
34757
+ sha256: "df7b48565c9304efc382da14d082d66240b4889415c5bf01bfaf8334c60f1d40",
34758
+ size: 329500
34759
+ },
34760
+ {
34761
+ name: "libkrb5support0",
34762
+ version: "1.17-6ubuntu4.11",
34763
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/k/krb5/libkrb5support0_1.17-6ubuntu4.11_amd64.deb",
34764
+ sha256: "06eb3024db8d8daba8201329f9c53bb94a1a7c7558c51d24967d88712045087a",
34765
+ size: 31496
34766
+ },
34767
+ {
34768
+ name: "liblz4-1",
34769
+ version: "1.9.2-2ubuntu0.20.04.1",
34770
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/l/lz4/liblz4-1_1.9.2-2ubuntu0.20.04.1_amd64.deb",
34771
+ sha256: "a9b706941eb8e2a0012869dbe63c7337fc9629aaf919563f63e92baa2a3a7c18",
34772
+ size: 56124
34773
+ },
34774
+ {
34775
+ name: "liblzma5",
34776
+ version: "5.2.4-1ubuntu1.1",
34777
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/x/xz-utils/liblzma5_5.2.4-1ubuntu1.1_amd64.deb",
34778
+ sha256: "f545d34c86119802fbae869a09e1077a714e12a01ef6a3ef67fdc745e5db311d",
34779
+ size: 91812
34780
+ },
34781
+ {
34782
+ name: "libmount1",
34783
+ version: "2.34-0.1ubuntu9.6",
34784
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/u/util-linux/libmount1_2.34-0.1ubuntu9.6_amd64.deb",
34785
+ sha256: "f8c6e8209025a1ca6e5496107ec793eef142c4a66777f4bc5b1c87bf4de2101e",
34786
+ size: 149220
34787
+ },
34788
+ {
34789
+ name: "libnettle7",
34790
+ version: "3.5.1+really3.5.1-2ubuntu0.2",
34791
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/n/nettle/libnettle7_3.5.1+really3.5.1-2ubuntu0.2_amd64.deb",
34792
+ sha256: "3496aed83407fde71e0dc5988b28e8fd7f07a2f27fcf3e0f214c7cd86667eecd",
34793
+ size: 114900
34794
+ },
34795
+ {
34796
+ name: "libnspr4",
34797
+ version: "2:4.35-0ubuntu0.20.04.1",
34798
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/n/nspr/libnspr4_4.35-0ubuntu0.20.04.1_amd64.deb",
34799
+ sha256: "da98b529dfe37aedbf7d23d2edf5faae4d817c40e5a60932e791ba4cdec4dd88",
34800
+ size: 107632
34801
+ },
34802
+ {
34803
+ name: "libnss3",
34804
+ version: "2:3.98-0ubuntu0.20.04.2",
34805
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/n/nss/libnss3_3.98-0ubuntu0.20.04.2_amd64.deb",
34806
+ sha256: "1e711911ad3ae2de8a19bc6cb048fa81e2e2c2c09d0aad186b7c14d78517bb16",
34807
+ size: 1391200
34808
+ },
34809
+ {
34810
+ name: "libp11-kit0",
34811
+ version: "0.23.20-1ubuntu0.1",
34812
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/p/p11-kit/libp11-kit0_0.23.20-1ubuntu0.1_amd64.deb",
34813
+ sha256: "e6c415cef9c7e829e43cac6cfea7371222005650cf4751eee22fd19710d4fa8e",
34814
+ size: 188124
34815
+ },
34816
+ {
34817
+ name: "libpango-1.0-0",
34818
+ version: "1.44.7-2ubuntu4",
34819
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/p/pango1.0/libpango-1.0-0_1.44.7-2ubuntu4_amd64.deb",
34820
+ sha256: "5ab27de09a2f0dbd0a4959c7427cfa512ca1e01549fe0767b6e0db8d00689f3b",
34821
+ size: 162008
34822
+ },
34823
+ {
34824
+ name: "libpcre2-8-0",
34825
+ version: "10.34-7ubuntu0.1",
34826
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/p/pcre2/libpcre2-8-0_10.34-7ubuntu0.1_amd64.deb",
34827
+ sha256: "5229f14c06074ae5f2d6dd7cef2c9dff8dd57c6ecf1381ff019fe5d233cc275f",
34828
+ size: 197976
34829
+ },
34830
+ {
34831
+ name: "libpcre3",
34832
+ version: "2:8.39-12ubuntu0.1",
34833
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/p/pcre3/libpcre3_8.39-12ubuntu0.1_amd64.deb",
34834
+ sha256: "98c25f98cc8df949e774a7ebaff509c37a6baea4dab83786a3c1efecb850bfae",
34835
+ size: 232396
34836
+ },
34837
+ {
34838
+ name: "libpixman-1-0",
34839
+ version: "0.38.4-0ubuntu2.1",
34840
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/p/pixman/libpixman-1-0_0.38.4-0ubuntu2.1_amd64.deb",
34841
+ sha256: "6714ec9575266bcef0c332ea36739ce88df4a08a1bd20147e2cb89ee0b414679",
34842
+ size: 226932
34843
+ },
34844
+ {
34845
+ name: "libpng16-16",
34846
+ version: "1.6.37-2",
34847
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libp/libpng1.6/libpng16-16_1.6.37-2_amd64.deb",
34848
+ sha256: "6c512b7c67eafe0302026fa719f924bb77b39c57e1845a3d8b81cfd607c3b22c",
34849
+ size: 179076
34850
+ },
34851
+ {
34852
+ name: "libselinux1",
34853
+ version: "3.0-1build2",
34854
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libs/libselinux/libselinux1_3.0-1build2_amd64.deb",
34855
+ sha256: "1b8674b6f9e62fbae768d9ffbd686955d08db889ee4107d15ae02d1ec033cc7b",
34856
+ size: 68784
34857
+ },
34858
+ {
34859
+ name: "libsqlite3-0",
34860
+ version: "3.31.1-4ubuntu0.7",
34861
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/s/sqlite3/libsqlite3-0_3.31.1-4ubuntu0.7_amd64.deb",
34862
+ sha256: "82555868d913b6a435c64dfd9efdf3eca01d06e4d5bc97425f14a3f00e5edfd7",
34863
+ size: 548768
34864
+ },
34865
+ {
34866
+ name: "libssl1.1",
34867
+ version: "1.1.1f-1ubuntu2.24",
34868
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.24_amd64.deb",
34869
+ sha256: "7cf39d70a639017d1dd7c8d36daa2258063608688e449fddf40ffdd46f992a78",
34870
+ size: 1323248
34871
+ },
34872
+ {
34873
+ name: "libsystemd0",
34874
+ version: "245.4-4ubuntu3.24",
34875
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/s/systemd/libsystemd0_245.4-4ubuntu3.24_amd64.deb",
34876
+ sha256: "5b510f79d65149f9952220ad9f74c1d6c8d48e3086a688a8c58d0b6ff57f9ee2",
34877
+ size: 267456
34878
+ },
34879
+ {
34880
+ name: "libtasn1-6",
34881
+ version: "4.16.0-2ubuntu0.1",
34882
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2ubuntu0.1_amd64.deb",
34883
+ sha256: "20abf229083d5d60b158364a1e3e26d54cdb1840f0897b80deb0ebae9f049b3c",
34884
+ size: 38592
34885
+ },
34886
+ {
34887
+ name: "libthai-data",
34888
+ version: "0.1.28-3",
34889
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libt/libthai/libthai-data_0.1.28-3_all.deb",
34890
+ sha256: "4789eb1d23fc72f9b1cb18649f5dede84442bce2ceb829b0f371aa248ba51405",
34891
+ size: 134404
34892
+ },
34893
+ {
34894
+ name: "libthai0",
34895
+ version: "0.1.28-3",
34896
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libt/libthai/libthai0_0.1.28-3_amd64.deb",
34897
+ sha256: "4e4268c7bdaf33c64cf69a15684faccb7ec7520c04b805e525d7b2b47bd65642",
34898
+ size: 18124
34899
+ },
34900
+ {
34901
+ name: "libudev1",
34902
+ version: "245.4-4ubuntu3.24",
34903
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/s/systemd/libudev1_245.4-4ubuntu3.24_amd64.deb",
34904
+ sha256: "f2dc7d6771a2f26b93d1f17cdf3011a2b43b1adfd3df716e396a64c6890a4e3a",
34905
+ size: 75184
34906
+ },
34907
+ {
34908
+ name: "libunistring2",
34909
+ version: "0.9.10-2",
34910
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libu/libunistring/libunistring2_0.9.10-2_amd64.deb",
34911
+ sha256: "4ccfbc1e3a1cbc42616bd4fd407e01eb1434996c8500ac2fbccb7a2e1bcb166a",
34912
+ size: 368092
34913
+ },
34914
+ {
34915
+ name: "libuuid1",
34916
+ version: "2.34-0.1ubuntu9.6",
34917
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/u/util-linux/libuuid1_2.34-0.1ubuntu9.6_amd64.deb",
34918
+ sha256: "c1fb2ac586d0fbf375890536979fabf1b897e3481dac1696d615275477cb0751",
34919
+ size: 19976
34920
+ },
34921
+ {
34922
+ name: "libwayland-server0",
34923
+ version: "1.18.0-1ubuntu0.1",
34924
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/w/wayland/libwayland-server0_1.18.0-1ubuntu0.1_amd64.deb",
34925
+ sha256: "c1470c26861afaaafda54c9b9802b55a7bcc873841c239d4a844f6f5160e2363",
34926
+ size: 31252
34927
+ },
34928
+ {
34929
+ name: "libx11-6",
34930
+ version: "2:1.6.9-2ubuntu1.6",
34931
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libx/libx11/libx11-6_1.6.9-2ubuntu1.6_amd64.deb",
34932
+ sha256: "20d7c0a8ea7a138d49d777a5db8e652071a3c47c78136450ec7417b5232b84ac",
34933
+ size: 576536
34934
+ },
34935
+ {
34936
+ name: "libx11-data",
34937
+ version: "2:1.6.9-2ubuntu1.6",
34938
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libx/libx11/libx11-data_1.6.9-2ubuntu1.6_all.deb",
34939
+ sha256: "45c1fac19a8b7cc08162d1c8f63e04251bb2d0c4ff5cb3969227bd6fe8c5293b",
34940
+ size: 113552
34941
+ },
34942
+ {
34943
+ name: "libxau6",
34944
+ version: "1:1.0.9-0ubuntu1",
34945
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libx/libxau/libxau6_1.0.9-0ubuntu1_amd64.deb",
34946
+ sha256: "58a0d78302a35e4584f96cd598af16b563ae7aae4af589e2a7cee6dc6666d979",
34947
+ size: 7488
34948
+ },
34949
+ {
34950
+ name: "libxcb-render0",
34951
+ version: "1.14-2",
34952
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libx/libxcb/libxcb-render0_1.14-2_amd64.deb",
34953
+ sha256: "d5423de927f855b1a266b9b66e16e4ae9e067664c9337b5aaf57fb98b4791647",
34954
+ size: 14840
34955
+ },
34956
+ {
34957
+ name: "libxcb-shm0",
34958
+ version: "1.14-2",
34959
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libx/libxcb/libxcb-shm0_1.14-2_amd64.deb",
34960
+ sha256: "776c691acd4fcdad314f0f09c98927a608cbc422007ce0f0c88e9d6711773217",
34961
+ size: 5584
34962
+ },
34963
+ {
34964
+ name: "libxcb1",
34965
+ version: "1.14-2",
34966
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libx/libxcb/libxcb1_1.14-2_amd64.deb",
34967
+ sha256: "3fcab5cc6a70bcb1e4157748f9c626be21bc18b4c8459447e4c213cba98b9831",
34968
+ size: 44652
34969
+ },
34970
+ {
34971
+ name: "libxcomposite1",
34972
+ version: "1:0.4.5-1",
34973
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_amd64.deb",
34974
+ sha256: "d87e5d52d4bfa714bd56bb3103999e045b4f50638917736e544b67db361d0c8e",
34975
+ size: 6976
34976
+ },
34977
+ {
34978
+ name: "libxdamage1",
34979
+ version: "1:1.1.5-2",
34980
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_amd64.deb",
34981
+ sha256: "77f4088c85b973a05a9e12825db9fc8e0cc5a577bed57ac29f4427e187c2896f",
34982
+ size: 6996
34983
+ },
34984
+ {
34985
+ name: "libxdmcp6",
34986
+ version: "1:1.1.3-0ubuntu1",
34987
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libx/libxdmcp/libxdmcp6_1.1.3-0ubuntu1_amd64.deb",
34988
+ sha256: "8a612b0fb60a41b92698f87258bc5ec6467da88e38d3de79411e02921c42af87",
34989
+ size: 10580
34990
+ },
34991
+ {
34992
+ name: "libxext6",
34993
+ version: "2:1.3.4-0ubuntu1",
34994
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libx/libxext/libxext6_1.3.4-0ubuntu1_amd64.deb",
34995
+ sha256: "a3c546490c0ae0f9247cf8f2919fc7b99b386a538ac91ae48a4ebb96a2a69834",
34996
+ size: 29060
34997
+ },
34998
+ {
34999
+ name: "libxfixes3",
35000
+ version: "1:5.0.3-2",
35001
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_amd64.deb",
35002
+ sha256: "ee3d380e5f825048a381fea92e8215bc65662fa4ce06346579fbaada2b1f7acc",
35003
+ size: 10932
35004
+ },
35005
+ {
35006
+ name: "libxkbcommon0",
35007
+ version: "0.10.0-1",
35008
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libx/libxkbcommon/libxkbcommon0_0.10.0-1_amd64.deb",
35009
+ sha256: "b704ce1751dd938025b88a84c4054d4f36651661e473efeb3da8ed39aaf05868",
35010
+ size: 98444
35011
+ },
35012
+ {
35013
+ name: "libxrandr2",
35014
+ version: "2:1.5.2-0ubuntu1",
35015
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libx/libxrandr/libxrandr2_1.5.2-0ubuntu1_amd64.deb",
35016
+ sha256: "e6b232c3b2e6f8858aee0f1e46d2cec1575de1b85cb9cfdff93b8b951b15ff97",
35017
+ size: 18544
35018
+ },
35019
+ {
35020
+ name: "libxrender1",
35021
+ version: "1:0.9.10-1",
35022
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/libx/libxrender/libxrender1_0.9.10-1_amd64.deb",
35023
+ sha256: "bfda6dc44a39d6500ac2974b3113105477adce457699aadd99f022d5a4858c1c",
35024
+ size: 18706
35025
+ },
35026
+ {
35027
+ name: "zlib1g",
35028
+ version: "1:1.2.11.dfsg-2ubuntu1.5",
35029
+ url: "https://archive.ubuntu.com/ubuntu/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2ubuntu1.5_amd64.deb",
35030
+ sha256: "bf67018f5303466eb468680b637a5d3f3bb17b9d44decf3d82d40b35babcd3e0",
35031
+ size: 54164
35032
+ }
35033
+ ],
35034
+ arm64: [
35035
+ {
35036
+ name: "fontconfig-config",
35037
+ version: "2.13.1-2ubuntu3",
35038
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/f/fontconfig/fontconfig-config_2.13.1-2ubuntu3_all.deb",
35039
+ sha256: "80b090925c52aff3f4681b361c9823b041c42c57cca58b5baf2541bafc25fed9",
35040
+ size: 28780
35041
+ },
35042
+ {
35043
+ name: "libasound2",
35044
+ version: "1.2.2-2.1ubuntu2.5",
35045
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/a/alsa-lib/libasound2_1.2.2-2.1ubuntu2.5_arm64.deb",
35046
+ sha256: "3cf3900c1b9e5aa90c340099b15f04d8f93c078cd69acf1856ea65fea42b003e",
35047
+ size: 304140
35048
+ },
35049
+ {
35050
+ name: "libasound2-data",
35051
+ version: "1.2.2-2.1ubuntu2.5",
35052
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/a/alsa-lib/libasound2-data_1.2.2-2.1ubuntu2.5_all.deb",
35053
+ sha256: "d740795494b8259fdb359f9343f224dabb7cb4a63511e13ccccc5ad2d96ffa95",
35054
+ size: 20104
35055
+ },
35056
+ {
35057
+ name: "libatk-bridge2.0-0",
35058
+ version: "2.34.2-0ubuntu2~20.04.1",
35059
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/a/at-spi2-atk/libatk-bridge2.0-0_2.34.2-0ubuntu2~20.04.1_arm64.deb",
35060
+ sha256: "3a50e4c2112a0fae245aae3c7ed30b7468d2cf5601cb85547f0b3459c214ef52",
35061
+ size: 54764
35062
+ },
35063
+ {
35064
+ name: "libatk1.0-0",
35065
+ version: "2.35.1-1ubuntu2",
35066
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/a/atk1.0/libatk1.0-0_2.35.1-1ubuntu2_arm64.deb",
35067
+ sha256: "c67756f42f3655a896300145ad5faa313426e5e2353005e3a555ebad78fbe32e",
35068
+ size: 42912
35069
+ },
35070
+ {
35071
+ name: "libatk1.0-data",
35072
+ version: "2.35.1-1ubuntu2",
35073
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/a/atk1.0/libatk1.0-data_2.35.1-1ubuntu2_all.deb",
35074
+ sha256: "ded987a2b50f0fa9bfd04fba60ad817cb169fb4066f7bc22c174fcae1e2f1aad",
35075
+ size: 2964
35076
+ },
35077
+ {
35078
+ name: "libatspi2.0-0",
35079
+ version: "2.36.0-2",
35080
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/a/at-spi2-core/libatspi2.0-0_2.36.0-2_arm64.deb",
35081
+ sha256: "7f77390e8cde88006cf4277ecf2e678b486f3032ac476a2ae261cf7fa7a9befc",
35082
+ size: 60524
35083
+ },
35084
+ {
35085
+ name: "libavahi-client3",
35086
+ version: "0.7-4ubuntu7.3",
35087
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/a/avahi/libavahi-client3_0.7-4ubuntu7.3_arm64.deb",
35088
+ sha256: "5b73ca0f8514f68784d085746c0e420ef425d3962030f9e60c56ac68f212bacc",
35089
+ size: 24116
35090
+ },
35091
+ {
35092
+ name: "libavahi-common-data",
35093
+ version: "0.7-4ubuntu7.3",
35094
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/a/avahi/libavahi-common-data_0.7-4ubuntu7.3_arm64.deb",
35095
+ sha256: "4157edf019a38ac88adba51c9975e8b3d6920f8c45c843559d5b423a4275ce2d",
35096
+ size: 21448
35097
+ },
35098
+ {
35099
+ name: "libavahi-common3",
35100
+ version: "0.7-4ubuntu7.3",
35101
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/a/avahi/libavahi-common3_0.7-4ubuntu7.3_arm64.deb",
35102
+ sha256: "8e7017dd7f20083d53e20dd28c398a51f6bffe114d6b4f713dad56e8d30b7b00",
35103
+ size: 20588
35104
+ },
35105
+ {
35106
+ name: "libblkid1",
35107
+ version: "2.34-0.1ubuntu9.6",
35108
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/u/util-linux/libblkid1_2.34-0.1ubuntu9.6_arm64.deb",
35109
+ sha256: "6501deae2c21100fa083d7673090eca29462f9c11dae4ebe940e6dd8faf79a36",
35110
+ size: 128748
35111
+ },
35112
+ {
35113
+ name: "libbsd0",
35114
+ version: "0.10.0-1",
35115
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libb/libbsd/libbsd0_0.10.0-1_arm64.deb",
35116
+ sha256: "0486962198502bfd808a4645d453d3d9ee0916c29c4217355b61a3d206d77f4a",
35117
+ size: 43736
35118
+ },
35119
+ {
35120
+ name: "libcairo2",
35121
+ version: "1.16.0-4ubuntu1",
35122
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/c/cairo/libcairo2_1.16.0-4ubuntu1_arm64.deb",
35123
+ sha256: "afdf13c7d5ee20e910349a555d23d86ab373450e9eab099fe0cc1ddcbf410fba",
35124
+ size: 537620
35125
+ },
35126
+ {
35127
+ name: "libcom-err2",
35128
+ version: "1.45.5-2ubuntu1.2",
35129
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/e/e2fsprogs/libcom-err2_1.45.5-2ubuntu1.2_arm64.deb",
35130
+ sha256: "26dcb25c85aa9aac44d38b68ec87d7c0f00f79b263249985ff6e9cb077c796cb",
35131
+ size: 9272
35132
+ },
35133
+ {
35134
+ name: "libcups2",
35135
+ version: "2.3.1-9ubuntu1.9",
35136
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/c/cups/libcups2_2.3.1-9ubuntu1.9_arm64.deb",
35137
+ sha256: "b0538d219b803898cc4923ed67e8eb882cd19c3ab6a6bdd51219c935c8a05a9e",
35138
+ size: 218060
35139
+ },
35140
+ {
35141
+ name: "libdatrie1",
35142
+ version: "0.2.12-3",
35143
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libd/libdatrie/libdatrie1_0.2.12-3_arm64.deb",
35144
+ sha256: "31918038b7125be45b4f94772a2305009487812556f0cf9002b4e1ec0e6965ca",
35145
+ size: 17876
35146
+ },
35147
+ {
35148
+ name: "libdbus-1-3",
35149
+ version: "1.12.16-2ubuntu2.3",
35150
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/d/dbus/libdbus-1-3_1.12.16-2ubuntu2.3_arm64.deb",
35151
+ sha256: "db181df6a0e2533bcc236e6dbcc2cb4416ecccffe617841203535d42a9f7681b",
35152
+ size: 169260
35153
+ },
35154
+ {
35155
+ name: "libdrm-common",
35156
+ version: "2.4.107-8ubuntu1~20.04.2",
35157
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libd/libdrm/libdrm-common_2.4.107-8ubuntu1~20.04.2_all.deb",
35158
+ sha256: "52bdffa2e90751b316978799650bb3e8c373c238cc71775ee596069241847e08",
35159
+ size: 5396
35160
+ },
35161
+ {
35162
+ name: "libdrm2",
35163
+ version: "2.4.107-8ubuntu1~20.04.2",
35164
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libd/libdrm/libdrm2_2.4.107-8ubuntu1~20.04.2_arm64.deb",
35165
+ sha256: "b7039d3dc8af3248a3b01366d47e6bfd080f1a76ad3b6c63fa0bb4f8bae257a0",
35166
+ size: 33940
35167
+ },
35168
+ {
35169
+ name: "libexpat1",
35170
+ version: "2.2.9-1ubuntu0.8",
35171
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/e/expat/libexpat1_2.2.9-1ubuntu0.8_arm64.deb",
35172
+ sha256: "a51e25c803283d266f63de4b631fe7ff0db2a4fa28d3743ad2d6d7dde1409a38",
35173
+ size: 63e3
35174
+ },
35175
+ {
35176
+ name: "libffi7",
35177
+ version: "3.3-4",
35178
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libf/libffi/libffi7_3.3-4_arm64.deb",
35179
+ sha256: "a3e7abc48b5b4614fd5f6d1d95019d52be092e40e9b8a05f670905c6abf6eac4",
35180
+ size: 17136
35181
+ },
35182
+ {
35183
+ name: "libfontconfig1",
35184
+ version: "2.13.1-2ubuntu3",
35185
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/f/fontconfig/libfontconfig1_2.13.1-2ubuntu3_arm64.deb",
35186
+ sha256: "7abc3c68569ebd52e7e27ba1cd1e97004bf5a1641212acd821220a020b713c2f",
35187
+ size: 110740
35188
+ },
35189
+ {
35190
+ name: "libfreetype6",
35191
+ version: "2.10.1-2ubuntu0.4",
35192
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/f/freetype/libfreetype6_2.10.1-2ubuntu0.4_arm64.deb",
35193
+ sha256: "14e03a33e5ee8ea909d58804b895cb5f3aa9e774e008f0a635593e7f1826a329",
35194
+ size: 315716
35195
+ },
35196
+ {
35197
+ name: "libfribidi0",
35198
+ version: "1.0.8-2ubuntu0.1",
35199
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/f/fribidi/libfribidi0_1.0.8-2ubuntu0.1_arm64.deb",
35200
+ sha256: "bcbc7bf30ad655a3dbb6d23ae3f74aa19d47eac81684bdab3e37c8bb62997010",
35201
+ size: 24068
35202
+ },
35203
+ {
35204
+ name: "libgbm1",
35205
+ version: "21.2.6-0ubuntu0.1~20.04.2",
35206
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/m/mesa/libgbm1_21.2.6-0ubuntu0.1~20.04.2_arm64.deb",
35207
+ sha256: "9e5279a35d431bf0f5c99368d0cc9a7ba86fa7b4359cfce5734112e0973e1a69",
35208
+ size: 27912
35209
+ },
35210
+ {
35211
+ name: "libgcrypt20",
35212
+ version: "1.8.5-5ubuntu1.1",
35213
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libg/libgcrypt20/libgcrypt20_1.8.5-5ubuntu1.1_arm64.deb",
35214
+ sha256: "30960de1028522bb10bf3ae16d32967cb2ab9a479a26ba2c1d63d828300696d8",
35215
+ size: 349392
35216
+ },
35217
+ {
35218
+ name: "libglib2.0-0",
35219
+ version: "2.64.6-1~ubuntu20.04.9",
35220
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/g/glib2.0/libglib2.0-0_2.64.6-1~ubuntu20.04.9_arm64.deb",
35221
+ sha256: "5165775294bf29ceea14b119c2b561a4550ec7d011b65c31a78e3107f5c810f0",
35222
+ size: 1201064
35223
+ },
35224
+ {
35225
+ name: "libgmp10",
35226
+ version: "2:6.2.0+dfsg-4ubuntu0.1",
35227
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/g/gmp/libgmp10_6.2.0+dfsg-4ubuntu0.1_arm64.deb",
35228
+ sha256: "0ad2322370e552a0c8541c71e86cc0f63573b8cc2521d07b873fb4fa5efbc313",
35229
+ size: 217624
35230
+ },
35231
+ {
35232
+ name: "libgnutls30",
35233
+ version: "3.6.13-2ubuntu1.12",
35234
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/g/gnutls28/libgnutls30_3.6.13-2ubuntu1.12_arm64.deb",
35235
+ sha256: "bdfda0cc83d63003b04494a3cef41fab97c8c3a3f488eca4d0c6b9fb9f6d5e76",
35236
+ size: 753496
35237
+ },
35238
+ {
35239
+ name: "libgpg-error0",
35240
+ version: "1.37-1",
35241
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libg/libgpg-error/libgpg-error0_1.37-1_arm64.deb",
35242
+ sha256: "3b1364e9125ec484cfc3dd4441b836e111cf99e86274ca5e24a82d6c8343f15f",
35243
+ size: 55060
35244
+ },
35245
+ {
35246
+ name: "libgraphite2-3",
35247
+ version: "1.3.13-11build1",
35248
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/g/graphite2/libgraphite2-3_1.3.13-11build1_arm64.deb",
35249
+ sha256: "7eda3f4fa7eb67fbe9272ec52f73e09bd16ea0109817081e434119327a66f620",
35250
+ size: 67696
35251
+ },
35252
+ {
35253
+ name: "libgssapi-krb5-2",
35254
+ version: "1.17-6ubuntu4.11",
35255
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/k/krb5/libgssapi-krb5-2_1.17-6ubuntu4.11_arm64.deb",
35256
+ sha256: "3e21ca21e774b38d28d821c0aaf23d85bc9b1d9b8d807c07153133041194023a",
35257
+ size: 113180
35258
+ },
35259
+ {
35260
+ name: "libharfbuzz0b",
35261
+ version: "2.6.4-1ubuntu4.3",
35262
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/h/harfbuzz/libharfbuzz0b_2.6.4-1ubuntu4.3_arm64.deb",
35263
+ sha256: "34947348ee3b296950adbed5e6b8886cfc92412cd36c6bc1bbdc24aeb2471f74",
35264
+ size: 352820
35265
+ },
35266
+ {
35267
+ name: "libhogweed5",
35268
+ version: "3.5.1+really3.5.1-2ubuntu0.2",
35269
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/n/nettle/libhogweed5_3.5.1+really3.5.1-2ubuntu0.2_arm64.deb",
35270
+ sha256: "bb96808b5e2e28465720eab769461bed98bbf054efce3c176171d340fa66b5bc",
35271
+ size: 134516
35272
+ },
35273
+ {
35274
+ name: "libidn2-0",
35275
+ version: "2.2.0-2",
35276
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libi/libidn2/libidn2-0_2.2.0-2_arm64.deb",
35277
+ sha256: "87b95a889659edc2cae07679a930880b625449e28608cb22a8b6b6e6149c22cd",
35278
+ size: 49376
35279
+ },
35280
+ {
35281
+ name: "libk5crypto3",
35282
+ version: "1.17-6ubuntu4.11",
35283
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/k/krb5/libk5crypto3_1.17-6ubuntu4.11_arm64.deb",
35284
+ sha256: "8570e188404422a8df04c2a5afebb8cc3795336c85818e2172b5971148f546b9",
35285
+ size: 80428
35286
+ },
35287
+ {
35288
+ name: "libkeyutils1",
35289
+ version: "1.6-6ubuntu1.1",
35290
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/k/keyutils/libkeyutils1_1.6-6ubuntu1.1_arm64.deb",
35291
+ sha256: "b96a599092f6a76f48f61ca1b309da065ccbce19eda474155b3b89ab7b0e9450",
35292
+ size: 10112
35293
+ },
35294
+ {
35295
+ name: "libkrb5-3",
35296
+ version: "1.17-6ubuntu4.11",
35297
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/k/krb5/libkrb5-3_1.17-6ubuntu4.11_arm64.deb",
35298
+ sha256: "c4f072347862881c835b47ac073e201deec40c980b5146696a87715029bad832",
35299
+ size: 311860
35300
+ },
35301
+ {
35302
+ name: "libkrb5support0",
35303
+ version: "1.17-6ubuntu4.11",
35304
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/k/krb5/libkrb5support0_1.17-6ubuntu4.11_arm64.deb",
35305
+ sha256: "8391f8041f18540b0fb80d9227d6ed225febad94c85ef44b47f29ce36902564f",
35306
+ size: 30984
35307
+ },
35308
+ {
35309
+ name: "liblz4-1",
35310
+ version: "1.9.2-2ubuntu0.20.04.1",
35311
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/l/lz4/liblz4-1_1.9.2-2ubuntu0.20.04.1_arm64.deb",
35312
+ sha256: "d41c5b06e7a79afae062523222029a0cc126d3d9d0eecd5f363bfec06b4d7eeb",
35313
+ size: 52968
35314
+ },
35315
+ {
35316
+ name: "liblzma5",
35317
+ version: "5.2.4-1ubuntu1.1",
35318
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/x/xz-utils/liblzma5_5.2.4-1ubuntu1.1_arm64.deb",
35319
+ sha256: "fa5c6beb4390bd9dcca70abbd507573f3aaf637581eb45131ccc5dd147a484cd",
35320
+ size: 88072
35321
+ },
35322
+ {
35323
+ name: "libmount1",
35324
+ version: "2.34-0.1ubuntu9.6",
35325
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/u/util-linux/libmount1_2.34-0.1ubuntu9.6_arm64.deb",
35326
+ sha256: "7f7548911174a09fe5311a52b02ab61c43cd66aea829b81e69af47047f0131fd",
35327
+ size: 139600
35328
+ },
35329
+ {
35330
+ name: "libnettle7",
35331
+ version: "3.5.1+really3.5.1-2ubuntu0.2",
35332
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/n/nettle/libnettle7_3.5.1+really3.5.1-2ubuntu0.2_arm64.deb",
35333
+ sha256: "6d18525e248e84b8a4ee39a226fd1195ca9b9d0d5a1c7909ae4f997d46378848",
35334
+ size: 124352
35335
+ },
35336
+ {
35337
+ name: "libnspr4",
35338
+ version: "2:4.35-0ubuntu0.20.04.1",
35339
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/n/nspr/libnspr4_4.35-0ubuntu0.20.04.1_arm64.deb",
35340
+ sha256: "7596d99c54ed9047c56760e437b2530b7735de7a09742b33436793f20d835e69",
35341
+ size: 99780
35342
+ },
35343
+ {
35344
+ name: "libnss3",
35345
+ version: "2:3.98-0ubuntu0.20.04.2",
35346
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/n/nss/libnss3_3.98-0ubuntu0.20.04.2_arm64.deb",
35347
+ sha256: "af135396514d91c694cd088ff022f746ce197ce98d0bf30b8d79fa5f0a0b9651",
35348
+ size: 1291416
35349
+ },
35350
+ {
35351
+ name: "libp11-kit0",
35352
+ version: "0.23.20-1ubuntu0.1",
35353
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/p/p11-kit/libp11-kit0_0.23.20-1ubuntu0.1_arm64.deb",
35354
+ sha256: "13f594407a38c9d6f454bc6009aeeb4862c316be03de8ec4b9234c15c8bee5bb",
35355
+ size: 176892
35356
+ },
35357
+ {
35358
+ name: "libpango-1.0-0",
35359
+ version: "1.44.7-2ubuntu4",
35360
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/p/pango1.0/libpango-1.0-0_1.44.7-2ubuntu4_arm64.deb",
35361
+ sha256: "a3f8dd6f8ff2bbb76d062673afc821d5251969dfc68454dce131b261fae55523",
35362
+ size: 153408
35363
+ },
35364
+ {
35365
+ name: "libpcre2-8-0",
35366
+ version: "10.34-7ubuntu0.1",
35367
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/p/pcre2/libpcre2-8-0_10.34-7ubuntu0.1_arm64.deb",
35368
+ sha256: "098c3f31085cc0cb968e739ae3e4f5fb9f27298765d222e7d517c0ae87101391",
35369
+ size: 170340
35370
+ },
35371
+ {
35372
+ name: "libpcre3",
35373
+ version: "2:8.39-12ubuntu0.1",
35374
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/p/pcre3/libpcre3_8.39-12ubuntu0.1_arm64.deb",
35375
+ sha256: "caa77e05707539866a8651b09227f9be310483e239afcd360c7e3db2498c858d",
35376
+ size: 209060
35377
+ },
35378
+ {
35379
+ name: "libpixman-1-0",
35380
+ version: "0.38.4-0ubuntu2.1",
35381
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/p/pixman/libpixman-1-0_0.38.4-0ubuntu2.1_arm64.deb",
35382
+ sha256: "501de31785006f0f041f8704049518fa9c2330295a8b8b3b6170549791d6806e",
35383
+ size: 129724
35384
+ },
35385
+ {
35386
+ name: "libpng16-16",
35387
+ version: "1.6.37-2",
35388
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libp/libpng1.6/libpng16-16_1.6.37-2_arm64.deb",
35389
+ sha256: "95185d067fcdee1fcc51cb83490720fd2dcee450c55b9cfabcc940ed160879b5",
35390
+ size: 173524
35391
+ },
35392
+ {
35393
+ name: "libselinux1",
35394
+ version: "3.0-1build2",
35395
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libs/libselinux/libselinux1_3.0-1build2_arm64.deb",
35396
+ sha256: "91006c0db207cb6df4205db9c5a91309db58e7f4eef649093aa89def780e0e66",
35397
+ size: 64952
35398
+ },
35399
+ {
35400
+ name: "libsqlite3-0",
35401
+ version: "3.31.1-4ubuntu0.7",
35402
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/s/sqlite3/libsqlite3-0_3.31.1-4ubuntu0.7_arm64.deb",
35403
+ sha256: "e502ae78438a48d777029a22160bf08a0167607878d03b0cb59e30957ffdcc62",
35404
+ size: 506464
35405
+ },
35406
+ {
35407
+ name: "libssl1.1",
35408
+ version: "1.1.1f-1ubuntu2.24",
35409
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.24_arm64.deb",
35410
+ sha256: "dded4572af8b0a9e0310909f211a519cc6409fda31ea81132a77e268b0ec0f2f",
35411
+ size: 1159156
35412
+ },
35413
+ {
35414
+ name: "libsystemd0",
35415
+ version: "245.4-4ubuntu3.24",
35416
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/s/systemd/libsystemd0_245.4-4ubuntu3.24_arm64.deb",
35417
+ sha256: "4e611130122108641de56d1ac809a6361b68a5428613b2dbab2a1ca795cc7d0e",
35418
+ size: 246048
35419
+ },
35420
+ {
35421
+ name: "libtasn1-6",
35422
+ version: "4.16.0-2ubuntu0.1",
35423
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libt/libtasn1-6/libtasn1-6_4.16.0-2ubuntu0.1_arm64.deb",
35424
+ sha256: "76cc2b2e52f73cf33ea130bf8de05b116540d72d0ab5d0f63d2c9135fca1ef6b",
35425
+ size: 36968
35426
+ },
35427
+ {
35428
+ name: "libthai-data",
35429
+ version: "0.1.28-3",
35430
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libt/libthai/libthai-data_0.1.28-3_all.deb",
35431
+ sha256: "4789eb1d23fc72f9b1cb18649f5dede84442bce2ceb829b0f371aa248ba51405",
35432
+ size: 134404
35433
+ },
35434
+ {
35435
+ name: "libthai0",
35436
+ version: "0.1.28-3",
35437
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libt/libthai/libthai0_0.1.28-3_arm64.deb",
35438
+ sha256: "44844a07dca38de9b115055627aae8102d1eee741ef2cd6d55c181e7f45e4df2",
35439
+ size: 16808
35440
+ },
35441
+ {
35442
+ name: "libudev1",
35443
+ version: "245.4-4ubuntu3.24",
35444
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/s/systemd/libudev1_245.4-4ubuntu3.24_arm64.deb",
35445
+ sha256: "64e5cb9b70622038d57d2aa898cc4903e127f050e62f84abecf6c6f7b65e86b8",
35446
+ size: 68848
35447
+ },
35448
+ {
35449
+ name: "libunistring2",
35450
+ version: "0.9.10-2",
35451
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libu/libunistring/libunistring2_0.9.10-2_arm64.deb",
35452
+ sha256: "22323af293a1d3377ba77b717c683a267c37d3da095798edf098aaa23e5a5439",
35453
+ size: 357648
35454
+ },
35455
+ {
35456
+ name: "libuuid1",
35457
+ version: "2.34-0.1ubuntu9.6",
35458
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/u/util-linux/libuuid1_2.34-0.1ubuntu9.6_arm64.deb",
35459
+ sha256: "4ba69927ad94f1f5b0ff4c0cc28f7fdefca0418b97565acd84d0219567298b5b",
35460
+ size: 19400
35461
+ },
35462
+ {
35463
+ name: "libwayland-server0",
35464
+ version: "1.18.0-1ubuntu0.1",
35465
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/w/wayland/libwayland-server0_1.18.0-1ubuntu0.1_arm64.deb",
35466
+ sha256: "39c9aeeed7854f491bf10865967602122c8878f271af9e9327fd3c24931d5cd6",
35467
+ size: 30284
35468
+ },
35469
+ {
35470
+ name: "libx11-6",
35471
+ version: "2:1.6.9-2ubuntu1.6",
35472
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libx/libx11/libx11-6_1.6.9-2ubuntu1.6_arm64.deb",
35473
+ sha256: "68cbdb8a44dac09acaf52505b75cbdcaf43aeeee544dd9982e4754adf865daa4",
35474
+ size: 553708
35475
+ },
35476
+ {
35477
+ name: "libx11-data",
35478
+ version: "2:1.6.9-2ubuntu1.6",
35479
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libx/libx11/libx11-data_1.6.9-2ubuntu1.6_all.deb",
35480
+ sha256: "45c1fac19a8b7cc08162d1c8f63e04251bb2d0c4ff5cb3969227bd6fe8c5293b",
35481
+ size: 113552
35482
+ },
35483
+ {
35484
+ name: "libxau6",
35485
+ version: "1:1.0.9-0ubuntu1",
35486
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libx/libxau/libxau6_1.0.9-0ubuntu1_arm64.deb",
35487
+ sha256: "0f19eb67992cf9a755a781502529750841d93fb8729691df02b9b16aec845b40",
35488
+ size: 7356
35489
+ },
35490
+ {
35491
+ name: "libxcb-render0",
35492
+ version: "1.14-2",
35493
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libx/libxcb/libxcb-render0_1.14-2_arm64.deb",
35494
+ sha256: "4a82f349fc869c8f803c73fdd7e94a6ee1c06d6fb3f6ceab1227efee64828957",
35495
+ size: 14656
35496
+ },
35497
+ {
35498
+ name: "libxcb-shm0",
35499
+ version: "1.14-2",
35500
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libx/libxcb/libxcb-shm0_1.14-2_arm64.deb",
35501
+ sha256: "e0eb8cad040933946459ff6d2116953a68ce149e9d695c28552a1d0beaa9a07b",
35502
+ size: 5560
35503
+ },
35504
+ {
35505
+ name: "libxcb1",
35506
+ version: "1.14-2",
35507
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libx/libxcb/libxcb1_1.14-2_arm64.deb",
35508
+ sha256: "88e171a33249719366a4e29330775e2ac777226f1f379557daf0777083a1fc93",
35509
+ size: 42988
35510
+ },
35511
+ {
35512
+ name: "libxcomposite1",
35513
+ version: "1:0.4.5-1",
35514
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libx/libxcomposite/libxcomposite1_0.4.5-1_arm64.deb",
35515
+ sha256: "61407cb59f0fe5e0f04ea3718a14f9da13a97c0b4675746289e9bd45ec9cc5b8",
35516
+ size: 6864
35517
+ },
35518
+ {
35519
+ name: "libxdamage1",
35520
+ version: "1:1.1.5-2",
35521
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libx/libxdamage/libxdamage1_1.1.5-2_arm64.deb",
35522
+ sha256: "fabd968fe71f4c5ce1af2aa2ee0ef98e15fe64c17d206a6ceba29d0dc52f124e",
35523
+ size: 6820
35524
+ },
35525
+ {
35526
+ name: "libxdmcp6",
35527
+ version: "1:1.1.3-0ubuntu1",
35528
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libx/libxdmcp/libxdmcp6_1.1.3-0ubuntu1_arm64.deb",
35529
+ sha256: "065c2e430e0de48007107aabb9b6ee25bb360eecca312c426827e158fa10974d",
35530
+ size: 10272
35531
+ },
35532
+ {
35533
+ name: "libxext6",
35534
+ version: "2:1.3.4-0ubuntu1",
35535
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libx/libxext/libxext6_1.3.4-0ubuntu1_arm64.deb",
35536
+ sha256: "4f153b62b8c5f77a8b043d7b6746ed43deedf0c2dee5d3911600df89b1a7c3db",
35537
+ size: 27656
35538
+ },
35539
+ {
35540
+ name: "libxfixes3",
35541
+ version: "1:5.0.3-2",
35542
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libx/libxfixes/libxfixes3_5.0.3-2_arm64.deb",
35543
+ sha256: "3cea7f92d5ff7b0b2a29264c74181edf525b278b0be8d82a5ffe73cf20b1aa1e",
35544
+ size: 10764
35545
+ },
35546
+ {
35547
+ name: "libxkbcommon0",
35548
+ version: "0.10.0-1",
35549
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libx/libxkbcommon/libxkbcommon0_0.10.0-1_arm64.deb",
35550
+ sha256: "3f2620fa08f83a1d139dde4012c49519a96abd58f07a92945e0f16154096bb2a",
35551
+ size: 93008
35552
+ },
35553
+ {
35554
+ name: "libxrandr2",
35555
+ version: "2:1.5.2-0ubuntu1",
35556
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libx/libxrandr/libxrandr2_1.5.2-0ubuntu1_arm64.deb",
35557
+ sha256: "32d7f174ee845be1c7c4198113b401520f5bd77e4cf09b534c53eca0e496dc21",
35558
+ size: 17696
35559
+ },
35560
+ {
35561
+ name: "libxrender1",
35562
+ version: "1:0.9.10-1",
35563
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/libx/libxrender/libxrender1_0.9.10-1_arm64.deb",
35564
+ sha256: "931f3d61ec6528221a0a2dc6f9fdac494e24d7e92e49ce1811c495571f3b2cea",
35565
+ size: 16088
35566
+ },
35567
+ {
35568
+ name: "zlib1g",
35569
+ version: "1:1.2.11.dfsg-2ubuntu1.5",
35570
+ url: "https://ports.ubuntu.com/ubuntu-ports/pool/main/z/zlib/zlib1g_1.2.11.dfsg-2ubuntu1.5_arm64.deb",
35571
+ sha256: "2c5f4ba1539a6126f0f04a07bcf2dd920c9505eb4afc7aefcec6f27d0a397578",
35572
+ size: 51564
35573
+ }
35574
+ ]
35575
+ }
35576
+ };
35577
+ }
35578
+ });
35579
+
35580
+ // cli/drivers/linux-browser-libs.ts
35581
+ function isLockPackage(value) {
35582
+ return isRecord(value) && typeof value.name === "string" && typeof value.version === "string" && typeof value.url === "string" && typeof value.sha256 === "string" && /^[a-f0-9]{64}$/.test(value.sha256) && typeof value.size === "number";
35583
+ }
35584
+ function parseLinuxBrowserLibsLock(value) {
35585
+ if (!isRecord(value) || typeof value.id !== "string" || !/^[a-f0-9]{16}$/.test(value.id) || typeof value.suite !== "string" || !isRecord(value.arches)) {
35586
+ throw new Error("invalid linux browser library lock");
35587
+ }
35588
+ const { x64, arm64 } = value.arches;
35589
+ if (!Array.isArray(x64) || !x64.every(isLockPackage) || !Array.isArray(arm64) || !arm64.every(isLockPackage)) {
35590
+ throw new Error("invalid linux browser library lock packages");
35591
+ }
35592
+ return { id: value.id, suite: value.suite, arches: { x64, arm64 } };
35593
+ }
35594
+ function linuxBrowserLibsKey(id, arch) {
35595
+ return `linux-libs/${id}/${arch}.tar.gz`;
35596
+ }
35597
+ function missingLibraries(executablePath, libraryPath) {
35598
+ const ldd = (0, import_node_child_process6.spawnSync)("ldd", [executablePath], {
35599
+ encoding: "utf8",
35600
+ timeout: 3e4,
35601
+ env: libraryPath ? {
35602
+ ...process.env,
35603
+ LD_LIBRARY_PATH: [libraryPath, process.env.LD_LIBRARY_PATH].filter(Boolean).join(":")
35604
+ } : process.env
35605
+ });
35606
+ return [...(ldd.stdout ?? "").matchAll(/^\s*(\S+) => not found$/gm)].map(
35607
+ (match) => match[1]
35608
+ );
35609
+ }
35610
+ async function ensureLinuxBrowserLibraries(executablePath, browser) {
35611
+ if (process.platform !== "linux") return { ok: true, libraryPath: null };
35612
+ const missing = missingLibraries(executablePath, null);
35613
+ if (!missing.length) return { ok: true, libraryPath: null };
35614
+ const arch = LINUX_BROWSER_LIBS_ARCHES.find((candidate) => candidate === process.arch);
35615
+ if (!arch) {
35616
+ return {
35617
+ ok: false,
35618
+ message: `${browser} at ${executablePath} cannot start: this system is missing shared libraries it links (${missing.join(", ")}), and peach has no library bundle for ${process.arch}.`
35619
+ };
35620
+ }
35621
+ const lock = parseLinuxBrowserLibsLock(linux_browser_libs_lock_default);
35622
+ const dir = (0, import_node_path26.join)(rnxHomeDir(), "linux-libs", `${lock.id}-${arch}`);
35623
+ if (!(0, import_node_fs25.existsSync)((0, import_node_path26.join)(dir, LINUX_BROWSER_LIBS_MARKER))) {
35624
+ const url = `${DEFAULT_CLI_RELEASE_ORIGIN}/${linuxBrowserLibsKey(lock.id, arch)}`;
35625
+ process.stderr.write(
35626
+ `peach: this system lacks ${missing.length} shared libraries ${browser} links; downloading them\u2026
35627
+ `
35628
+ );
35629
+ try {
35630
+ const sidecar = await fetch(`${url}.sha256`);
35631
+ if (!sidecar.ok)
35632
+ throw new Error(`${url}.sha256: ${sidecar.status} ${sidecar.statusText}`);
35633
+ await installVerifiedTarball({
35634
+ url,
35635
+ digest: {
35636
+ algorithm: "sha256",
35637
+ encoding: "hex",
35638
+ value: (await sidecar.text()).trim()
35639
+ },
35640
+ destDir: dir,
35641
+ installedMarker: LINUX_BROWSER_LIBS_MARKER,
35642
+ label: `linux browser libraries ${lock.id} (${arch})`
35643
+ });
35644
+ } catch (error) {
35645
+ return {
35646
+ ok: false,
35647
+ message: `${browser} at ${executablePath} cannot start: this system is missing shared libraries it links (${missing.join(", ")}), and downloading them failed: ${error instanceof Error ? error.message : String(error)}`
35648
+ };
35649
+ }
35650
+ }
35651
+ const libraryPath = [(0, import_node_path26.join)(dir, "lib"), (0, import_node_path26.join)(dir, "lib", "nss")].join(":");
35652
+ const stillMissing = missingLibraries(executablePath, libraryPath);
35653
+ if (stillMissing.length) {
35654
+ return {
35655
+ ok: false,
35656
+ message: `${browser} at ${executablePath} cannot start: neither this system nor peach's library bundle (${dir}) provides ${stillMissing.join(", ")}.`
35657
+ };
35658
+ }
35659
+ return { ok: true, libraryPath };
35660
+ }
35661
+ var import_node_child_process6, import_node_fs25, import_node_path26, LINUX_BROWSER_LIBS_ARCHES, LINUX_BROWSER_LIBS_MARKER;
35662
+ var init_linux_browser_libs = __esm({
35663
+ "cli/drivers/linux-browser-libs.ts"() {
35664
+ "use strict";
35665
+ import_node_child_process6 = require("node:child_process");
35666
+ import_node_fs25 = require("node:fs");
35667
+ import_node_path26 = require("node:path");
35668
+ init_src();
35669
+ init_home_paths();
35670
+ init_is_record();
35671
+ init_cli_update();
35672
+ init_linux_browser_libs_lock();
35673
+ LINUX_BROWSER_LIBS_ARCHES = ["x64", "arm64"];
35674
+ LINUX_BROWSER_LIBS_MARKER = "peach-linux-libs.json";
35675
+ }
35676
+ });
35677
+
34439
35678
  // cli/drivers/playwright-provisioning.ts
34440
35679
  function resolvePlaywright() {
34441
35680
  const roots = [`${process.cwd()}/`];
@@ -34449,13 +35688,13 @@ function resolvePlaywright() {
34449
35688
  try {
34450
35689
  const modulePath = requireFromRoot.resolve(spec);
34451
35690
  const packageJsonPath = requireFromRoot.resolve(`${spec}/package.json`);
34452
- const parsed = JSON.parse((0, import_node_fs25.readFileSync)(packageJsonPath, "utf8"));
35691
+ const parsed = JSON.parse((0, import_node_fs26.readFileSync)(packageJsonPath, "utf8"));
34453
35692
  if (!isRecord(parsed) || typeof parsed.version !== "string") continue;
34454
35693
  const corePackagePath = (0, import_node_module5.createRequire)(modulePath).resolve(
34455
35694
  "playwright-core/package.json"
34456
35695
  );
34457
- const cliPath = (0, import_node_path26.join)((0, import_node_path26.dirname)(corePackagePath), "cli.js");
34458
- if (!(0, import_node_fs25.existsSync)(cliPath)) continue;
35696
+ const cliPath = (0, import_node_path27.join)((0, import_node_path27.dirname)(corePackagePath), "cli.js");
35697
+ if (!(0, import_node_fs26.existsSync)(cliPath)) continue;
34459
35698
  return {
34460
35699
  spec,
34461
35700
  modulePath,
@@ -34483,7 +35722,7 @@ async function provisionPlaywright() {
34483
35722
  await installVerifiedTarball({
34484
35723
  url: `https://registry.npmjs.org/playwright-core/-/playwright-core-${version}.tgz`,
34485
35724
  digest: { algorithm, encoding: "base64", value: digest },
34486
- destDir: (0, import_node_path26.join)(playwrightCoreDir(version), "node_modules", "playwright-core"),
35725
+ destDir: (0, import_node_path27.join)(playwrightCoreDir(version), "node_modules", "playwright-core"),
34487
35726
  installedMarker: "package.json",
34488
35727
  // npm tarballs hold the package under a leading `package/`
34489
35728
  stripComponents: 1,
@@ -34499,7 +35738,7 @@ async function provisionPlaywright() {
34499
35738
  }
34500
35739
  function probeBrowser(resolved, env) {
34501
35740
  const self = rnxSelfInvocation();
34502
- const probe3 = (0, import_node_child_process6.spawnSync)(
35741
+ const probe3 = (0, import_node_child_process7.spawnSync)(
34503
35742
  self.executable,
34504
35743
  [...self.prefixArgs, RNX_INTERNAL_COMMAND, RNX_INTERNAL_CHILDREN.playwrightProbe],
34505
35744
  {
@@ -34526,7 +35765,7 @@ function probeBrowser(resolved, env) {
34526
35765
  return {
34527
35766
  ok: true,
34528
35767
  executablePath: parsed.executablePath,
34529
- exists: parsed.exists && (0, import_node_fs25.existsSync)(parsed.executablePath)
35768
+ exists: parsed.exists && (0, import_node_fs26.existsSync)(parsed.executablePath)
34530
35769
  };
34531
35770
  } catch (error) {
34532
35771
  return {
@@ -34535,19 +35774,24 @@ function probeBrowser(resolved, env) {
34535
35774
  };
34536
35775
  }
34537
35776
  }
34538
- function ensurePlaywrightBrowser(resolved, headless, env = process.env) {
35777
+ async function ensurePlaywrightBrowser(resolved, headless, env = process.env) {
34539
35778
  const headlessShell = headless && process.platform !== "darwin";
34540
35779
  const probeEnv = { ...env, SOOTSIM_PW_HEADLESS_SHELL: headlessShell ? "1" : "0" };
34541
35780
  const browser = headlessShell ? "chromium-headless-shell" : "chromium";
34542
35781
  const before = probeBrowser(resolved, probeEnv);
34543
35782
  if (!before.ok) return before;
34544
35783
  if (before.exists) {
34545
- const missing2 = missingLibrariesMessage(before.executablePath, browser);
34546
- if (missing2) return { ok: false, message: missing2 };
34547
- return { ok: true, executablePath: before.executablePath, installed: false };
35784
+ const libraries2 = await ensureLinuxBrowserLibraries(before.executablePath, browser);
35785
+ if (!libraries2.ok) return libraries2;
35786
+ return {
35787
+ ok: true,
35788
+ executablePath: before.executablePath,
35789
+ installed: false,
35790
+ libraryPath: libraries2.libraryPath
35791
+ };
34548
35792
  }
34549
35793
  const installer = rnxSelfInvocation();
34550
- const install = (0, import_node_child_process6.spawnSync)(
35794
+ const install = (0, import_node_child_process7.spawnSync)(
34551
35795
  installer.executable,
34552
35796
  [
34553
35797
  ...installer.prefixArgs,
@@ -34580,94 +35824,30 @@ ${detail}` : ""}`
34580
35824
  message: `${resolved.spec}@${resolved.version} browser install completed, but its required ${browser} executable is still missing at ${after.executablePath}`
34581
35825
  };
34582
35826
  }
34583
- const missing = missingLibrariesMessage(after.executablePath, browser);
34584
- if (missing) return { ok: false, message: missing };
34585
- return { ok: true, executablePath: after.executablePath, installed: true };
34586
- }
34587
- function isTime64Distro() {
34588
- if (!(0, import_node_fs25.existsSync)("/etc/os-release")) return false;
34589
- const fields = Object.fromEntries(
34590
- (0, import_node_fs25.readFileSync)("/etc/os-release", "utf8").split("\n").map((line) => line.match(/^(\w+)="?([^"]*)"?$/)).filter((match) => match !== null).map((match) => [match[1], match[2]])
34591
- );
34592
- const version = Number.parseFloat(fields.VERSION_ID ?? "");
34593
- return fields.ID === "ubuntu" && version >= 24.04 || fields.ID === "debian" && version >= 13;
35827
+ const libraries = await ensureLinuxBrowserLibraries(after.executablePath, browser);
35828
+ if (!libraries.ok) return libraries;
35829
+ return {
35830
+ ok: true,
35831
+ executablePath: after.executablePath,
35832
+ installed: true,
35833
+ libraryPath: libraries.libraryPath
35834
+ };
34594
35835
  }
34595
- function missingLibrariesMessage(executablePath, browser) {
34596
- if (process.platform !== "linux") return null;
34597
- const ldd = (0, import_node_child_process6.spawnSync)("ldd", [executablePath], { encoding: "utf8", timeout: 3e4 });
34598
- const libraries = [...(ldd.stdout ?? "").matchAll(/^\s*(\S+) => not found$/gm)].map(
34599
- (match) => match[1]
34600
- );
34601
- if (!libraries.length) return null;
34602
- const time64 = isTime64Distro();
34603
- const packages = /* @__PURE__ */ new Set();
34604
- const unknown = [];
34605
- for (const library of libraries) {
34606
- const name2 = LIBRARY_PACKAGES[library];
34607
- if (!name2) unknown.push(library);
34608
- else packages.add(time64 && TIME64_PACKAGES.has(name2) ? `${name2}t64` : name2);
34609
- }
34610
- const sudo = process.getuid?.() === 0 ? "" : "sudo ";
34611
- return [
34612
- `${browser} at ${executablePath} cannot start: this system is missing shared libraries it links (${libraries.join(", ")}).`,
34613
- ...packages.size ? [
34614
- "On Debian or Ubuntu, install them and run the command again:",
34615
- "",
34616
- ` ${sudo}apt-get update && ${sudo}apt-get install -y --no-install-recommends ${[...packages].join(" ")}`
34617
- ] : [],
34618
- ...unknown.length ? ["", `No known Debian package provides: ${unknown.join(", ")}`] : []
34619
- ].join("\n");
34620
- }
34621
- var import_node_child_process6, import_node_fs25, import_node_module5, import_node_path26, LIBRARY_PACKAGES, TIME64_PACKAGES;
35836
+ var import_node_child_process7, import_node_fs26, import_node_module5, import_node_path27;
34622
35837
  var init_playwright_provisioning = __esm({
34623
35838
  "cli/drivers/playwright-provisioning.ts"() {
34624
35839
  "use strict";
34625
- import_node_child_process6 = require("node:child_process");
34626
- import_node_fs25 = require("node:fs");
35840
+ import_node_child_process7 = require("node:child_process");
35841
+ import_node_fs26 = require("node:fs");
34627
35842
  import_node_module5 = require("node:module");
34628
- import_node_path26 = require("node:path");
35843
+ import_node_path27 = require("node:path");
34629
35844
  init_src();
34630
35845
  init_home_paths();
34631
35846
  init_is_record();
34632
35847
  init_internal_child();
34633
35848
  init_self_invocation();
35849
+ init_linux_browser_libs();
34634
35850
  init_playwright_core_pin();
34635
- LIBRARY_PACKAGES = {
34636
- "libasound.so.2": "libasound2",
34637
- "libatk-1.0.so.0": "libatk1.0-0",
34638
- "libatk-bridge-2.0.so.0": "libatk-bridge2.0-0",
34639
- "libatspi.so.0": "libatspi2.0-0",
34640
- "libcairo.so.2": "libcairo2",
34641
- "libcups.so.2": "libcups2",
34642
- "libdbus-1.so.3": "libdbus-1-3",
34643
- "libexpat.so.1": "libexpat1",
34644
- "libgbm.so.1": "libgbm1",
34645
- "libgio-2.0.so.0": "libglib2.0-0",
34646
- "libglib-2.0.so.0": "libglib2.0-0",
34647
- "libgobject-2.0.so.0": "libglib2.0-0",
34648
- "libnspr4.so": "libnspr4",
34649
- "libnss3.so": "libnss3",
34650
- "libnssutil3.so": "libnss3",
34651
- "libpango-1.0.so.0": "libpango-1.0-0",
34652
- "libsmime3.so": "libnss3",
34653
- "libudev.so.1": "libudev1",
34654
- "libX11.so.6": "libx11-6",
34655
- "libxcb.so.1": "libxcb1",
34656
- "libXcomposite.so.1": "libxcomposite1",
34657
- "libXdamage.so.1": "libxdamage1",
34658
- "libXext.so.6": "libxext6",
34659
- "libXfixes.so.3": "libxfixes3",
34660
- "libxkbcommon.so.0": "libxkbcommon0",
34661
- "libXrandr.so.2": "libxrandr2"
34662
- };
34663
- TIME64_PACKAGES = /* @__PURE__ */ new Set([
34664
- "libasound2",
34665
- "libatk1.0-0",
34666
- "libatk-bridge2.0-0",
34667
- "libatspi2.0-0",
34668
- "libcups2",
34669
- "libglib2.0-0"
34670
- ]);
34671
35851
  }
34672
35852
  });
34673
35853
 
@@ -34719,7 +35899,7 @@ async function launch2(opts) {
34719
35899
  };
34720
35900
  }
34721
35901
  const playwrightEnv = { ...process.env };
34722
- const provisioning = ensurePlaywrightBrowser(
35902
+ const provisioning = await ensurePlaywrightBrowser(
34723
35903
  resolved,
34724
35904
  opts.headless ?? true,
34725
35905
  playwrightEnv
@@ -34756,7 +35936,8 @@ async function launch2(opts) {
34756
35936
  ...opts.viewport ? { SOOTSIM_PW_VIEWPORT: `${opts.viewport.width}x${opts.viewport.height}` } : {},
34757
35937
  SOOTSIM_PW_CONNECTED_ACK_FILE: connectAckFile,
34758
35938
  SOOTSIM_PW_CONNECT_TIMEOUT_MS: String(opts.connectTimeoutMs ?? 12e4),
34759
- SOOTSIM_PW_OWNER_PID: String(ownerPid)
35939
+ SOOTSIM_PW_OWNER_PID: String(ownerPid),
35940
+ SOOTSIM_PW_LIBRARY_PATH: provisioning.libraryPath ?? ""
34760
35941
  }
34761
35942
  }
34762
35943
  );
@@ -34848,32 +36029,6 @@ var init_open_url2 = __esm({
34848
36029
  }
34849
36030
  });
34850
36031
 
34851
- // cli/commands/inspect/env.ts
34852
- function isAgentEnv(env = process.env) {
34853
- if (env.PEACH_AGENT === "0") return false;
34854
- for (const name2 of AGENT_ENV_VARS) {
34855
- const v = env[name2];
34856
- if (v && v.trim() && v !== "0") return true;
34857
- }
34858
- return false;
34859
- }
34860
- var AGENT_ENV_VARS;
34861
- var init_env = __esm({
34862
- "cli/commands/inspect/env.ts"() {
34863
- "use strict";
34864
- AGENT_ENV_VARS = [
34865
- "PEACH_AGENT",
34866
- "PEACH_CLI_IDENTITY",
34867
- "CLAUDECODE",
34868
- "CLAUDE_CODE_ENTRYPOINT",
34869
- "CLAUDE_CODE_SESSION_ID",
34870
- "CODEX_THREAD_ID",
34871
- "CURSOR_TRACE_ID",
34872
- "AIDER_MODEL"
34873
- ];
34874
- }
34875
- });
34876
-
34877
36032
  // cli/privacy.ts
34878
36033
  function doNotTrack() {
34879
36034
  const value = process.env.DO_NOT_TRACK;
@@ -35592,14 +36747,14 @@ function assertExplicitBridgeLock(preferredPort, explicitPort, lock) {
35592
36747
  async function ensureRuntimeForOpen() {
35593
36748
  if (resolveDevCheckoutRuntimeRoot()) return;
35594
36749
  const active = readActiveRuntime();
35595
- if (active && import_node_fs26.default.existsSync(runtimeDir(active))) return;
36750
+ if (active && import_node_fs27.default.existsSync(runtimeDir(active))) return;
35596
36751
  console.error(" installing peach engine runtime...");
35597
36752
  const { runRuntime: runRuntime2 } = await Promise.resolve().then(() => (init_runtime(), runtime_exports));
35598
36753
  await runRuntime2(["install"], {});
35599
36754
  }
35600
36755
  function spawnSootsim(args) {
35601
36756
  const { executable, prefixArgs } = rnxSelfInvocation();
35602
- return (0, import_node_child_process7.spawn)(executable, [...prefixArgs, ...args], {
36757
+ return (0, import_node_child_process8.spawn)(executable, [...prefixArgs, ...args], {
35603
36758
  detached: true,
35604
36759
  stdio: "ignore",
35605
36760
  env: process.env
@@ -35746,10 +36901,10 @@ async function buildResolvedBundleOpenUrl(target, baseUrl, opts = {}) {
35746
36901
  }
35747
36902
  function normalizeReplacementPath(filePath) {
35748
36903
  if (filePath.startsWith("~/")) {
35749
- return import_node_path27.default.join(import_node_os4.default.homedir(), filePath.slice(2));
36904
+ return import_node_path28.default.join(import_node_os4.default.homedir(), filePath.slice(2));
35750
36905
  }
35751
- if (import_node_path27.default.isAbsolute(filePath)) return filePath;
35752
- return import_node_path27.default.resolve(process.cwd(), filePath);
36906
+ if (import_node_path28.default.isAbsolute(filePath)) return filePath;
36907
+ return import_node_path28.default.resolve(process.cwd(), filePath);
35753
36908
  }
35754
36909
  function parseOpenRuntimeConfig(args) {
35755
36910
  const modules = {};
@@ -35768,7 +36923,7 @@ function parseOpenRuntimeConfig(args) {
35768
36923
  }
35769
36924
  const moduleName = raw.slice(0, eqIndex).trim();
35770
36925
  const filePath = normalizeReplacementPath(raw.slice(eqIndex + 1).trim());
35771
- if (!import_node_fs26.default.existsSync(filePath)) {
36926
+ if (!import_node_fs27.default.existsSync(filePath)) {
35772
36927
  console.error(` peach open: replacement file not found: ${filePath}`);
35773
36928
  rnxExit(1);
35774
36929
  }
@@ -35799,7 +36954,7 @@ async function resolveAppProjectForBundleUrl(bundleUrl) {
35799
36954
  return advertisedRoot ? resolveAppProject(advertisedRoot) : null;
35800
36955
  }
35801
36956
  async function ensureConfiguredRuntime(version) {
35802
- if (import_node_fs26.default.existsSync(import_node_path27.default.join(runtimeDir(version), "index.html"))) return;
36957
+ if (import_node_fs27.default.existsSync(import_node_path28.default.join(runtimeDir(version), "index.html"))) return;
35803
36958
  console.error(` installing configured engine runtime ${version}...`);
35804
36959
  const result = await rnxRuntime.install({
35805
36960
  version,
@@ -36116,7 +37271,7 @@ function playwrightHostPidForSim(sim) {
36116
37271
  function signalDriverLaunchConnected(result) {
36117
37272
  if (!result.connectAckFile) return false;
36118
37273
  try {
36119
- import_node_fs26.default.writeFileSync(
37274
+ import_node_fs27.default.writeFileSync(
36120
37275
  result.connectAckFile,
36121
37276
  `${JSON.stringify({ connectedAt: Date.now(), pid: result.pid ?? null })}
36122
37277
  `,
@@ -36130,19 +37285,19 @@ function signalDriverLaunchConnected(result) {
36130
37285
  function printDriverDiagnosticLogTail(result) {
36131
37286
  if (!result.diagnosticLogPath) return;
36132
37287
  try {
36133
- const detail = import_node_fs26.default.readFileSync(result.diagnosticLogPath, "utf8").trim();
37288
+ const detail = import_node_fs27.default.readFileSync(result.diagnosticLogPath, "utf8").trim();
36134
37289
  if (!detail) {
36135
- console.error(` ${import_node_path27.default.basename(result.diagnosticLogPath)} was empty`);
37290
+ console.error(` ${import_node_path28.default.basename(result.diagnosticLogPath)} was empty`);
36136
37291
  return;
36137
37292
  }
36138
37293
  const shown = detail.length > 4e3 ? `\u2026
36139
37294
  ${detail.slice(-4e3)}` : detail;
36140
- console.error(` ${import_node_path27.default.basename(result.diagnosticLogPath)}:`);
37295
+ console.error(` ${import_node_path28.default.basename(result.diagnosticLogPath)}:`);
36141
37296
  console.error(shown);
36142
37297
  } catch (err) {
36143
37298
  const message = err instanceof Error ? err.message : String(err);
36144
37299
  console.error(
36145
- ` failed to read ${import_node_path27.default.basename(result.diagnosticLogPath)}: ${message}`
37300
+ ` failed to read ${import_node_path28.default.basename(result.diagnosticLogPath)}: ${message}`
36146
37301
  );
36147
37302
  }
36148
37303
  }
@@ -36163,11 +37318,11 @@ async function waitForProcessExit(pid, timeoutMs = 2500) {
36163
37318
  return !isProcessAlive2(pid);
36164
37319
  }
36165
37320
  function isPlaywrightHostProcess(pid) {
36166
- const plain = (0, import_node_child_process7.spawnSync)("ps", ["-o", "command=", "-p", String(pid)], {
37321
+ const plain = (0, import_node_child_process8.spawnSync)("ps", ["-o", "command=", "-p", String(pid)], {
36167
37322
  encoding: "utf8",
36168
37323
  stdio: ["ignore", "pipe", "pipe"]
36169
37324
  });
36170
- const withEnv = (0, import_node_child_process7.spawnSync)("ps", ["eww", "-o", "command=", "-p", String(pid)], {
37325
+ const withEnv = (0, import_node_child_process8.spawnSync)("ps", ["eww", "-o", "command=", "-p", String(pid)], {
36171
37326
  encoding: "utf8",
36172
37327
  stdio: ["ignore", "pipe", "pipe"]
36173
37328
  });
@@ -37121,14 +38276,14 @@ async function runCloseCommand(args, opts = {}) {
37121
38276
  bridge.close();
37122
38277
  }
37123
38278
  }
37124
- var import_node_child_process7, import_node_fs26, import_node_os4, import_node_path27, import_app_catalog_wire, import_devices2, import_ws4, DEFAULT_DRIVER_CONNECT_TIMEOUT_MS, DRIVER_CONNECT_INTERVAL_MS, DRIVER_CONNECT_HOST_GRACE_MS, OPEN_BRIDGE_SPAWN_TIMEOUT_MS, SHELL_APPS, DEV_BUNDLE_RESOLVE_ATTEMPTS, DEV_BUNDLE_RESOLVE_INTERVAL_MS;
38279
+ var import_node_child_process8, import_node_fs27, import_node_os4, import_node_path28, import_app_catalog_wire, import_devices2, import_ws4, DEFAULT_DRIVER_CONNECT_TIMEOUT_MS, DRIVER_CONNECT_INTERVAL_MS, DRIVER_CONNECT_HOST_GRACE_MS, OPEN_BRIDGE_SPAWN_TIMEOUT_MS, SHELL_APPS, DEV_BUNDLE_RESOLVE_ATTEMPTS, DEV_BUNDLE_RESOLVE_INTERVAL_MS;
37125
38280
  var init_control = __esm({
37126
38281
  "cli/commands/control.ts"() {
37127
38282
  "use strict";
37128
- import_node_child_process7 = require("node:child_process");
37129
- import_node_fs26 = __toESM(require("node:fs"), 1);
38283
+ import_node_child_process8 = require("node:child_process");
38284
+ import_node_fs27 = __toESM(require("node:fs"), 1);
37130
38285
  import_node_os4 = __toESM(require("node:os"), 1);
37131
- import_node_path27 = __toESM(require("node:path"), 1);
38286
+ import_node_path28 = __toESM(require("node:path"), 1);
37132
38287
  import_app_catalog_wire = require("peach-engine/engine/app-catalog-wire");
37133
38288
  import_devices2 = require("peach-engine/settings/devices");
37134
38289
  import_ws4 = require("ws");