Implement a GPUI frontend for super-sideloader with AI help
Dadoum

Dadoum commited on 2026-07-07 17:31:00
Showing 27 changed files, with 11091 additions and 2654 deletions.

... ...
@@ -2,6 +2,95 @@
2 2
 # It is not intended for manual editing.
3 3
 version = 4
4 4
 
5
+[[package]]
6
+name = "accesskit"
7
+version = "0.24.1"
8
+source = "registry+https://github.com/rust-lang/crates.io-index"
9
+checksum = "d3b7f7f85a7e5f68090000ed7622545829afd484d210358702ae4cb97dd0c320"
10
+dependencies = [
11
+ "uuid",
12
+]
13
+
14
+[[package]]
15
+name = "accesskit_atspi_common"
16
+version = "0.19.0"
17
+source = "registry+https://github.com/rust-lang/crates.io-index"
18
+checksum = "7e98018dbef3583d751dbb96e07b8728fb99581360e1c3df408af16f4a80b821"
19
+dependencies = [
20
+ "accesskit",
21
+ "accesskit_consumer 0.37.0",
22
+ "atspi-common",
23
+ "phf",
24
+ "serde",
25
+ "zvariant",
26
+]
27
+
28
+[[package]]
29
+name = "accesskit_consumer"
30
+version = "0.35.0"
31
+source = "registry+https://github.com/rust-lang/crates.io-index"
32
+checksum = "53cf47daed85312e763fbf85ceca136e0d7abc68e0a7e12abe11f48172bc3b10"
33
+dependencies = [
34
+ "accesskit",
35
+ "hashbrown 0.16.1",
36
+]
37
+
38
+[[package]]
39
+name = "accesskit_consumer"
40
+version = "0.37.0"
41
+source = "registry+https://github.com/rust-lang/crates.io-index"
42
+checksum = "f950720ce064757a1b629caad3a408e8d2c63bb01f29b8a3ff8daa331053ffeb"
43
+dependencies = [
44
+ "accesskit",
45
+ "hashbrown 0.16.1",
46
+]
47
+
48
+[[package]]
49
+name = "accesskit_macos"
50
+version = "0.26.2"
51
+source = "registry+https://github.com/rust-lang/crates.io-index"
52
+checksum = "17cb8b66cef272d48161b02a6317cc2bdd5f98bb0a5e79c68f704a5862aa396b"
53
+dependencies = [
54
+ "accesskit",
55
+ "accesskit_consumer 0.37.0",
56
+ "hashbrown 0.16.1",
57
+ "objc2 0.5.2",
58
+ "objc2-app-kit 0.2.2",
59
+ "objc2-foundation 0.2.2",
60
+]
61
+
62
+[[package]]
63
+name = "accesskit_unix"
64
+version = "0.22.0"
65
+source = "registry+https://github.com/rust-lang/crates.io-index"
66
+checksum = "5376ba4cc23312587634abb5250b1ce8618f01a55915608209aafd01efb4bf8c"
67
+dependencies = [
68
+ "accesskit",
69
+ "accesskit_atspi_common",
70
+ "async-channel",
71
+ "async-executor",
72
+ "async-task",
73
+ "atspi",
74
+ "futures-lite 2.6.1",
75
+ "futures-util",
76
+ "serde",
77
+ "zbus",
78
+]
79
+
80
+[[package]]
81
+name = "accesskit_windows"
82
+version = "0.32.1"
83
+source = "registry+https://github.com/rust-lang/crates.io-index"
84
+checksum = "eff7009f1a532e917d66970a1e80c965140c6cfbbabbdde3d64e5431e6c78e21"
85
+dependencies = [
86
+ "accesskit",
87
+ "accesskit_consumer 0.35.0",
88
+ "hashbrown 0.16.1",
89
+ "static_assertions",
90
+ "windows 0.62.2",
91
+ "windows-core 0.62.2",
92
+]
93
+
5 94
 [[package]]
6 95
 name = "addr2line"
7 96
 version = "0.25.1"
... ...
@@ -37,44 +126,69 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
37 126
 
38 127
 [[package]]
39 128
 name = "aead"
40
-version = "0.6.0-rc.10"
129
+version = "0.6.1"
41 130
 source = "registry+https://github.com/rust-lang/crates.io-index"
42
-checksum = "6b657e772794c6b04730ea897b66a058ccd866c16d1967da05eeeecec39043fe"
131
+checksum = "1973cfbc1a2daf9cf550e74e1f088c28e7f7d8c1e1418fb6c9dc5184b7e84c99"
43 132
 dependencies = [
44
- "crypto-common",
45
- "inout",
133
+ "crypto-common 0.2.2",
134
+ "inout 0.2.2",
46 135
 ]
47 136
 
48 137
 [[package]]
49 138
 name = "aes"
50
-version = "0.9.0-rc.4"
139
+version = "0.8.4"
51 140
 source = "registry+https://github.com/rust-lang/crates.io-index"
52
-checksum = "04097e08a47d9ad181c2e1f4a5fabc9ae06ce8839a333ba9a949bcb0d31fd2a3"
141
+checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"
53 142
 dependencies = [
54
- "cipher",
55
- "cpubits",
143
+ "cfg-if",
144
+ "cipher 0.4.4",
56 145
  "cpufeatures 0.2.17",
146
+ "zeroize",
147
+]
148
+
149
+[[package]]
150
+name = "aes"
151
+version = "0.9.1"
152
+source = "registry+https://github.com/rust-lang/crates.io-index"
153
+checksum = "f1fc76eaeac4c9164506c466d4ffdd8ec9d0c5bf57ee97177c4d8eceb3a0e138"
154
+dependencies = [
155
+ "cipher 0.5.2",
156
+ "cpubits",
157
+ "cpufeatures 0.3.0",
57 158
 ]
58 159
 
59 160
 [[package]]
60 161
 name = "aes-gcm"
61
-version = "0.11.0-rc.3"
162
+version = "0.11.0"
62 163
 source = "registry+https://github.com/rust-lang/crates.io-index"
63
-checksum = "e22c0c90bbe8d4f77c3ca9ddabe41a1f8382d6fc1f7cea89459d0f320371f972"
164
+checksum = "fdf011db2e21ce0d575593d749db5554b47fed37aff429e4dc50bc91ac93a028"
64 165
 dependencies = [
65 166
  "aead",
66
- "aes",
67
- "cipher",
167
+ "aes 0.9.1",
168
+ "cipher 0.5.2",
68 169
  "ctr",
69 170
  "ghash",
70 171
  "subtle",
71 172
 ]
72 173
 
174
+[[package]]
175
+name = "ahash"
176
+version = "0.8.12"
177
+source = "registry+https://github.com/rust-lang/crates.io-index"
178
+checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
179
+dependencies = [
180
+ "cfg-if",
181
+ "const-random",
182
+ "once_cell",
183
+ "version_check",
184
+ "zerocopy",
185
+]
186
+
73 187
 [[package]]
74 188
 name = "aho-corasick"
75
-version = "1.1.3"
189
+version = "1.1.4"
76 190
 source = "registry+https://github.com/rust-lang/crates.io-index"
77
-checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
191
+checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
78 192
 dependencies = [
79 193
  "memchr",
80 194
 ]
... ...
@@ -85,6 +199,30 @@ version = "0.1.3"
85 199
 source = "registry+https://github.com/rust-lang/crates.io-index"
86 200
 checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd"
87 201
 
202
+[[package]]
203
+name = "aligned"
204
+version = "0.4.3"
205
+source = "registry+https://github.com/rust-lang/crates.io-index"
206
+checksum = "ee4508988c62edf04abd8d92897fca0c2995d907ce1dfeaf369dac3716a40685"
207
+dependencies = [
208
+ "as-slice",
209
+]
210
+
211
+[[package]]
212
+name = "aligned-vec"
213
+version = "0.6.4"
214
+source = "registry+https://github.com/rust-lang/crates.io-index"
215
+checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b"
216
+dependencies = [
217
+ "equator",
218
+]
219
+
220
+[[package]]
221
+name = "allocator-api2"
222
+version = "0.2.21"
223
+source = "registry+https://github.com/rust-lang/crates.io-index"
224
+checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
225
+
88 226
 [[package]]
89 227
 name = "android-coreadi"
90 228
 version = "0.1.0"
... ...
@@ -93,7 +231,7 @@ dependencies = [
93 231
  "elf-loader",
94 232
  "libc",
95 233
  "ouroboros",
96
- "rand",
234
+ "rand 0.9.4",
97 235
 ]
98 236
 
99 237
 [[package]]
... ...
@@ -105,20 +243,11 @@ dependencies = [
105 243
  "libc",
106 244
 ]
107 245
 
108
-[[package]]
109
-name = "ansi_term"
110
-version = "0.12.1"
111
-source = "registry+https://github.com/rust-lang/crates.io-index"
112
-checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
113
-dependencies = [
114
- "winapi",
115
-]
116
-
117 246
 [[package]]
118 247
 name = "anstream"
119
-version = "0.6.21"
248
+version = "1.0.0"
120 249
 source = "registry+https://github.com/rust-lang/crates.io-index"
121
-checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a"
250
+checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d"
122 251
 dependencies = [
123 252
  "anstyle",
124 253
  "anstyle-parse",
... ...
@@ -131,3532 +260,7787 @@ dependencies = [
131 260
 
132 261
 [[package]]
133 262
 name = "anstyle"
134
-version = "1.0.13"
263
+version = "1.0.14"
135 264
 source = "registry+https://github.com/rust-lang/crates.io-index"
136
-checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78"
265
+checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000"
137 266
 
138 267
 [[package]]
139 268
 name = "anstyle-parse"
140
-version = "0.2.7"
269
+version = "1.0.0"
141 270
 source = "registry+https://github.com/rust-lang/crates.io-index"
142
-checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2"
271
+checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e"
143 272
 dependencies = [
144 273
  "utf8parse",
145 274
 ]
146 275
 
147 276
 [[package]]
148 277
 name = "anstyle-query"
149
-version = "1.1.4"
278
+version = "1.1.5"
150 279
 source = "registry+https://github.com/rust-lang/crates.io-index"
151
-checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2"
280
+checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
152 281
 dependencies = [
153
- "windows-sys 0.60.2",
282
+ "windows-sys 0.61.2",
154 283
 ]
155 284
 
156 285
 [[package]]
157 286
 name = "anstyle-wincon"
158
-version = "3.0.10"
287
+version = "3.0.11"
159 288
 source = "registry+https://github.com/rust-lang/crates.io-index"
160
-checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a"
289
+checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
161 290
 dependencies = [
162 291
  "anstyle",
163 292
  "once_cell_polyfill",
164
- "windows-sys 0.60.2",
293
+ "windows-sys 0.61.2",
165 294
 ]
166 295
 
167 296
 [[package]]
168 297
 name = "anyhow"
169
-version = "1.0.100"
298
+version = "1.0.103"
170 299
 source = "registry+https://github.com/rust-lang/crates.io-index"
171
-checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
300
+checksum = "2a4385e2e34eb35d6b3efe798b9eb88096925d87726c0798709bf56d9ed84af3"
172 301
 
173 302
 [[package]]
174 303
 name = "apple-codesign"
175 304
 version = "0.1.0"
176 305
 dependencies = [
177
- "futures",
178
- "lief",
179
- "log",
306
+ "byteorder",
307
+ "cms",
308
+ "const-oid 0.9.6",
309
+ "der",
310
+ "memmap2",
311
+ "pem-rfc7468",
180 312
  "plist",
181
- "sha1",
182
- "sha2",
183
- "tokio",
313
+ "rayon",
314
+ "rsa",
315
+ "sha1 0.11.0",
316
+ "sha2 0.10.9",
317
+ "sha2 0.11.0",
318
+ "spki",
319
+ "thiserror 2.0.18",
320
+ "x509-cert",
184 321
 ]
185 322
 
186 323
 [[package]]
187
-name = "aquamarine"
188
-version = "0.1.12"
324
+name = "ar_archive_writer"
325
+version = "0.5.2"
189 326
 source = "registry+https://github.com/rust-lang/crates.io-index"
190
-checksum = "a941c39708478e8eea39243b5983f1c42d2717b3620ee91f4a52115fd02ac43f"
327
+checksum = "4087686b4b0a3427190bae57a1d9a478dbb2d40c5dc1bd6e2b6d797913bdd348"
191 328
 dependencies = [
192
- "itertools 0.9.0",
193
- "proc-macro-error",
194
- "proc-macro2",
195
- "quote",
196
- "syn 1.0.109",
329
+ "object",
197 330
 ]
198 331
 
199 332
 [[package]]
200
-name = "async-compression"
201
-version = "0.4.36"
333
+name = "arbitrary"
334
+version = "1.4.2"
335
+source = "registry+https://github.com/rust-lang/crates.io-index"
336
+checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1"
337
+
338
+[[package]]
339
+name = "arg_enum_proc_macro"
340
+version = "0.3.4"
202 341
 source = "registry+https://github.com/rust-lang/crates.io-index"
203
-checksum = "98ec5f6c2f8bc326c994cb9e241cc257ddaba9afa8555a43cffbb5dd86efaa37"
342
+checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea"
204 343
 dependencies = [
205
- "compression-codecs",
206
- "compression-core",
207
- "futures-core",
208
- "pin-project-lite",
209
- "tokio",
344
+ "proc-macro2",
345
+ "quote",
346
+ "syn",
210 347
 ]
211 348
 
212 349
 [[package]]
213
-name = "atomic-waker"
214
-version = "1.1.2"
350
+name = "arrayref"
351
+version = "0.3.9"
215 352
 source = "registry+https://github.com/rust-lang/crates.io-index"
216
-checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
353
+checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb"
217 354
 
218 355
 [[package]]
219
-name = "atty"
220
-version = "0.2.14"
356
+name = "arrayvec"
357
+version = "0.7.8"
221 358
 source = "registry+https://github.com/rust-lang/crates.io-index"
222
-checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
223
-dependencies = [
224
- "hermit-abi 0.1.19",
225
- "libc",
226
- "winapi",
227
-]
359
+checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56"
228 360
 
229 361
 [[package]]
230
-name = "autocfg"
231
-version = "1.5.0"
362
+name = "as-raw-xcb-connection"
363
+version = "1.0.1"
232 364
 source = "registry+https://github.com/rust-lang/crates.io-index"
233
-checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
365
+checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b"
234 366
 
235 367
 [[package]]
236
-name = "autocxx"
237
-version = "0.26.0"
368
+name = "as-slice"
369
+version = "0.2.1"
238 370
 source = "registry+https://github.com/rust-lang/crates.io-index"
239
-checksum = "1ba64dd33efd8f09724143d45ab91b48aebcee52f4fb11add3464c998fab47dc"
371
+checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516"
240 372
 dependencies = [
241
- "aquamarine",
242
- "autocxx-macro",
243
- "cxx",
244
- "moveit",
373
+ "stable_deref_trait",
245 374
 ]
246 375
 
247 376
 [[package]]
248
-name = "autocxx-macro"
249
-version = "0.26.0"
377
+name = "ash"
378
+version = "0.38.0+1.3.281"
250 379
 source = "registry+https://github.com/rust-lang/crates.io-index"
251
-checksum = "8e594e68d030b6eb1ce7e2b40958f4f4ae7150c588c76d76b9f8178d41c47d80"
380
+checksum = "0bb44936d800fea8f016d7f2311c6a4f97aebd5dc86f09906139ec848cf3a46f"
252 381
 dependencies = [
253
- "autocxx-parser",
254
- "proc-macro-error",
255
- "proc-macro2",
256
- "quote",
257
- "syn 2.0.107",
382
+ "libloading",
258 383
 ]
259 384
 
260 385
 [[package]]
261
-name = "autocxx-parser"
262
-version = "0.26.0"
386
+name = "ashpd"
387
+version = "0.13.12"
263 388
 source = "registry+https://github.com/rust-lang/crates.io-index"
264
-checksum = "2ef00b2fc378804c31c4fbd693a7fea93f8a90467dce331dae1e4ce41e542953"
389
+checksum = "281e6645758940dee594495e28807a7672ce40f11ebf4df6c22c4fcd59e2689f"
265 390
 dependencies = [
266
- "indexmap 1.9.3",
267
- "itertools 0.10.5",
268
- "log",
269
- "once_cell",
270
- "proc-macro2",
271
- "quote",
391
+ "enumflags2",
392
+ "futures-channel",
393
+ "futures-util",
394
+ "getrandom 0.4.3",
272 395
  "serde",
273
- "serde_json",
274
- "syn 2.0.107",
275
- "thiserror 1.0.69",
396
+ "serde_repr",
397
+ "wayland-backend",
398
+ "wayland-client",
399
+ "wayland-protocols",
400
+ "zbus",
276 401
 ]
277 402
 
278 403
 [[package]]
279
-name = "aws-lc-rs"
280
-version = "1.15.2"
404
+name = "async-broadcast"
405
+version = "0.7.2"
281 406
 source = "registry+https://github.com/rust-lang/crates.io-index"
282
-checksum = "6a88aab2464f1f25453baa7a07c84c5b7684e274054ba06817f382357f77a288"
407
+checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532"
283 408
 dependencies = [
284
- "aws-lc-sys",
285
- "zeroize",
409
+ "event-listener",
410
+ "event-listener-strategy",
411
+ "futures-core",
412
+ "pin-project-lite",
286 413
 ]
287 414
 
288 415
 [[package]]
289
-name = "aws-lc-sys"
290
-version = "0.35.0"
416
+name = "async-channel"
417
+version = "2.5.0"
291 418
 source = "registry+https://github.com/rust-lang/crates.io-index"
292
-checksum = "b45afffdee1e7c9126814751f88dddc747f41d91da16c9551a0f1e8a11e788a1"
419
+checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2"
293 420
 dependencies = [
294
- "cc",
295
- "cmake",
296
- "dunce",
297
- "fs_extra",
421
+ "concurrent-queue",
422
+ "event-listener-strategy",
423
+ "futures-core",
424
+ "pin-project-lite",
298 425
 ]
299 426
 
300 427
 [[package]]
301
-name = "backtrace"
302
-version = "0.3.76"
428
+name = "async-compression"
429
+version = "0.4.42"
303 430
 source = "registry+https://github.com/rust-lang/crates.io-index"
304
-checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6"
431
+checksum = "e79b3f8a79cccc2898f31920fc69f304859b3bd567490f75ebf51ae1c792a9ac"
305 432
 dependencies = [
306
- "addr2line",
307
- "cfg-if 1.0.4",
308
- "libc",
309
- "miniz_oxide",
310
- "object",
311
- "rustc-demangle",
312
- "windows-link 0.2.1",
433
+ "compression-codecs",
434
+ "compression-core",
435
+ "futures-io",
436
+ "pin-project-lite",
437
+ "tokio",
313 438
 ]
314 439
 
315 440
 [[package]]
316
-name = "backtrace-ext"
317
-version = "0.2.1"
441
+name = "async-executor"
442
+version = "1.14.0"
318 443
 source = "registry+https://github.com/rust-lang/crates.io-index"
319
-checksum = "537beee3be4a18fb023b570f80e3ae28003db9167a751266b259926e25539d50"
444
+checksum = "c96bf972d85afc50bf5ab8fe2d54d1586b4e0b46c97c50a0c9e71e2f7bcd812a"
320 445
 dependencies = [
321
- "backtrace",
446
+ "async-task",
447
+ "concurrent-queue",
448
+ "fastrand 2.4.1",
449
+ "futures-lite 2.6.1",
450
+ "pin-project-lite",
451
+ "slab",
322 452
 ]
323 453
 
324 454
 [[package]]
325
-name = "base16ct"
326
-version = "1.0.0"
455
+name = "async-fs"
456
+version = "2.2.0"
327 457
 source = "registry+https://github.com/rust-lang/crates.io-index"
328
-checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6"
458
+checksum = "8034a681df4aed8b8edbd7fbe472401ecf009251c8b40556b304567052e294c5"
459
+dependencies = [
460
+ "async-lock",
461
+ "blocking",
462
+ "futures-lite 2.6.1",
463
+]
329 464
 
330 465
 [[package]]
331
-name = "base64"
332
-version = "0.21.7"
466
+name = "async-io"
467
+version = "2.6.0"
333 468
 source = "registry+https://github.com/rust-lang/crates.io-index"
334
-checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
469
+checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc"
470
+dependencies = [
471
+ "autocfg",
472
+ "cfg-if",
473
+ "concurrent-queue",
474
+ "futures-io",
475
+ "futures-lite 2.6.1",
476
+ "parking",
477
+ "polling",
478
+ "rustix 1.1.4",
479
+ "slab",
480
+ "windows-sys 0.61.2",
481
+]
335 482
 
336 483
 [[package]]
337
-name = "base64"
338
-version = "0.22.1"
484
+name = "async-lock"
485
+version = "3.4.2"
339 486
 source = "registry+https://github.com/rust-lang/crates.io-index"
340
-checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
487
+checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311"
488
+dependencies = [
489
+ "event-listener",
490
+ "event-listener-strategy",
491
+ "pin-project-lite",
492
+]
341 493
 
342 494
 [[package]]
343
-name = "bincode"
344
-version = "2.0.1"
495
+name = "async-net"
496
+version = "2.0.0"
345 497
 source = "registry+https://github.com/rust-lang/crates.io-index"
346
-checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740"
498
+checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7"
347 499
 dependencies = [
348
- "serde",
349
- "unty",
500
+ "async-io",
501
+ "blocking",
502
+ "futures-lite 2.6.1",
350 503
 ]
351 504
 
352 505
 [[package]]
353
-name = "bindgen"
354
-version = "0.53.3"
506
+name = "async-process"
507
+version = "2.5.0"
355 508
 source = "registry+https://github.com/rust-lang/crates.io-index"
356
-checksum = "c72a978d268b1d70b0e963217e60fdabd9523a941457a6c42a7315d15c7e89e5"
509
+checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75"
357 510
 dependencies = [
358
- "bitflags 1.3.2",
359
- "cexpr",
360
- "cfg-if 0.1.10",
361
- "clang-sys",
362
- "clap",
363
- "env_logger 0.7.1",
364
- "lazy_static",
365
- "lazycell",
366
- "log",
367
- "peeking_take_while",
368
- "proc-macro2",
369
- "quote",
370
- "regex",
371
- "rustc-hash 1.1.0",
372
- "shlex 0.1.1",
373
- "which",
511
+ "async-channel",
512
+ "async-io",
513
+ "async-lock",
514
+ "async-signal",
515
+ "async-task",
516
+ "blocking",
517
+ "cfg-if",
518
+ "event-listener",
519
+ "futures-lite 2.6.1",
520
+ "rustix 1.1.4",
374 521
 ]
375 522
 
376 523
 [[package]]
377
-name = "bitflags"
378
-version = "1.3.2"
524
+name = "async-recursion"
525
+version = "1.1.1"
379 526
 source = "registry+https://github.com/rust-lang/crates.io-index"
380
-checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
527
+checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
528
+dependencies = [
529
+ "proc-macro2",
530
+ "quote",
531
+ "syn",
532
+]
381 533
 
382 534
 [[package]]
383
-name = "bitflags"
384
-version = "2.10.0"
535
+name = "async-signal"
536
+version = "0.2.14"
385 537
 source = "registry+https://github.com/rust-lang/crates.io-index"
386
-checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
538
+checksum = "52b5aaafa020cf5053a01f2a60e8ff5dccf550f0f77ec54a4e47285ac2bab485"
539
+dependencies = [
540
+ "async-io",
541
+ "async-lock",
542
+ "atomic-waker",
543
+ "cfg-if",
544
+ "futures-core",
545
+ "futures-io",
546
+ "rustix 1.1.4",
547
+ "signal-hook-registry",
548
+ "slab",
549
+ "windows-sys 0.61.2",
550
+]
387 551
 
388 552
 [[package]]
389
-name = "block"
390
-version = "0.1.6"
553
+name = "async-task"
554
+version = "4.7.1"
391 555
 source = "registry+https://github.com/rust-lang/crates.io-index"
392
-checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
556
+checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de"
393 557
 
394 558
 [[package]]
395
-name = "block-buffer"
396
-version = "0.11.0"
559
+name = "async-trait"
560
+version = "0.1.89"
397 561
 source = "registry+https://github.com/rust-lang/crates.io-index"
398
-checksum = "96eb4cdd6cf1b31d671e9efe75c5d1ec614776856cefbe109ca373554a6d514f"
562
+checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
399 563
 dependencies = [
400
- "hybrid-array",
564
+ "proc-macro2",
565
+ "quote",
566
+ "syn",
401 567
 ]
402 568
 
403 569
 [[package]]
404
-name = "block-padding"
405
-version = "0.4.2"
570
+name = "async_zip"
571
+version = "0.0.18"
406 572
 source = "registry+https://github.com/rust-lang/crates.io-index"
407
-checksum = "710f1dd022ef4e93f8a438b4ba958de7f64308434fa6a87104481645cc30068b"
573
+checksum = "0d8c50d65ce1b0e0cb65a785ff615f78860d7754290647d3b983208daa4f85e6"
408 574
 dependencies = [
409
- "hybrid-array",
575
+ "async-compression",
576
+ "crc32fast",
577
+ "futures-lite 2.6.1",
578
+ "pin-project",
579
+ "thiserror 2.0.18",
410 580
 ]
411 581
 
412 582
 [[package]]
413
-name = "bumpalo"
414
-version = "3.19.0"
583
+name = "atomic"
584
+version = "0.5.3"
415 585
 source = "registry+https://github.com/rust-lang/crates.io-index"
416
-checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
586
+checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba"
417 587
 
418 588
 [[package]]
419
-name = "byteorder"
420
-version = "1.5.0"
589
+name = "atomic-waker"
590
+version = "1.1.2"
421 591
 source = "registry+https://github.com/rust-lang/crates.io-index"
422
-checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
592
+checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
423 593
 
424 594
 [[package]]
425
-name = "bytes"
426
-version = "1.10.1"
595
+name = "atspi"
596
+version = "0.29.0"
427 597
 source = "registry+https://github.com/rust-lang/crates.io-index"
428
-checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a"
598
+checksum = "c77886257be21c9cd89a4ae7e64860c6f0eefca799bb79127913052bd0eefb3d"
599
+dependencies = [
600
+ "atspi-common",
601
+ "atspi-proxies",
602
+]
429 603
 
430 604
 [[package]]
431
-name = "cbc"
432
-version = "0.2.0-rc.3"
605
+name = "atspi-common"
606
+version = "0.13.0"
433 607
 source = "registry+https://github.com/rust-lang/crates.io-index"
434
-checksum = "85742c5f1d0dda799d2e582c76b82b817d3e4d6434dd285e48e90ed0c963b667"
608
+checksum = "20c5617155740c98003016429ad13fe43ce7a77b007479350a9f8bf95a29f63d"
435 609
 dependencies = [
436
- "cipher",
610
+ "enumflags2",
611
+ "serde",
612
+ "static_assertions",
613
+ "zbus",
614
+ "zbus-lockstep",
615
+ "zbus-lockstep-macros",
616
+ "zbus_names",
617
+ "zvariant",
437 618
 ]
438 619
 
439 620
 [[package]]
440
-name = "cc"
441
-version = "1.2.51"
621
+name = "atspi-proxies"
622
+version = "0.13.0"
442 623
 source = "registry+https://github.com/rust-lang/crates.io-index"
443
-checksum = "7a0aeaff4ff1a90589618835a598e545176939b97874f7abc7851caa0618f203"
624
+checksum = "2230e48787ed3eb4088996eab66a32ca20c0b67bbd4fd6cdfe79f04f1f04c9fc"
444 625
 dependencies = [
445
- "find-msvc-tools",
446
- "jobserver",
447
- "libc",
448
- "shlex 1.3.0",
626
+ "atspi-common",
627
+ "serde",
628
+ "zbus",
449 629
 ]
450 630
 
451 631
 [[package]]
452
-name = "cesu8"
453
-version = "1.1.0"
632
+name = "autocfg"
633
+version = "1.5.1"
454 634
 source = "registry+https://github.com/rust-lang/crates.io-index"
455
-checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
635
+checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
456 636
 
457 637
 [[package]]
458
-name = "cexpr"
459
-version = "0.4.0"
638
+name = "av-scenechange"
639
+version = "0.14.1"
460 640
 source = "registry+https://github.com/rust-lang/crates.io-index"
461
-checksum = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27"
641
+checksum = "0f321d77c20e19b92c39e7471cf986812cbb46659d2af674adc4331ef3f18394"
462 642
 dependencies = [
463
- "nom",
643
+ "aligned",
644
+ "anyhow",
645
+ "arg_enum_proc_macro",
646
+ "arrayvec",
647
+ "log",
648
+ "num-rational",
649
+ "num-traits",
650
+ "pastey",
651
+ "rayon",
652
+ "thiserror 2.0.18",
653
+ "v_frame",
654
+ "y4m",
464 655
 ]
465 656
 
466 657
 [[package]]
467
-name = "cfg-if"
468
-version = "0.1.10"
469
-source = "registry+https://github.com/rust-lang/crates.io-index"
470
-checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
471
-
472
-[[package]]
473
-name = "cfg-if"
474
-version = "1.0.4"
475
-source = "registry+https://github.com/rust-lang/crates.io-index"
476
-checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
477
-
478
-[[package]]
479
-name = "cfg_aliases"
480
-version = "0.2.1"
481
-source = "registry+https://github.com/rust-lang/crates.io-index"
482
-checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
483
-
484
-[[package]]
485
-name = "chrono"
486
-version = "0.4.42"
658
+name = "av1-grain"
659
+version = "0.2.5"
487 660
 source = "registry+https://github.com/rust-lang/crates.io-index"
488
-checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2"
661
+checksum = "8cfddb07216410377231960af4fcab838eaa12e013417781b78bd95ee22077f8"
489 662
 dependencies = [
490
- "iana-time-zone",
491
- "js-sys",
492
- "num-traits",
493
- "wasm-bindgen",
494
- "windows-link 0.2.1",
663
+ "anyhow",
664
+ "arrayvec",
665
+ "log",
666
+ "nom 8.0.0",
667
+ "num-rational",
668
+ "v_frame",
495 669
 ]
496 670
 
497 671
 [[package]]
498
-name = "cipher"
499
-version = "0.5.0"
672
+name = "avif-serialize"
673
+version = "0.8.9"
500 674
 source = "registry+https://github.com/rust-lang/crates.io-index"
501
-checksum = "64727038c8c5e2bb503a15b9f5b9df50a1da9a33e83e1f93067d914f2c6604a5"
675
+checksum = "e7178fe5f7d460b13895ebb9dcb28a3a6216d2df2574a0806cb51b555d297f38"
502 676
 dependencies = [
503
- "block-buffer",
504
- "crypto-common",
505
- "inout",
677
+ "arrayvec",
506 678
 ]
507 679
 
508 680
 [[package]]
509
-name = "clang-sys"
510
-version = "0.29.3"
681
+name = "aws-lc-rs"
682
+version = "1.17.1"
511 683
 source = "registry+https://github.com/rust-lang/crates.io-index"
512
-checksum = "fe6837df1d5cba2397b835c8530f51723267e16abbf83892e9e5af4f0e5dd10a"
684
+checksum = "4342d8937fc7e5dd9b1c60292261c0670c882a2cd1719cfc11b1af41731e32ad"
513 685
 dependencies = [
514
- "glob",
515
- "libc",
516
- "libloading",
686
+ "aws-lc-sys",
687
+ "zeroize",
517 688
 ]
518 689
 
519 690
 [[package]]
520
-name = "clap"
521
-version = "2.34.0"
691
+name = "aws-lc-sys"
692
+version = "0.42.0"
522 693
 source = "registry+https://github.com/rust-lang/crates.io-index"
523
-checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
694
+checksum = "6d9ceb1da931507a12f4fccea479dccd00da1943e1b4ae72d8e502d707361444"
524 695
 dependencies = [
525
- "ansi_term",
526
- "atty",
527
- "bitflags 1.3.2",
528
- "strsim",
529
- "textwrap 0.11.0",
530
- "unicode-width",
531
- "vec_map",
696
+ "cc",
697
+ "cmake",
698
+ "dunce",
699
+ "fs_extra",
700
+ "pkg-config",
532 701
 ]
533 702
 
534 703
 [[package]]
535
-name = "cmake"
536
-version = "0.1.57"
704
+name = "backtrace"
705
+version = "0.3.76"
537 706
 source = "registry+https://github.com/rust-lang/crates.io-index"
538
-checksum = "75443c44cd6b379beb8c5b45d85d0773baf31cce901fe7bb252f4eff3008ef7d"
707
+checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6"
539 708
 dependencies = [
540
- "cc",
709
+ "addr2line",
710
+ "cfg-if",
711
+ "libc",
712
+ "miniz_oxide",
713
+ "object",
714
+ "rustc-demangle",
715
+ "windows-link 0.2.1",
541 716
 ]
542 717
 
543 718
 [[package]]
544
-name = "cmov"
545
-version = "0.5.2"
719
+name = "base16ct"
720
+version = "1.0.0"
546 721
 source = "registry+https://github.com/rust-lang/crates.io-index"
547
-checksum = "de0758edba32d61d1fd9f4d69491b47604b91ee2f7e6b33de7e54ca4ebe55dc3"
722
+checksum = "fd307490d624467aa6f74b0eabb77633d1f758a7b25f12bceb0b22e08d9726f6"
548 723
 
549 724
 [[package]]
550
-name = "colorchoice"
551
-version = "1.0.4"
725
+name = "base64"
726
+version = "0.22.1"
552 727
 source = "registry+https://github.com/rust-lang/crates.io-index"
553
-checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
728
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
554 729
 
555 730
 [[package]]
556
-name = "combine"
557
-version = "4.6.7"
731
+name = "base64ct"
732
+version = "1.8.3"
558 733
 source = "registry+https://github.com/rust-lang/crates.io-index"
559
-checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd"
560
-dependencies = [
561
- "bytes",
562
- "memchr",
563
-]
734
+checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06"
564 735
 
565 736
 [[package]]
566
-name = "compression-codecs"
567
-version = "0.4.35"
737
+name = "bincode"
738
+version = "2.0.1"
568 739
 source = "registry+https://github.com/rust-lang/crates.io-index"
569
-checksum = "b0f7ac3e5b97fdce45e8922fb05cae2c37f7bbd63d30dd94821dacfd8f3f2bf2"
740
+checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740"
570 741
 dependencies = [
571
- "compression-core",
572
- "flate2",
573
- "memchr",
742
+ "serde",
743
+ "unty",
574 744
 ]
575 745
 
576 746
 [[package]]
577
-name = "compression-core"
578
-version = "0.4.31"
579
-source = "registry+https://github.com/rust-lang/crates.io-index"
580
-checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d"
581
-
582
-[[package]]
583
-name = "const-oid"
584
-version = "0.10.1"
747
+name = "bindgen"
748
+version = "0.71.1"
585 749
 source = "registry+https://github.com/rust-lang/crates.io-index"
586
-checksum = "0dabb6555f92fb9ee4140454eb5dcd14c7960e1225c6d1a6cc361f032947713e"
750
+checksum = "5f58bf3d7db68cfbac37cfc485a8d711e87e064c3d0fe0435b92f7a407f9d6b3"
751
+dependencies = [
752
+ "bitflags 2.13.0",
753
+ "cexpr",
754
+ "clang-sys",
755
+ "itertools 0.13.0",
756
+ "log",
757
+ "prettyplease",
758
+ "proc-macro2",
759
+ "quote",
760
+ "regex",
761
+ "rustc-hash 2.1.3",
762
+ "shlex 1.3.0",
763
+ "syn",
764
+]
587 765
 
588 766
 [[package]]
589
-name = "core-foundation"
590
-version = "0.9.4"
767
+name = "bindgen"
768
+version = "0.72.1"
591 769
 source = "registry+https://github.com/rust-lang/crates.io-index"
592
-checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
770
+checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895"
593 771
 dependencies = [
594
- "core-foundation-sys",
595
- "libc",
772
+ "bitflags 2.13.0",
773
+ "cexpr",
774
+ "clang-sys",
775
+ "itertools 0.13.0",
776
+ "log",
777
+ "prettyplease",
778
+ "proc-macro2",
779
+ "quote",
780
+ "regex",
781
+ "rustc-hash 2.1.3",
782
+ "shlex 1.3.0",
783
+ "syn",
596 784
 ]
597 785
 
598 786
 [[package]]
599
-name = "core-foundation"
600
-version = "0.10.1"
787
+name = "bit-set"
788
+version = "0.9.1"
601 789
 source = "registry+https://github.com/rust-lang/crates.io-index"
602
-checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
790
+checksum = "34ddef2995421ab6a5c779542c81ee77c115206f4ad9d5a8e05f4ff49716a3dd"
603 791
 dependencies = [
604
- "core-foundation-sys",
605
- "libc",
792
+ "bit-vec",
606 793
 ]
607 794
 
608 795
 [[package]]
609
-name = "core-foundation-sys"
610
-version = "0.8.7"
796
+name = "bit-vec"
797
+version = "0.9.1"
611 798
 source = "registry+https://github.com/rust-lang/crates.io-index"
612
-checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
799
+checksum = "b71798fca2c1fe1086445a7258a4bc81e6e49dcd24c8d0dd9a1e57395b603f51"
613 800
 
614 801
 [[package]]
615
-name = "cpubits"
616
-version = "0.1.0"
802
+name = "bit_field"
803
+version = "0.10.3"
617 804
 source = "registry+https://github.com/rust-lang/crates.io-index"
618
-checksum = "5ef0c543070d296ea414df2dd7625d1b24866ce206709d8a4a424f28377f5861"
805
+checksum = "1e4b40c7323adcfc0a41c4b88143ed58346ff65a288fc144329c5c45e05d70c6"
619 806
 
620 807
 [[package]]
621
-name = "cpufeatures"
622
-version = "0.2.17"
808
+name = "bitflags"
809
+version = "1.3.2"
623 810
 source = "registry+https://github.com/rust-lang/crates.io-index"
624
-checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
625
-dependencies = [
626
- "libc",
627
-]
811
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
628 812
 
629 813
 [[package]]
630
-name = "cpufeatures"
631
-version = "0.3.0"
814
+name = "bitflags"
815
+version = "2.13.0"
632 816
 source = "registry+https://github.com/rust-lang/crates.io-index"
633
-checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201"
634
-dependencies = [
635
- "libc",
636
-]
817
+checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8"
637 818
 
638 819
 [[package]]
639
-name = "crc32fast"
640
-version = "1.5.0"
820
+name = "bitstream-io"
821
+version = "4.10.0"
641 822
 source = "registry+https://github.com/rust-lang/crates.io-index"
642
-checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
823
+checksum = "7eff00be299a18769011411c9def0d827e8f2d7bf0c3dbf53633147a8867fd1f"
643 824
 dependencies = [
644
- "cfg-if 1.0.4",
825
+ "no_std_io2",
645 826
 ]
646 827
 
647 828
 [[package]]
648
-name = "crossbeam-utils"
649
-version = "0.8.21"
829
+name = "block"
830
+version = "0.1.6"
650 831
 source = "registry+https://github.com/rust-lang/crates.io-index"
651
-checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
832
+checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
652 833
 
653 834
 [[package]]
654
-name = "crypto-bigint"
655
-version = "0.7.0-rc.22"
835
+name = "block-buffer"
836
+version = "0.10.4"
656 837
 source = "registry+https://github.com/rust-lang/crates.io-index"
657
-checksum = "053c3561863ce55e3226ecc48b08679f4b66cb1b92b9afb42c2c402dfe8b9b51"
838
+checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
658 839
 dependencies = [
659
- "ctutils",
660
- "getrandom 0.4.1",
661
- "num-traits",
662
- "rand_core 0.10.0",
663
- "serdect",
840
+ "generic-array",
664 841
 ]
665 842
 
666 843
 [[package]]
667
-name = "crypto-common"
668
-version = "0.2.0"
844
+name = "block-buffer"
845
+version = "0.12.1"
669 846
 source = "registry+https://github.com/rust-lang/crates.io-index"
670
-checksum = "211f05e03c7d03754740fd9e585de910a095d6b99f8bcfffdef8319fa02a8331"
847
+checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa"
671 848
 dependencies = [
672
- "getrandom 0.4.1",
673 849
  "hybrid-array",
674
- "rand_core 0.10.0",
675 850
 ]
676 851
 
677 852
 [[package]]
678
-name = "ctr"
679
-version = "0.10.0-rc.3"
853
+name = "block-padding"
854
+version = "0.3.3"
680 855
 source = "registry+https://github.com/rust-lang/crates.io-index"
681
-checksum = "65ea71550d18331d179854662ab330bb54306b9b56020d0466aae2a58f4e17c1"
856
+checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93"
682 857
 dependencies = [
683
- "cipher",
858
+ "generic-array",
684 859
 ]
685 860
 
686 861
 [[package]]
687
-name = "ctutils"
688
-version = "0.4.0"
862
+name = "block-padding"
863
+version = "0.4.2"
689 864
 source = "registry+https://github.com/rust-lang/crates.io-index"
690
-checksum = "1005a6d4446f5120ef475ad3d2af2b30c49c2c9c6904258e3bb30219bebed5e4"
865
+checksum = "710f1dd022ef4e93f8a438b4ba958de7f64308434fa6a87104481645cc30068b"
691 866
 dependencies = [
692
- "cmov",
867
+ "hybrid-array",
693 868
 ]
694 869
 
695 870
 [[package]]
696
-name = "cxx"
697
-version = "1.0.117"
871
+name = "block2"
872
+version = "0.5.1"
698 873
 source = "registry+https://github.com/rust-lang/crates.io-index"
699
-checksum = "0c15f3b597018782655a05d417f28bac009f6eb60f4b6703eb818998c1aaa16a"
874
+checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f"
700 875
 dependencies = [
701
- "cc",
702
- "cxxbridge-flags",
703
- "cxxbridge-macro",
704
- "link-cplusplus",
876
+ "objc2 0.5.2",
705 877
 ]
706 878
 
707 879
 [[package]]
708
-name = "cxxbridge-flags"
709
-version = "1.0.117"
880
+name = "block2"
881
+version = "0.6.2"
710 882
 source = "registry+https://github.com/rust-lang/crates.io-index"
711
-checksum = "7a7eb4c4fd18505f5a935f9c2ee77780350dcdb56da7cd037634e806141c5c43"
883
+checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5"
884
+dependencies = [
885
+ "objc2 0.6.4",
886
+]
712 887
 
713 888
 [[package]]
714
-name = "cxxbridge-macro"
715
-version = "1.0.117"
889
+name = "blocking"
890
+version = "1.6.2"
716 891
 source = "registry+https://github.com/rust-lang/crates.io-index"
717
-checksum = "5d914fcc6452d133236ee067a9538be25ba6a644a450e1a6c617da84bf029854"
892
+checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21"
718 893
 dependencies = [
719
- "proc-macro2",
720
- "quote",
721
- "syn 2.0.107",
894
+ "async-channel",
895
+ "async-task",
896
+ "futures-io",
897
+ "futures-lite 2.6.1",
898
+ "piper",
722 899
 ]
723 900
 
724 901
 [[package]]
725
-name = "deranged"
726
-version = "0.5.5"
902
+name = "borsh"
903
+version = "1.7.0"
727 904
 source = "registry+https://github.com/rust-lang/crates.io-index"
728
-checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587"
905
+checksum = "2f3f6da4992df95bbcd9af42a6c7dcb994498fc9048230405f3b36ff7cd3f145"
729 906
 dependencies = [
730
- "powerfmt",
907
+ "bytes",
908
+ "cfg_aliases",
731 909
 ]
732 910
 
733 911
 [[package]]
734
-name = "digest"
735
-version = "0.11.0-rc.12"
912
+name = "bstr"
913
+version = "1.12.3"
736 914
 source = "registry+https://github.com/rust-lang/crates.io-index"
737
-checksum = "d4b37eb2004a3548553a44cc1e688aac70f0345b896c9d822b4a0e520bc9183b"
915
+checksum = "5cee35f73844aa3014bb606320a6c1f010249dbdf43342fe54b5a4f6a8ed4b79"
738 916
 dependencies = [
739
- "block-buffer",
740
- "const-oid",
741
- "crypto-common",
742
- "subtle",
917
+ "memchr",
918
+ "serde_core",
743 919
 ]
744 920
 
745 921
 [[package]]
746
-name = "displaydoc"
747
-version = "0.2.5"
922
+name = "built"
923
+version = "0.8.1"
748 924
 source = "registry+https://github.com/rust-lang/crates.io-index"
749
-checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
750
-dependencies = [
751
- "proc-macro2",
752
- "quote",
753
- "syn 2.0.107",
754
-]
925
+checksum = "5c0e531d93d39c34eef561e929e8a7f86d77a5af08aac4f6d6e39976c51858e9"
755 926
 
756 927
 [[package]]
757
-name = "dlopen2"
758
-version = "0.8.2"
928
+name = "bumpalo"
929
+version = "3.20.3"
759 930
 source = "registry+https://github.com/rust-lang/crates.io-index"
760
-checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4"
931
+checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
932
+
933
+[[package]]
934
+name = "bytemuck"
935
+version = "1.25.0"
936
+source = "registry+https://github.com/rust-lang/crates.io-index"
937
+checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec"
761 938
 dependencies = [
762
- "dlopen2_derive",
763
- "libc",
764
- "once_cell",
765
- "winapi",
939
+ "bytemuck_derive",
766 940
 ]
767 941
 
768 942
 [[package]]
769
-name = "dlopen2_derive"
770
-version = "0.4.3"
943
+name = "bytemuck_derive"
944
+version = "1.10.2"
771 945
 source = "registry+https://github.com/rust-lang/crates.io-index"
772
-checksum = "0fbbb781877580993a8707ec48672673ec7b81eeba04cfd2310bd28c08e47c8f"
946
+checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff"
773 947
 dependencies = [
774 948
  "proc-macro2",
775 949
  "quote",
776
- "syn 2.0.107",
950
+ "syn",
777 951
 ]
778 952
 
779 953
 [[package]]
780
-name = "dunce"
781
-version = "1.0.5"
954
+name = "byteorder"
955
+version = "1.5.0"
782 956
 source = "registry+https://github.com/rust-lang/crates.io-index"
783
-checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
957
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
784 958
 
785 959
 [[package]]
786
-name = "either"
787
-version = "1.15.0"
960
+name = "byteorder-lite"
961
+version = "0.1.0"
788 962
 source = "registry+https://github.com/rust-lang/crates.io-index"
789
-checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
963
+checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495"
790 964
 
791 965
 [[package]]
792
-name = "elf-loader"
793
-version = "2.0.0"
794
-dependencies = [
795
- "goblin",
796
- "log",
797
- "memmap2",
798
- "region",
799
- "sysv64",
800
-]
966
+name = "bytes"
967
+version = "1.12.0"
968
+source = "registry+https://github.com/rust-lang/crates.io-index"
969
+checksum = "8ae3f5d315924270530207e2a68396c3cc547f6dca3fbdca317cfb1a51edb593"
801 970
 
802 971
 [[package]]
803
-name = "encoding_rs"
804
-version = "0.8.35"
972
+name = "calloop"
973
+version = "0.14.4"
805 974
 source = "registry+https://github.com/rust-lang/crates.io-index"
806
-checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
975
+checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7"
807 976
 dependencies = [
808
- "cfg-if 1.0.4",
977
+ "bitflags 2.13.0",
978
+ "polling",
979
+ "rustix 1.1.4",
980
+ "slab",
981
+ "tracing",
809 982
 ]
810 983
 
811 984
 [[package]]
812
-name = "env_filter"
813
-version = "0.1.4"
985
+name = "calloop-wayland-source"
986
+version = "0.4.1"
814 987
 source = "registry+https://github.com/rust-lang/crates.io-index"
815
-checksum = "1bf3c259d255ca70051b30e2e95b5446cdb8949ac4cd22c0d7fd634d89f568e2"
988
+checksum = "138efcf0940a02ebf0cc8d1eff41a1682a46b431630f4c52450d6265876021fa"
816 989
 dependencies = [
817
- "log",
818
- "regex",
990
+ "calloop",
991
+ "rustix 1.1.4",
992
+ "wayland-backend",
993
+ "wayland-client",
819 994
 ]
820 995
 
821 996
 [[package]]
822
-name = "env_logger"
823
-version = "0.7.1"
997
+name = "cbc"
998
+version = "0.1.2"
824 999
 source = "registry+https://github.com/rust-lang/crates.io-index"
825
-checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36"
1000
+checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6"
826 1001
 dependencies = [
827
- "atty",
828
- "humantime",
829
- "log",
830
- "regex",
831
- "termcolor",
1002
+ "cipher 0.4.4",
832 1003
 ]
833 1004
 
834 1005
 [[package]]
835
-name = "env_logger"
836
-version = "0.11.8"
1006
+name = "cbc"
1007
+version = "0.2.1"
837 1008
 source = "registry+https://github.com/rust-lang/crates.io-index"
838
-checksum = "13c863f0904021b108aa8b2f55046443e6b1ebde8fd4a15c399893aae4fa069f"
1009
+checksum = "ce2dc9ee5f88d11e0beb842c88b33c8a5cf0d1329c4b19494af42b07dbfe8896"
839 1010
 dependencies = [
840
- "anstream",
841
- "anstyle",
842
- "env_filter",
843
- "jiff",
844
- "log",
1011
+ "cipher 0.5.2",
845 1012
 ]
846 1013
 
847 1014
 [[package]]
848
-name = "equivalent"
849
-version = "1.0.2"
1015
+name = "cbindgen"
1016
+version = "0.28.0"
850 1017
 source = "registry+https://github.com/rust-lang/crates.io-index"
851
-checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
1018
+checksum = "eadd868a2ce9ca38de7eeafdcec9c7065ef89b42b32f0839278d55f35c54d1ff"
1019
+dependencies = [
1020
+ "heck 0.4.1",
1021
+ "indexmap",
1022
+ "log",
1023
+ "proc-macro2",
1024
+ "quote",
1025
+ "serde",
1026
+ "serde_json",
1027
+ "syn",
1028
+ "tempfile",
1029
+ "toml 0.8.23",
1030
+]
852 1031
 
853 1032
 [[package]]
854
-name = "errno"
855
-version = "0.3.14"
1033
+name = "cc"
1034
+version = "1.2.66"
856 1035
 source = "registry+https://github.com/rust-lang/crates.io-index"
857
-checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
1036
+checksum = "f5d6cac793997bd970000024b2934968efe83b382de4fdcf4fcb46b6ee4ad996"
858 1037
 dependencies = [
1038
+ "find-msvc-tools",
1039
+ "jobserver",
859 1040
  "libc",
860
- "windows-sys 0.61.2",
1041
+ "shlex 2.0.1",
861 1042
 ]
862 1043
 
863 1044
 [[package]]
864
-name = "fairplay"
865
-version = "0.1.0"
866
-
867
-[[package]]
868
-name = "fastrand"
869
-version = "2.3.0"
870
-source = "registry+https://github.com/rust-lang/crates.io-index"
871
-checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
872
-
873
-[[package]]
874
-name = "find-msvc-tools"
875
-version = "0.1.6"
876
-source = "registry+https://github.com/rust-lang/crates.io-index"
877
-checksum = "645cbb3a84e60b7531617d5ae4e57f7e27308f6445f5abf653209ea76dec8dff"
878
-
879
-[[package]]
880
-name = "flate2"
881
-version = "1.1.4"
1045
+name = "cexpr"
1046
+version = "0.6.0"
882 1047
 source = "registry+https://github.com/rust-lang/crates.io-index"
883
-checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9"
1048
+checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
884 1049
 dependencies = [
885
- "crc32fast",
886
- "miniz_oxide",
1050
+ "nom 7.1.3",
887 1051
 ]
888 1052
 
889 1053
 [[package]]
890
-name = "fnv"
891
-version = "1.0.7"
1054
+name = "cfg-if"
1055
+version = "1.0.4"
892 1056
 source = "registry+https://github.com/rust-lang/crates.io-index"
893
-checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
1057
+checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
894 1058
 
895 1059
 [[package]]
896
-name = "foldhash"
897
-version = "0.1.5"
1060
+name = "cfg_aliases"
1061
+version = "0.2.1"
898 1062
 source = "registry+https://github.com/rust-lang/crates.io-index"
899
-checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
1063
+checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
900 1064
 
901 1065
 [[package]]
902
-name = "form_urlencoded"
903
-version = "1.2.2"
1066
+name = "cgl"
1067
+version = "0.3.2"
904 1068
 source = "registry+https://github.com/rust-lang/crates.io-index"
905
-checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
1069
+checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff"
906 1070
 dependencies = [
907
- "percent-encoding",
1071
+ "libc",
908 1072
 ]
909 1073
 
910 1074
 [[package]]
911
-name = "fs_extra"
912
-version = "1.3.0"
913
-source = "registry+https://github.com/rust-lang/crates.io-index"
914
-checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
915
-
916
-[[package]]
917
-name = "futures"
918
-version = "0.3.31"
1075
+name = "chacha20"
1076
+version = "0.10.1"
919 1077
 source = "registry+https://github.com/rust-lang/crates.io-index"
920
-checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"
1078
+checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81"
921 1079
 dependencies = [
922
- "futures-channel",
923
- "futures-core",
924
- "futures-executor",
925
- "futures-io",
926
- "futures-sink",
927
- "futures-task",
928
- "futures-util",
1080
+ "cfg-if",
1081
+ "cpufeatures 0.3.0",
1082
+ "rand_core 0.10.1",
929 1083
 ]
930 1084
 
931 1085
 [[package]]
932
-name = "futures-channel"
933
-version = "0.3.31"
1086
+name = "chrono"
1087
+version = "0.4.45"
934 1088
 source = "registry+https://github.com/rust-lang/crates.io-index"
935
-checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
1089
+checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327"
936 1090
 dependencies = [
937
- "futures-core",
938
- "futures-sink",
1091
+ "iana-time-zone",
1092
+ "js-sys",
1093
+ "num-traits",
1094
+ "serde",
1095
+ "wasm-bindgen",
1096
+ "windows-link 0.2.1",
939 1097
 ]
940 1098
 
941 1099
 [[package]]
942
-name = "futures-core"
943
-version = "0.3.31"
944
-source = "registry+https://github.com/rust-lang/crates.io-index"
945
-checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
946
-
947
-[[package]]
948
-name = "futures-executor"
949
-version = "0.3.31"
1100
+name = "cipher"
1101
+version = "0.4.4"
950 1102
 source = "registry+https://github.com/rust-lang/crates.io-index"
951
-checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"
1103
+checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
952 1104
 dependencies = [
953
- "futures-core",
954
- "futures-task",
955
- "futures-util",
1105
+ "crypto-common 0.1.7",
1106
+ "inout 0.1.4",
1107
+ "zeroize",
956 1108
 ]
957 1109
 
958 1110
 [[package]]
959
-name = "futures-io"
960
-version = "0.3.31"
1111
+name = "cipher"
1112
+version = "0.5.2"
961 1113
 source = "registry+https://github.com/rust-lang/crates.io-index"
962
-checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
1114
+checksum = "e8cf2a2c93cd704877c0858356ed03480ff301ee950b43f1cbe4573b088bfa6c"
1115
+dependencies = [
1116
+ "block-buffer 0.12.1",
1117
+ "crypto-common 0.2.2",
1118
+ "inout 0.2.2",
1119
+]
963 1120
 
964 1121
 [[package]]
965
-name = "futures-macro"
966
-version = "0.3.31"
1122
+name = "clang-sys"
1123
+version = "1.8.1"
967 1124
 source = "registry+https://github.com/rust-lang/crates.io-index"
968
-checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
1125
+checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4"
969 1126
 dependencies = [
970
- "proc-macro2",
971
- "quote",
972
- "syn 2.0.107",
1127
+ "glob",
1128
+ "libc",
1129
+ "libloading",
973 1130
 ]
974 1131
 
975 1132
 [[package]]
976
-name = "futures-sink"
977
-version = "0.3.31"
1133
+name = "cmake"
1134
+version = "0.1.58"
978 1135
 source = "registry+https://github.com/rust-lang/crates.io-index"
979
-checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
1136
+checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678"
1137
+dependencies = [
1138
+ "cc",
1139
+]
980 1140
 
981 1141
 [[package]]
982
-name = "futures-task"
983
-version = "0.3.31"
1142
+name = "cmov"
1143
+version = "0.5.4"
984 1144
 source = "registry+https://github.com/rust-lang/crates.io-index"
985
-checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
1145
+checksum = "0c9ea0ac24bc397ab3c98583a3c9ba74fa56b09a4449bbe172b9b1ddb016027a"
986 1146
 
987 1147
 [[package]]
988
-name = "futures-util"
989
-version = "0.3.31"
1148
+name = "cms"
1149
+version = "0.2.3"
990 1150
 source = "registry+https://github.com/rust-lang/crates.io-index"
991
-checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
992
-dependencies = [
993
- "futures-channel",
994
- "futures-core",
995
- "futures-io",
996
- "futures-macro",
997
- "futures-sink",
998
- "futures-task",
999
- "memchr",
1000
- "pin-project-lite",
1001
- "pin-utils",
1002
- "slab",
1151
+checksum = "7b77c319abfd5219629c45c34c89ba945ed3c5e49fcde9d16b6c3885f118a730"
1152
+dependencies = [
1153
+ "aes 0.8.4",
1154
+ "cbc 0.1.2",
1155
+ "cipher 0.4.4",
1156
+ "const-oid 0.9.6",
1157
+ "der",
1158
+ "rsa",
1159
+ "sha1 0.10.6",
1160
+ "sha2 0.10.9",
1161
+ "sha3",
1162
+ "signature",
1163
+ "spki",
1164
+ "x509-cert",
1165
+ "zeroize",
1003 1166
 ]
1004 1167
 
1005 1168
 [[package]]
1006
-name = "getrandom"
1007
-version = "0.2.16"
1169
+name = "cocoa"
1170
+version = "0.25.0"
1008 1171
 source = "registry+https://github.com/rust-lang/crates.io-index"
1009
-checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
1172
+checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c"
1010 1173
 dependencies = [
1011
- "cfg-if 1.0.4",
1012
- "js-sys",
1174
+ "bitflags 1.3.2",
1175
+ "block",
1176
+ "cocoa-foundation 0.1.2",
1177
+ "core-foundation 0.9.4",
1178
+ "core-graphics 0.23.2",
1179
+ "foreign-types",
1013 1180
  "libc",
1014
- "wasi",
1015
- "wasm-bindgen",
1181
+ "objc",
1016 1182
 ]
1017 1183
 
1018 1184
 [[package]]
1019
-name = "getrandom"
1020
-version = "0.3.4"
1185
+name = "cocoa"
1186
+version = "0.26.0"
1021 1187
 source = "registry+https://github.com/rust-lang/crates.io-index"
1022
-checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
1188
+checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2"
1023 1189
 dependencies = [
1024
- "cfg-if 1.0.4",
1025
- "js-sys",
1190
+ "bitflags 2.13.0",
1191
+ "block",
1192
+ "cocoa-foundation 0.2.0",
1193
+ "core-foundation 0.10.0",
1194
+ "core-graphics 0.24.0",
1195
+ "foreign-types",
1026 1196
  "libc",
1027
- "r-efi",
1028
- "wasip2",
1029
- "wasm-bindgen",
1197
+ "objc",
1030 1198
 ]
1031 1199
 
1032 1200
 [[package]]
1033
-name = "getrandom"
1034
-version = "0.4.1"
1201
+name = "cocoa-foundation"
1202
+version = "0.1.2"
1035 1203
 source = "registry+https://github.com/rust-lang/crates.io-index"
1036
-checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec"
1204
+checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7"
1037 1205
 dependencies = [
1038
- "cfg-if 1.0.4",
1206
+ "bitflags 1.3.2",
1207
+ "block",
1208
+ "core-foundation 0.9.4",
1209
+ "core-graphics-types 0.1.3",
1039 1210
  "libc",
1040
- "r-efi",
1041
- "rand_core 0.10.0",
1042
- "wasip2",
1043
- "wasip3",
1211
+ "objc",
1044 1212
 ]
1045 1213
 
1046 1214
 [[package]]
1047
-name = "ghash"
1048
-version = "0.6.0-rc.6"
1215
+name = "cocoa-foundation"
1216
+version = "0.2.0"
1049 1217
 source = "registry+https://github.com/rust-lang/crates.io-index"
1050
-checksum = "bb9be1ab8718f9d16384cb3626a5a7d7eac4d3fd1b2564e97592f40523dc0228"
1218
+checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d"
1051 1219
 dependencies = [
1052
- "polyval",
1220
+ "bitflags 2.13.0",
1221
+ "block",
1222
+ "core-foundation 0.10.0",
1223
+ "core-graphics-types 0.2.0",
1224
+ "libc",
1225
+ "objc",
1053 1226
 ]
1054 1227
 
1055 1228
 [[package]]
1056
-name = "gimli"
1057
-version = "0.32.3"
1058
-source = "registry+https://github.com/rust-lang/crates.io-index"
1059
-checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7"
1060
-
1061
-[[package]]
1062
-name = "git-version"
1063
-version = "0.3.9"
1229
+name = "codespan-reporting"
1230
+version = "0.13.1"
1064 1231
 source = "registry+https://github.com/rust-lang/crates.io-index"
1065
-checksum = "1ad568aa3db0fcbc81f2f116137f263d7304f512a1209b35b85150d3ef88ad19"
1232
+checksum = "af491d569909a7e4dee0ad7db7f5341fef5c614d5b8ec8cf765732aba3cff681"
1066 1233
 dependencies = [
1067
- "git-version-macro",
1234
+ "serde",
1235
+ "termcolor",
1236
+ "unicode-width",
1068 1237
 ]
1069 1238
 
1070 1239
 [[package]]
1071
-name = "git-version-macro"
1072
-version = "0.3.9"
1073
-source = "registry+https://github.com/rust-lang/crates.io-index"
1074
-checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0"
1240
+name = "collections"
1241
+version = "0.1.0"
1242
+source = "git+https://github.com/zed-industries/zed?rev=876ec5a8a074ba83cce2129ed4d76b59c05a37e9#876ec5a8a074ba83cce2129ed4d76b59c05a37e9"
1075 1243
 dependencies = [
1076
- "proc-macro2",
1077
- "quote",
1078
- "syn 2.0.107",
1244
+ "indexmap",
1245
+ "rustc-hash 2.1.3",
1079 1246
 ]
1080 1247
 
1081 1248
 [[package]]
1082
-name = "glob"
1083
-version = "0.3.3"
1249
+name = "color_quant"
1250
+version = "1.1.0"
1084 1251
 source = "registry+https://github.com/rust-lang/crates.io-index"
1085
-checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
1252
+checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b"
1086 1253
 
1087 1254
 [[package]]
1088
-name = "goblin"
1089
-version = "0.10.2"
1255
+name = "colorchoice"
1256
+version = "1.0.5"
1090 1257
 source = "registry+https://github.com/rust-lang/crates.io-index"
1091
-checksum = "7be320f077239a0361c20d608b4768c62a1b77aa4946dd76395aa4cd502cba7d"
1092
-dependencies = [
1093
- "log",
1094
- "plain",
1095
- "scroll",
1096
-]
1258
+checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
1097 1259
 
1098 1260
 [[package]]
1099
-name = "grandslam"
1100
-version = "0.1.0"
1261
+name = "combine"
1262
+version = "4.6.7"
1263
+source = "registry+https://github.com/rust-lang/crates.io-index"
1264
+checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd"
1101 1265
 dependencies = [
1102
- "adi",
1103
- "aes",
1104
- "aes-gcm",
1105
- "base64 0.22.1",
1106 1266
  "bytes",
1107
- "cbc",
1108
- "chrono",
1109
- "hex",
1110
- "hmac",
1111
- "iana-time-zone",
1112
- "log",
1113
- "pbkdf2",
1114
- "plist",
1115
- "plist-macros",
1116
- "rand",
1117
- "reqwest 0.13.1",
1118
- "serde",
1119
- "sha2",
1120
- "srp",
1121
- "sys-locale",
1122
- "thiserror 2.0.17",
1267
+ "memchr",
1123 1268
 ]
1124 1269
 
1125 1270
 [[package]]
1126
-name = "h2"
1127
-version = "0.3.27"
1271
+name = "command-fds"
1272
+version = "0.3.3"
1128 1273
 source = "registry+https://github.com/rust-lang/crates.io-index"
1129
-checksum = "0beca50380b1fc32983fc1cb4587bfa4bb9e78fc259aad4a0032d2080309222d"
1274
+checksum = "1b60b5124979fccd9addd89d8b97a1d6eebb4950694520c75ddd722535ea443f"
1130 1275
 dependencies = [
1131
- "bytes",
1132
- "fnv",
1133
- "futures-core",
1134
- "futures-sink",
1135
- "futures-util",
1136
- "http 0.2.12",
1137
- "indexmap 2.12.0",
1138
- "slab",
1139
- "tokio",
1140
- "tokio-util",
1141
- "tracing",
1276
+ "nix 0.31.3",
1277
+ "thiserror 2.0.18",
1142 1278
 ]
1143 1279
 
1144 1280
 [[package]]
1145
-name = "h2"
1146
-version = "0.4.12"
1281
+name = "compression-codecs"
1282
+version = "0.4.38"
1147 1283
 source = "registry+https://github.com/rust-lang/crates.io-index"
1148
-checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386"
1284
+checksum = "ce2548391e9c1929c21bf6aa2680af86fe4c1b33e6cea9ac1cfeec0bd11218cf"
1149 1285
 dependencies = [
1150
- "atomic-waker",
1151
- "bytes",
1152
- "fnv",
1153
- "futures-core",
1154
- "futures-sink",
1155
- "http 1.3.1",
1156
- "indexmap 2.12.0",
1157
- "slab",
1158
- "tokio",
1159
- "tokio-util",
1160
- "tracing",
1286
+ "compression-core",
1287
+ "deflate64",
1288
+ "flate2",
1289
+ "memchr",
1161 1290
 ]
1162 1291
 
1163 1292
 [[package]]
1164
-name = "hashbrown"
1165
-version = "0.12.3"
1293
+name = "compression-core"
1294
+version = "0.4.32"
1166 1295
 source = "registry+https://github.com/rust-lang/crates.io-index"
1167
-checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
1296
+checksum = "cc14f565cf027a105f7a44ccf9e5b424348421a1d8952a8fc9d499d313107789"
1168 1297
 
1169 1298
 [[package]]
1170
-name = "hashbrown"
1171
-version = "0.15.5"
1299
+name = "concurrent-queue"
1300
+version = "2.5.0"
1172 1301
 source = "registry+https://github.com/rust-lang/crates.io-index"
1173
-checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
1302
+checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
1174 1303
 dependencies = [
1175
- "foldhash",
1304
+ "crossbeam-utils",
1176 1305
 ]
1177 1306
 
1178 1307
 [[package]]
1179
-name = "hashbrown"
1180
-version = "0.16.0"
1308
+name = "console_error_panic_hook"
1309
+version = "0.1.7"
1181 1310
 source = "registry+https://github.com/rust-lang/crates.io-index"
1182
-checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d"
1311
+checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
1312
+dependencies = [
1313
+ "cfg-if",
1314
+ "wasm-bindgen",
1315
+]
1183 1316
 
1184 1317
 [[package]]
1185
-name = "heck"
1186
-version = "0.4.1"
1318
+name = "const-oid"
1319
+version = "0.9.6"
1187 1320
 source = "registry+https://github.com/rust-lang/crates.io-index"
1188
-checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
1321
+checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
1189 1322
 
1190 1323
 [[package]]
1191
-name = "heck"
1192
-version = "0.5.0"
1324
+name = "const-oid"
1325
+version = "0.10.2"
1193 1326
 source = "registry+https://github.com/rust-lang/crates.io-index"
1194
-checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
1327
+checksum = "a6ef517f0926dd24a1582492c791b6a4818a4d94e789a334894aa15b0d12f55c"
1195 1328
 
1196 1329
 [[package]]
1197
-name = "hermit-abi"
1198
-version = "0.1.19"
1330
+name = "const-random"
1331
+version = "0.1.18"
1199 1332
 source = "registry+https://github.com/rust-lang/crates.io-index"
1200
-checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
1333
+checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359"
1201 1334
 dependencies = [
1202
- "libc",
1335
+ "const-random-macro",
1203 1336
 ]
1204 1337
 
1205 1338
 [[package]]
1206
-name = "hermit-abi"
1207
-version = "0.5.2"
1339
+name = "const-random-macro"
1340
+version = "0.1.16"
1208 1341
 source = "registry+https://github.com/rust-lang/crates.io-index"
1209
-checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
1342
+checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e"
1343
+dependencies = [
1344
+ "getrandom 0.2.17",
1345
+ "once_cell",
1346
+ "tiny-keccak",
1347
+]
1210 1348
 
1211 1349
 [[package]]
1212
-name = "hex"
1213
-version = "0.4.3"
1350
+name = "convert_case"
1351
+version = "0.10.0"
1214 1352
 source = "registry+https://github.com/rust-lang/crates.io-index"
1215
-checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
1353
+checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9"
1354
+dependencies = [
1355
+ "unicode-segmentation",
1356
+]
1216 1357
 
1217 1358
 [[package]]
1218
-name = "hmac"
1219
-version = "0.13.0-rc.5"
1359
+name = "core-foundation"
1360
+version = "0.9.4"
1220 1361
 source = "registry+https://github.com/rust-lang/crates.io-index"
1221
-checksum = "ef451d73f36d8a3f93ad32c332ea01146c9650e1ec821a9b0e46c01277d544f8"
1362
+checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
1222 1363
 dependencies = [
1223
- "digest",
1364
+ "core-foundation-sys",
1365
+ "libc",
1224 1366
 ]
1225 1367
 
1226 1368
 [[package]]
1227
-name = "http"
1228
-version = "0.2.12"
1369
+name = "core-foundation"
1370
+version = "0.10.0"
1229 1371
 source = "registry+https://github.com/rust-lang/crates.io-index"
1230
-checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1"
1372
+checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63"
1231 1373
 dependencies = [
1232
- "bytes",
1233
- "fnv",
1234
- "itoa",
1374
+ "core-foundation-sys",
1375
+ "libc",
1235 1376
 ]
1236 1377
 
1237 1378
 [[package]]
1238
-name = "http"
1239
-version = "1.3.1"
1379
+name = "core-foundation-sys"
1380
+version = "0.8.7"
1240 1381
 source = "registry+https://github.com/rust-lang/crates.io-index"
1241
-checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565"
1242
-dependencies = [
1243
- "bytes",
1244
- "fnv",
1245
- "itoa",
1246
-]
1382
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
1247 1383
 
1248 1384
 [[package]]
1249
-name = "http-body"
1250
-version = "0.4.6"
1385
+name = "core-graphics"
1386
+version = "0.23.2"
1251 1387
 source = "registry+https://github.com/rust-lang/crates.io-index"
1252
-checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2"
1388
+checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081"
1253 1389
 dependencies = [
1254
- "bytes",
1255
- "http 0.2.12",
1256
- "pin-project-lite",
1390
+ "bitflags 1.3.2",
1391
+ "core-foundation 0.9.4",
1392
+ "core-graphics-types 0.1.3",
1393
+ "foreign-types",
1394
+ "libc",
1257 1395
 ]
1258 1396
 
1259 1397
 [[package]]
1260
-name = "http-body"
1261
-version = "1.0.1"
1398
+name = "core-graphics"
1399
+version = "0.24.0"
1262 1400
 source = "registry+https://github.com/rust-lang/crates.io-index"
1263
-checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
1401
+checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1"
1264 1402
 dependencies = [
1265
- "bytes",
1266
- "http 1.3.1",
1403
+ "bitflags 2.13.0",
1404
+ "core-foundation 0.10.0",
1405
+ "core-graphics-types 0.2.0",
1406
+ "foreign-types",
1407
+ "libc",
1267 1408
 ]
1268 1409
 
1269 1410
 [[package]]
1270
-name = "http-body-util"
1271
-version = "0.1.3"
1411
+name = "core-graphics-helmer-fork"
1412
+version = "0.24.0"
1272 1413
 source = "registry+https://github.com/rust-lang/crates.io-index"
1273
-checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
1414
+checksum = "32eb7c354ae9f6d437a6039099ce7ecd049337a8109b23d73e48e8ffba8e9cd5"
1274 1415
 dependencies = [
1275
- "bytes",
1276
- "futures-core",
1277
- "http 1.3.1",
1278
- "http-body 1.0.1",
1279
- "pin-project-lite",
1416
+ "bitflags 2.13.0",
1417
+ "core-foundation 0.9.4",
1418
+ "core-graphics-types 0.1.3",
1419
+ "foreign-types",
1420
+ "libc",
1280 1421
 ]
1281 1422
 
1282 1423
 [[package]]
1283
-name = "httparse"
1284
-version = "1.10.1"
1424
+name = "core-graphics-types"
1425
+version = "0.1.3"
1285 1426
 source = "registry+https://github.com/rust-lang/crates.io-index"
1286
-checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
1427
+checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf"
1428
+dependencies = [
1429
+ "bitflags 1.3.2",
1430
+ "core-foundation 0.9.4",
1431
+ "libc",
1432
+]
1287 1433
 
1288 1434
 [[package]]
1289
-name = "httpdate"
1290
-version = "1.0.3"
1435
+name = "core-graphics-types"
1436
+version = "0.2.0"
1291 1437
 source = "registry+https://github.com/rust-lang/crates.io-index"
1292
-checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
1438
+checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
1439
+dependencies = [
1440
+ "bitflags 2.13.0",
1441
+ "core-foundation 0.10.0",
1442
+ "libc",
1443
+]
1293 1444
 
1294 1445
 [[package]]
1295
-name = "humantime"
1296
-version = "1.3.0"
1446
+name = "core-graphics2"
1447
+version = "0.5.2"
1297 1448
 source = "registry+https://github.com/rust-lang/crates.io-index"
1298
-checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f"
1449
+checksum = "4416167a69126e617f8d0a214af0e3c1dbdeffcb100ddf72dcd1a1ac9893c146"
1299 1450
 dependencies = [
1300
- "quick-error",
1451
+ "bitflags 2.13.0",
1452
+ "block",
1453
+ "cfg-if",
1454
+ "core-foundation 0.10.0",
1455
+ "libc",
1301 1456
 ]
1302 1457
 
1303 1458
 [[package]]
1304
-name = "hybrid-array"
1305
-version = "0.4.7"
1459
+name = "core-text"
1460
+version = "21.0.0"
1306 1461
 source = "registry+https://github.com/rust-lang/crates.io-index"
1307
-checksum = "e1b229d73f5803b562cc26e4da0396c8610a4ee209f4fac8fa4f8d709166dc45"
1462
+checksum = "a593227b66cbd4007b2a050dfdd9e1d1318311409c8d600dc82ba1b15ca9c130"
1308 1463
 dependencies = [
1309
- "typenum",
1464
+ "core-foundation 0.10.0",
1465
+ "core-graphics 0.24.0",
1466
+ "foreign-types",
1467
+ "libc",
1310 1468
 ]
1311 1469
 
1312 1470
 [[package]]
1313
-name = "hyper"
1314
-version = "0.14.32"
1471
+name = "core-video"
1472
+version = "0.5.2"
1315 1473
 source = "registry+https://github.com/rust-lang/crates.io-index"
1316
-checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7"
1474
+checksum = "139679cc63eb9504bdbe37e37874b0247136177655f0008588781e90863afa62"
1317 1475
 dependencies = [
1318
- "bytes",
1319
- "futures-channel",
1320
- "futures-core",
1321
- "futures-util",
1322
- "h2 0.3.27",
1323
- "http 0.2.12",
1324
- "http-body 0.4.6",
1325
- "httparse",
1326
- "httpdate",
1327
- "itoa",
1328
- "pin-project-lite",
1329
- "socket2 0.5.10",
1330
- "tokio",
1331
- "tower-service",
1332
- "tracing",
1333
- "want",
1476
+ "block",
1477
+ "core-foundation 0.10.0",
1478
+ "core-graphics2",
1479
+ "io-surface",
1480
+ "libc",
1481
+ "metal",
1334 1482
 ]
1335 1483
 
1336 1484
 [[package]]
1337
-name = "hyper"
1338
-version = "1.7.0"
1485
+name = "core_maths"
1486
+version = "0.1.1"
1339 1487
 source = "registry+https://github.com/rust-lang/crates.io-index"
1340
-checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e"
1488
+checksum = "77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30"
1341 1489
 dependencies = [
1342
- "atomic-waker",
1343
- "bytes",
1344
- "futures-channel",
1345
- "futures-core",
1346
- "h2 0.4.12",
1347
- "http 1.3.1",
1348
- "http-body 1.0.1",
1349
- "httparse",
1350
- "itoa",
1351
- "pin-project-lite",
1352
- "pin-utils",
1353
- "smallvec",
1354
- "tokio",
1355
- "want",
1490
+ "libm",
1356 1491
 ]
1357 1492
 
1358 1493
 [[package]]
1359
-name = "hyper-rustls"
1360
-version = "0.24.2"
1494
+name = "cosmic-text"
1495
+version = "0.19.0"
1361 1496
 source = "registry+https://github.com/rust-lang/crates.io-index"
1362
-checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590"
1497
+checksum = "be17b688510d934ce13f48a2beba700e11583e281e0fda99c22bb256a14eda73"
1363 1498
 dependencies = [
1364
- "futures-util",
1365
- "http 0.2.12",
1366
- "hyper 0.14.32",
1367
- "rustls 0.21.12",
1368
- "tokio",
1369
- "tokio-rustls 0.24.1",
1499
+ "bitflags 2.13.0",
1500
+ "fontdb",
1501
+ "harfrust",
1502
+ "linebender_resource_handle",
1503
+ "log",
1504
+ "rangemap",
1505
+ "rustc-hash 2.1.3",
1506
+ "self_cell",
1507
+ "skrifa 0.40.0",
1508
+ "smol_str",
1509
+ "swash",
1510
+ "sys-locale",
1511
+ "unicode-bidi",
1512
+ "unicode-linebreak",
1513
+ "unicode-script",
1514
+ "unicode-segmentation",
1370 1515
 ]
1371 1516
 
1372 1517
 [[package]]
1373
-name = "hyper-rustls"
1374
-version = "0.27.7"
1518
+name = "cpubits"
1519
+version = "0.1.1"
1375 1520
 source = "registry+https://github.com/rust-lang/crates.io-index"
1376
-checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58"
1377
-dependencies = [
1378
- "http 1.3.1",
1379
- "hyper 1.7.0",
1380
- "hyper-util",
1381
- "rustls 0.23.36",
1382
- "rustls-pki-types",
1383
- "tokio",
1384
- "tokio-rustls 0.26.4",
1385
- "tower-service",
1386
-]
1521
+checksum = "15b85f9c39137c3a891689859392b1bd49812121d0d61c9caf00d46ed5ce06ae"
1387 1522
 
1388 1523
 [[package]]
1389
-name = "hyper-util"
1390
-version = "0.1.17"
1524
+name = "cpufeatures"
1525
+version = "0.2.17"
1391 1526
 source = "registry+https://github.com/rust-lang/crates.io-index"
1392
-checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8"
1527
+checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
1393 1528
 dependencies = [
1394
- "base64 0.22.1",
1395
- "bytes",
1396
- "futures-channel",
1397
- "futures-core",
1398
- "futures-util",
1399
- "http 1.3.1",
1400
- "http-body 1.0.1",
1401
- "hyper 1.7.0",
1402
- "ipnet",
1403 1529
  "libc",
1404
- "percent-encoding",
1405
- "pin-project-lite",
1406
- "socket2 0.6.1",
1407
- "system-configuration 0.6.1",
1408
- "tokio",
1409
- "tower-service",
1410
- "tracing",
1411
- "windows-registry",
1412 1530
 ]
1413 1531
 
1414 1532
 [[package]]
1415
-name = "iana-time-zone"
1416
-version = "0.1.64"
1533
+name = "cpufeatures"
1534
+version = "0.3.0"
1417 1535
 source = "registry+https://github.com/rust-lang/crates.io-index"
1418
-checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb"
1536
+checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201"
1419 1537
 dependencies = [
1420
- "android_system_properties",
1421
- "core-foundation-sys",
1422
- "iana-time-zone-haiku",
1423
- "js-sys",
1424
- "log",
1425
- "wasm-bindgen",
1426
- "windows-core",
1538
+ "libc",
1427 1539
 ]
1428 1540
 
1429 1541
 [[package]]
1430
-name = "iana-time-zone-haiku"
1431
-version = "0.1.2"
1542
+name = "crc32fast"
1543
+version = "1.5.0"
1432 1544
 source = "registry+https://github.com/rust-lang/crates.io-index"
1433
-checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
1545
+checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
1434 1546
 dependencies = [
1435
- "cc",
1547
+ "cfg-if",
1436 1548
 ]
1437 1549
 
1438 1550
 [[package]]
1439
-name = "icu_collections"
1440
-version = "2.0.0"
1551
+name = "crossbeam-deque"
1552
+version = "0.8.7"
1441 1553
 source = "registry+https://github.com/rust-lang/crates.io-index"
1442
-checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47"
1554
+checksum = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb"
1443 1555
 dependencies = [
1444
- "displaydoc",
1445
- "potential_utf",
1446
- "yoke",
1447
- "zerofrom",
1448
- "zerovec",
1556
+ "crossbeam-epoch",
1557
+ "crossbeam-utils",
1449 1558
 ]
1450 1559
 
1451 1560
 [[package]]
1452
-name = "icu_locale_core"
1453
-version = "2.0.0"
1561
+name = "crossbeam-epoch"
1562
+version = "0.9.20"
1454 1563
 source = "registry+https://github.com/rust-lang/crates.io-index"
1455
-checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a"
1564
+checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f"
1456 1565
 dependencies = [
1457
- "displaydoc",
1458
- "litemap",
1459
- "tinystr",
1460
- "writeable",
1461
- "zerovec",
1566
+ "crossbeam-utils",
1462 1567
 ]
1463 1568
 
1464 1569
 [[package]]
1465
-name = "icu_normalizer"
1466
-version = "2.0.0"
1570
+name = "crossbeam-queue"
1571
+version = "0.3.13"
1467 1572
 source = "registry+https://github.com/rust-lang/crates.io-index"
1468
-checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979"
1573
+checksum = "803d13fb3b09d88be9f4dbc29062c66b19bf7170867ceb746d2a8689bf6c7a26"
1469 1574
 dependencies = [
1470
- "displaydoc",
1471
- "icu_collections",
1472
- "icu_normalizer_data",
1473
- "icu_properties",
1474
- "icu_provider",
1475
- "smallvec",
1476
- "zerovec",
1575
+ "crossbeam-utils",
1477 1576
 ]
1478 1577
 
1479 1578
 [[package]]
1480
-name = "icu_normalizer_data"
1481
-version = "2.0.0"
1482
-source = "registry+https://github.com/rust-lang/crates.io-index"
1483
-checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3"
1484
-
1485
-[[package]]
1486
-name = "icu_properties"
1487
-version = "2.0.1"
1579
+name = "crossbeam-utils"
1580
+version = "0.8.22"
1488 1581
 source = "registry+https://github.com/rust-lang/crates.io-index"
1489
-checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b"
1490
-dependencies = [
1491
- "displaydoc",
1492
- "icu_collections",
1493
- "icu_locale_core",
1494
- "icu_properties_data",
1495
- "icu_provider",
1496
- "potential_utf",
1497
- "zerotrie",
1498
- "zerovec",
1499
-]
1582
+checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17"
1500 1583
 
1501 1584
 [[package]]
1502
-name = "icu_properties_data"
1503
-version = "2.0.1"
1585
+name = "crunchy"
1586
+version = "0.2.4"
1504 1587
 source = "registry+https://github.com/rust-lang/crates.io-index"
1505
-checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632"
1588
+checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
1506 1589
 
1507 1590
 [[package]]
1508
-name = "icu_provider"
1509
-version = "2.0.0"
1591
+name = "crypto-bigint"
1592
+version = "0.7.5"
1510 1593
 source = "registry+https://github.com/rust-lang/crates.io-index"
1511
-checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af"
1594
+checksum = "1a52aa3fcda4e6302a9f48734f234d35d4721b96f8fe07d073f07ce9df4f0271"
1512 1595
 dependencies = [
1513
- "displaydoc",
1514
- "icu_locale_core",
1515
- "stable_deref_trait",
1516
- "tinystr",
1517
- "writeable",
1518
- "yoke",
1519
- "zerofrom",
1520
- "zerotrie",
1521
- "zerovec",
1596
+ "cpubits",
1597
+ "ctutils",
1598
+ "getrandom 0.4.3",
1599
+ "num-traits",
1600
+ "rand_core 0.10.1",
1601
+ "serdect",
1522 1602
 ]
1523 1603
 
1524 1604
 [[package]]
1525
-name = "id-arena"
1526
-version = "2.3.0"
1605
+name = "crypto-common"
1606
+version = "0.1.7"
1527 1607
 source = "registry+https://github.com/rust-lang/crates.io-index"
1528
-checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954"
1608
+checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a"
1609
+dependencies = [
1610
+ "generic-array",
1611
+ "rand_core 0.6.4",
1612
+ "typenum",
1613
+]
1529 1614
 
1530 1615
 [[package]]
1531
-name = "idna"
1532
-version = "1.1.0"
1616
+name = "crypto-common"
1617
+version = "0.2.2"
1533 1618
 source = "registry+https://github.com/rust-lang/crates.io-index"
1534
-checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
1619
+checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453"
1535 1620
 dependencies = [
1536
- "idna_adapter",
1537
- "smallvec",
1538
- "utf8_iter",
1621
+ "getrandom 0.4.3",
1622
+ "hybrid-array",
1623
+ "rand_core 0.10.1",
1539 1624
 ]
1540 1625
 
1541 1626
 [[package]]
1542
-name = "idna_adapter"
1543
-version = "1.2.1"
1627
+name = "ctor"
1628
+version = "1.0.8"
1544 1629
 source = "registry+https://github.com/rust-lang/crates.io-index"
1545
-checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
1630
+checksum = "fb22e947478ccf9dc44d8922042c677a63fbb88f2cb468521d1145816e5087cb"
1546 1631
 dependencies = [
1547
- "icu_normalizer",
1548
- "icu_properties",
1632
+ "link-section",
1633
+ "linktime-proc-macro",
1549 1634
 ]
1550 1635
 
1551 1636
 [[package]]
1552
-name = "indexmap"
1553
-version = "1.9.3"
1637
+name = "ctr"
1638
+version = "0.10.1"
1554 1639
 source = "registry+https://github.com/rust-lang/crates.io-index"
1555
-checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
1640
+checksum = "baaca1c4b237092596f64d571e9db6ce4109c4ef9742e27590f1709594461f21"
1556 1641
 dependencies = [
1557
- "autocfg",
1558
- "hashbrown 0.12.3",
1559
- "serde",
1642
+ "cipher 0.5.2",
1560 1643
 ]
1561 1644
 
1562 1645
 [[package]]
1563
-name = "indexmap"
1564
-version = "2.12.0"
1646
+name = "ctutils"
1647
+version = "0.4.2"
1565 1648
 source = "registry+https://github.com/rust-lang/crates.io-index"
1566
-checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f"
1649
+checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e"
1567 1650
 dependencies = [
1568
- "equivalent",
1569
- "hashbrown 0.16.0",
1570
- "serde",
1571
- "serde_core",
1651
+ "cmov",
1572 1652
 ]
1573 1653
 
1574 1654
 [[package]]
1575
-name = "inout"
1576
-version = "0.2.2"
1655
+name = "data-url"
1656
+version = "0.3.2"
1577 1657
 source = "registry+https://github.com/rust-lang/crates.io-index"
1578
-checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7"
1579
-dependencies = [
1580
- "block-padding",
1581
- "hybrid-array",
1582
-]
1658
+checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376"
1583 1659
 
1584 1660
 [[package]]
1585
-name = "ipnet"
1586
-version = "2.11.0"
1661
+name = "deflate64"
1662
+version = "0.1.12"
1587 1663
 source = "registry+https://github.com/rust-lang/crates.io-index"
1588
-checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
1664
+checksum = "ac6b926516df9c60bfa16e107b21086399f8285a44ca9711344b9e553c5146e2"
1589 1665
 
1590 1666
 [[package]]
1591
-name = "iri-string"
1592
-version = "0.7.9"
1667
+name = "defmt"
1668
+version = "1.1.1"
1593 1669
 source = "registry+https://github.com/rust-lang/crates.io-index"
1594
-checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397"
1670
+checksum = "e2953bfe4f93bbd20cc71198842756f77d161884c99ebbabc41d80231ded88d1"
1595 1671
 dependencies = [
1596
- "memchr",
1597
- "serde",
1672
+ "bitflags 1.3.2",
1673
+ "defmt-macros",
1598 1674
 ]
1599 1675
 
1600 1676
 [[package]]
1601
-name = "is-terminal"
1602
-version = "0.4.17"
1677
+name = "defmt-macros"
1678
+version = "1.1.1"
1603 1679
 source = "registry+https://github.com/rust-lang/crates.io-index"
1604
-checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46"
1680
+checksum = "bad9c72e7ca2137e0dc3813245a0d282fd6daad32fd800af018306a9169b5fe8"
1605 1681
 dependencies = [
1606
- "hermit-abi 0.5.2",
1607
- "libc",
1608
- "windows-sys 0.61.2",
1682
+ "defmt-parser",
1683
+ "proc-macro2",
1684
+ "quote",
1685
+ "syn",
1609 1686
 ]
1610 1687
 
1611 1688
 [[package]]
1612
-name = "is_ci"
1613
-version = "1.2.0"
1614
-source = "registry+https://github.com/rust-lang/crates.io-index"
1615
-checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45"
1616
-
1617
-[[package]]
1618
-name = "is_terminal_polyfill"
1619
-version = "1.70.1"
1689
+name = "defmt-parser"
1690
+version = "1.0.0"
1620 1691
 source = "registry+https://github.com/rust-lang/crates.io-index"
1621
-checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
1692
+checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e"
1693
+dependencies = [
1694
+ "thiserror 2.0.18",
1695
+]
1622 1696
 
1623 1697
 [[package]]
1624
-name = "itertools"
1625
-version = "0.9.0"
1698
+name = "der"
1699
+version = "0.7.10"
1626 1700
 source = "registry+https://github.com/rust-lang/crates.io-index"
1627
-checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
1701
+checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb"
1628 1702
 dependencies = [
1629
- "either",
1703
+ "const-oid 0.9.6",
1704
+ "der_derive",
1705
+ "flagset",
1706
+ "pem-rfc7468",
1707
+ "zeroize",
1630 1708
 ]
1631 1709
 
1632 1710
 [[package]]
1633
-name = "itertools"
1634
-version = "0.10.5"
1711
+name = "der_derive"
1712
+version = "0.7.3"
1635 1713
 source = "registry+https://github.com/rust-lang/crates.io-index"
1636
-checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
1714
+checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18"
1637 1715
 dependencies = [
1638
- "either",
1716
+ "proc-macro2",
1717
+ "quote",
1718
+ "syn",
1639 1719
 ]
1640 1720
 
1641 1721
 [[package]]
1642
-name = "itoa"
1643
-version = "1.0.15"
1722
+name = "deranged"
1723
+version = "0.5.8"
1644 1724
 source = "registry+https://github.com/rust-lang/crates.io-index"
1645
-checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
1725
+checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
1646 1726
 
1647 1727
 [[package]]
1648
-name = "itunes"
1649
-version = "0.1.0"
1728
+name = "derive_more"
1729
+version = "2.1.1"
1730
+source = "registry+https://github.com/rust-lang/crates.io-index"
1731
+checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134"
1650 1732
 dependencies = [
1651
- "adi",
1652
- "base64 0.22.1",
1653
- "bytes",
1654
- "grandslam",
1655
- "hex",
1656
- "log",
1657
- "plist",
1658
- "plist-macros",
1659
- "rand",
1660
- "reqwest 0.13.1",
1661
- "thiserror 2.0.17",
1662
- "uuid",
1733
+ "derive_more-impl",
1663 1734
 ]
1664 1735
 
1665 1736
 [[package]]
1666
-name = "jiff"
1667
-version = "0.2.15"
1737
+name = "derive_more-impl"
1738
+version = "2.1.1"
1668 1739
 source = "registry+https://github.com/rust-lang/crates.io-index"
1669
-checksum = "be1f93b8b1eb69c77f24bbb0afdf66f54b632ee39af40ca21c4365a1d7347e49"
1740
+checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb"
1670 1741
 dependencies = [
1671
- "jiff-static",
1672
- "log",
1673
- "portable-atomic",
1674
- "portable-atomic-util",
1675
- "serde",
1742
+ "convert_case",
1743
+ "proc-macro2",
1744
+ "quote",
1745
+ "rustc_version",
1746
+ "syn",
1747
+ "unicode-xid",
1676 1748
 ]
1677 1749
 
1678 1750
 [[package]]
1679
-name = "jiff-static"
1680
-version = "0.2.15"
1681
-source = "registry+https://github.com/rust-lang/crates.io-index"
1682
-checksum = "03343451ff899767262ec32146f6d559dd759fdadf42ff0e227c7c48f72594b4"
1751
+name = "derive_refineable"
1752
+version = "0.1.0"
1753
+source = "git+https://github.com/zed-industries/zed?rev=876ec5a8a074ba83cce2129ed4d76b59c05a37e9#876ec5a8a074ba83cce2129ed4d76b59c05a37e9"
1683 1754
 dependencies = [
1684 1755
  "proc-macro2",
1685 1756
  "quote",
1686
- "syn 2.0.107",
1757
+ "syn",
1687 1758
 ]
1688 1759
 
1689 1760
 [[package]]
1690
-name = "jni"
1691
-version = "0.21.1"
1761
+name = "digest"
1762
+version = "0.10.7"
1692 1763
 source = "registry+https://github.com/rust-lang/crates.io-index"
1693
-checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97"
1764
+checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
1694 1765
 dependencies = [
1695
- "cesu8",
1696
- "cfg-if 1.0.4",
1697
- "combine",
1698
- "jni-sys",
1699
- "log",
1700
- "thiserror 1.0.69",
1701
- "walkdir",
1702
- "windows-sys 0.45.0",
1766
+ "block-buffer 0.10.4",
1767
+ "const-oid 0.9.6",
1768
+ "crypto-common 0.1.7",
1769
+ "subtle",
1703 1770
 ]
1704 1771
 
1705 1772
 [[package]]
1706
-name = "jni-sys"
1707
-version = "0.3.0"
1773
+name = "digest"
1774
+version = "0.11.3"
1708 1775
 source = "registry+https://github.com/rust-lang/crates.io-index"
1709
-checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
1776
+checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2"
1777
+dependencies = [
1778
+ "block-buffer 0.12.1",
1779
+ "const-oid 0.10.2",
1780
+ "crypto-common 0.2.2",
1781
+ "ctutils",
1782
+]
1710 1783
 
1711 1784
 [[package]]
1712
-name = "jobserver"
1713
-version = "0.1.34"
1785
+name = "dirs"
1786
+version = "6.0.0"
1714 1787
 source = "registry+https://github.com/rust-lang/crates.io-index"
1715
-checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"
1788
+checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
1716 1789
 dependencies = [
1717
- "getrandom 0.3.4",
1718
- "libc",
1790
+ "dirs-sys",
1719 1791
 ]
1720 1792
 
1721 1793
 [[package]]
1722
-name = "js-sys"
1723
-version = "0.3.81"
1794
+name = "dirs-sys"
1795
+version = "0.5.0"
1724 1796
 source = "registry+https://github.com/rust-lang/crates.io-index"
1725
-checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305"
1797
+checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
1726 1798
 dependencies = [
1727
- "once_cell",
1728
- "wasm-bindgen",
1799
+ "libc",
1800
+ "option-ext",
1801
+ "redox_users",
1802
+ "windows-sys 0.61.2",
1729 1803
 ]
1730 1804
 
1731 1805
 [[package]]
1732
-name = "lazy_static"
1733
-version = "1.5.0"
1806
+name = "dispatch"
1807
+version = "0.2.0"
1734 1808
 source = "registry+https://github.com/rust-lang/crates.io-index"
1735
-checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
1809
+checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
1736 1810
 
1737 1811
 [[package]]
1738
-name = "lazycell"
1739
-version = "1.3.0"
1812
+name = "dispatch2"
1813
+version = "0.3.1"
1740 1814
 source = "registry+https://github.com/rust-lang/crates.io-index"
1741
-checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
1815
+checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38"
1816
+dependencies = [
1817
+ "bitflags 2.13.0",
1818
+ "block2 0.6.2",
1819
+ "libc",
1820
+ "objc2 0.6.4",
1821
+]
1742 1822
 
1743 1823
 [[package]]
1744
-name = "leb128fmt"
1745
-version = "0.1.0"
1824
+name = "displaydoc"
1825
+version = "0.2.6"
1746 1826
 source = "registry+https://github.com/rust-lang/crates.io-index"
1747
-checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
1827
+checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f"
1828
+dependencies = [
1829
+ "proc-macro2",
1830
+ "quote",
1831
+ "syn",
1832
+]
1748 1833
 
1749 1834
 [[package]]
1750
-name = "libc"
1751
-version = "0.2.176"
1835
+name = "dlib"
1836
+version = "0.5.3"
1752 1837
 source = "registry+https://github.com/rust-lang/crates.io-index"
1753
-checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174"
1838
+checksum = "ab8ecd87370524b461f8557c119c405552c396ed91fc0a8eec68679eab26f94a"
1839
+dependencies = [
1840
+ "libloading",
1841
+]
1754 1842
 
1755 1843
 [[package]]
1756
-name = "libloading"
1757
-version = "0.5.2"
1844
+name = "dlopen2"
1845
+version = "0.8.2"
1758 1846
 source = "registry+https://github.com/rust-lang/crates.io-index"
1759
-checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753"
1847
+checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4"
1760 1848
 dependencies = [
1761
- "cc",
1849
+ "dlopen2_derive",
1850
+ "libc",
1851
+ "once_cell",
1762 1852
  "winapi",
1763 1853
 ]
1764 1854
 
1765 1855
 [[package]]
1766
-name = "library-coreadi"
1767
-version = "0.1.0"
1856
+name = "dlopen2_derive"
1857
+version = "0.4.3"
1858
+source = "registry+https://github.com/rust-lang/crates.io-index"
1859
+checksum = "0fbbb781877580993a8707ec48672673ec7b81eeba04cfd2310bd28c08e47c8f"
1768 1860
 dependencies = [
1769
- "adi",
1770
- "dlopen2",
1861
+ "proc-macro2",
1862
+ "quote",
1863
+ "syn",
1771 1864
 ]
1772 1865
 
1773 1866
 [[package]]
1774
-name = "lief"
1775
-version = "0.17.1"
1867
+name = "document-features"
1868
+version = "0.2.12"
1776 1869
 source = "registry+https://github.com/rust-lang/crates.io-index"
1777
-checksum = "18773f648622afc222330700726227739936a1fa0040b91f007c80605525c4ff"
1870
+checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61"
1778 1871
 dependencies = [
1779
- "bitflags 2.10.0",
1780
- "cxx",
1781
- "lief-ffi",
1782
- "num-bigint",
1783
- "num-derive",
1784
- "num-traits",
1785
- "tempfile",
1872
+ "litrs",
1786 1873
 ]
1787 1874
 
1788 1875
 [[package]]
1789
-name = "lief-build"
1790
-version = "0.17.1"
1876
+name = "downcast-rs"
1877
+version = "1.2.1"
1791 1878
 source = "registry+https://github.com/rust-lang/crates.io-index"
1792
-checksum = "3abce5340e56c7f9191d699302b9496445b0438033b48a9937b41c506f677731"
1793
-dependencies = [
1794
- "git-version",
1795
- "miette",
1796
- "reqwest 0.11.24",
1797
- "semver",
1798
- "zip",
1799
-]
1879
+checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2"
1800 1880
 
1801 1881
 [[package]]
1802
-name = "lief-ffi"
1803
-version = "0.17.1"
1882
+name = "dunce"
1883
+version = "1.0.5"
1804 1884
 source = "registry+https://github.com/rust-lang/crates.io-index"
1805
-checksum = "fba2ccbe972b26212f69f7b938fc198214f4eaa7f548a8d724f1a04968137f96"
1885
+checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
1886
+
1887
+[[package]]
1888
+name = "dwrote"
1889
+version = "0.11.5"
1890
+source = "registry+https://github.com/rust-lang/crates.io-index"
1891
+checksum = "9e1b35532432acc8b19ceed096e35dfa088d3ea037fe4f3c085f1f97f33b4d02"
1806 1892
 dependencies = [
1807
- "autocxx",
1808
- "cxx",
1809
- "lief-build",
1810
- "miette",
1893
+ "lazy_static",
1894
+ "libc",
1895
+ "winapi",
1896
+ "wio",
1811 1897
 ]
1812 1898
 
1813 1899
 [[package]]
1814
-name = "link-cplusplus"
1815
-version = "1.0.12"
1900
+name = "dyn-clone"
1901
+version = "1.0.20"
1902
+source = "registry+https://github.com/rust-lang/crates.io-index"
1903
+checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555"
1904
+
1905
+[[package]]
1906
+name = "either"
1907
+version = "1.16.0"
1816 1908
 source = "registry+https://github.com/rust-lang/crates.io-index"
1817
-checksum = "7f78c730aaa7d0b9336a299029ea49f9ee53b0ed06e9202e8cb7db9bae7b8c82"
1909
+checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
1910
+
1911
+[[package]]
1912
+name = "elf-loader"
1913
+version = "2.0.0"
1818 1914
 dependencies = [
1819
- "cc",
1915
+ "goblin",
1916
+ "log",
1917
+ "memmap2",
1918
+ "region",
1919
+ "sysv64",
1820 1920
 ]
1821 1921
 
1822 1922
 [[package]]
1823
-name = "linux-raw-sys"
1824
-version = "0.11.0"
1923
+name = "embed-resource"
1924
+version = "3.0.11"
1825 1925
 source = "registry+https://github.com/rust-lang/crates.io-index"
1826
-checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
1926
+checksum = "fbfdaacccebec3b28e4866b8973543c7647797db5ada1bdab552e48fe665fbbd"
1927
+dependencies = [
1928
+ "cc",
1929
+ "memchr",
1930
+ "rustc_version",
1931
+ "toml 1.1.2+spec-1.1.0",
1932
+ "vswhom",
1933
+ "winreg",
1934
+]
1827 1935
 
1828 1936
 [[package]]
1829
-name = "litemap"
1830
-version = "0.8.0"
1937
+name = "encoding_rs"
1938
+version = "0.8.35"
1831 1939
 source = "registry+https://github.com/rust-lang/crates.io-index"
1832
-checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956"
1940
+checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
1941
+dependencies = [
1942
+ "cfg-if",
1943
+]
1833 1944
 
1834 1945
 [[package]]
1835
-name = "log"
1836
-version = "0.4.29"
1946
+name = "endi"
1947
+version = "1.1.1"
1837 1948
 source = "registry+https://github.com/rust-lang/crates.io-index"
1838
-checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
1949
+checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099"
1839 1950
 
1840 1951
 [[package]]
1841
-name = "lru-slab"
1842
-version = "0.1.2"
1952
+name = "enumflags2"
1953
+version = "0.7.12"
1843 1954
 source = "registry+https://github.com/rust-lang/crates.io-index"
1844
-checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
1955
+checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef"
1956
+dependencies = [
1957
+ "enumflags2_derive",
1958
+ "serde",
1959
+]
1845 1960
 
1846 1961
 [[package]]
1847
-name = "mach2"
1848
-version = "0.4.3"
1962
+name = "enumflags2_derive"
1963
+version = "0.7.12"
1849 1964
 source = "registry+https://github.com/rust-lang/crates.io-index"
1850
-checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44"
1965
+checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827"
1851 1966
 dependencies = [
1852
- "libc",
1967
+ "proc-macro2",
1968
+ "quote",
1969
+ "syn",
1853 1970
 ]
1854 1971
 
1855 1972
 [[package]]
1856
-name = "memchr"
1857
-version = "2.7.6"
1973
+name = "env_filter"
1974
+version = "2.0.0"
1858 1975
 source = "registry+https://github.com/rust-lang/crates.io-index"
1859
-checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
1976
+checksum = "900d271a03799a1ee8d1ca9b19893b48ca674a9284fefcfb85f05e74ed314217"
1977
+dependencies = [
1978
+ "log",
1979
+ "regex",
1980
+]
1860 1981
 
1861 1982
 [[package]]
1862
-name = "memmap2"
1863
-version = "0.9.8"
1983
+name = "env_logger"
1984
+version = "0.11.11"
1864 1985
 source = "registry+https://github.com/rust-lang/crates.io-index"
1865
-checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7"
1986
+checksum = "de671bd27a75a797dc9ae289ba1e77276e75e2026408aab65185384e2d5cd3f6"
1866 1987
 dependencies = [
1867
- "libc",
1988
+ "anstream",
1989
+ "anstyle",
1990
+ "env_filter",
1991
+ "jiff",
1992
+ "log",
1868 1993
 ]
1869 1994
 
1870 1995
 [[package]]
1871
-name = "miette"
1872
-version = "5.10.0"
1996
+name = "equator"
1997
+version = "0.4.2"
1873 1998
 source = "registry+https://github.com/rust-lang/crates.io-index"
1874
-checksum = "59bb584eaeeab6bd0226ccf3509a69d7936d148cf3d036ad350abe35e8c6856e"
1999
+checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc"
1875 2000
 dependencies = [
1876
- "backtrace",
1877
- "backtrace-ext",
1878
- "is-terminal",
1879
- "miette-derive",
1880
- "once_cell",
1881
- "owo-colors",
1882
- "supports-color",
1883
- "supports-hyperlinks",
1884
- "supports-unicode",
1885
- "terminal_size",
1886
- "textwrap 0.15.2",
1887
- "thiserror 1.0.69",
1888
- "unicode-width",
2001
+ "equator-macro",
1889 2002
 ]
1890 2003
 
1891 2004
 [[package]]
1892
-name = "miette-derive"
1893
-version = "5.10.0"
2005
+name = "equator-macro"
2006
+version = "0.4.2"
1894 2007
 source = "registry+https://github.com/rust-lang/crates.io-index"
1895
-checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c"
2008
+checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3"
1896 2009
 dependencies = [
1897 2010
  "proc-macro2",
1898 2011
  "quote",
1899
- "syn 2.0.107",
2012
+ "syn",
1900 2013
 ]
1901 2014
 
1902 2015
 [[package]]
1903
-name = "mime"
1904
-version = "0.3.17"
2016
+name = "equivalent"
2017
+version = "1.0.2"
1905 2018
 source = "registry+https://github.com/rust-lang/crates.io-index"
1906
-checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
2019
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
1907 2020
 
1908 2021
 [[package]]
1909
-name = "miniz_oxide"
1910
-version = "0.8.9"
2022
+name = "erased-serde"
2023
+version = "0.4.10"
1911 2024
 source = "registry+https://github.com/rust-lang/crates.io-index"
1912
-checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
2025
+checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec"
1913 2026
 dependencies = [
1914
- "adler2",
1915
- "simd-adler32",
2027
+ "serde",
2028
+ "serde_core",
2029
+ "typeid",
1916 2030
 ]
1917 2031
 
1918 2032
 [[package]]
1919
-name = "mio"
1920
-version = "1.1.0"
2033
+name = "errno"
2034
+version = "0.3.14"
1921 2035
 source = "registry+https://github.com/rust-lang/crates.io-index"
1922
-checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873"
2036
+checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
1923 2037
 dependencies = [
1924 2038
  "libc",
1925
- "wasi",
1926 2039
  "windows-sys 0.61.2",
1927 2040
 ]
1928 2041
 
1929 2042
 [[package]]
1930
-name = "moveit"
1931
-version = "0.6.0"
2043
+name = "etagere"
2044
+version = "0.2.15"
1932 2045
 source = "registry+https://github.com/rust-lang/crates.io-index"
1933
-checksum = "87d7335204cb6ef7bd647fa6db0be3e4d7aa25b5823a7aa030027ddf512cefba"
2046
+checksum = "fc89bf99e5dc15954a60f707c1e09d7540e5cd9af85fa75caa0b510bc08c5342"
1934 2047
 dependencies = [
1935
- "cxx",
2048
+ "euclid",
2049
+ "svg_fmt",
1936 2050
 ]
1937 2051
 
1938 2052
 [[package]]
1939
-name = "nom"
1940
-version = "5.1.3"
2053
+name = "euclid"
2054
+version = "0.22.14"
1941 2055
 source = "registry+https://github.com/rust-lang/crates.io-index"
1942
-checksum = "08959a387a676302eebf4ddbcbc611da04285579f76f88ee0506c63b1a61dd4b"
2056
+checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06"
1943 2057
 dependencies = [
1944
- "memchr",
1945
- "version_check",
2058
+ "num-traits",
1946 2059
 ]
1947 2060
 
1948 2061
 [[package]]
1949
-name = "num-bigint"
1950
-version = "0.4.6"
2062
+name = "event-listener"
2063
+version = "5.4.1"
1951 2064
 source = "registry+https://github.com/rust-lang/crates.io-index"
1952
-checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"
2065
+checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab"
1953 2066
 dependencies = [
1954
- "num-integer",
1955
- "num-traits",
2067
+ "concurrent-queue",
2068
+ "parking",
2069
+ "pin-project-lite",
1956 2070
 ]
1957 2071
 
1958 2072
 [[package]]
1959
-name = "num-conv"
1960
-version = "0.1.0"
1961
-source = "registry+https://github.com/rust-lang/crates.io-index"
1962
-checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
1963
-
1964
-[[package]]
1965
-name = "num-derive"
1966
-version = "0.4.2"
2073
+name = "event-listener-strategy"
2074
+version = "0.5.4"
1967 2075
 source = "registry+https://github.com/rust-lang/crates.io-index"
1968
-checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
2076
+checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93"
1969 2077
 dependencies = [
1970
- "proc-macro2",
1971
- "quote",
1972
- "syn 2.0.107",
2078
+ "event-listener",
2079
+ "pin-project-lite",
1973 2080
 ]
1974 2081
 
1975 2082
 [[package]]
1976
-name = "num-integer"
1977
-version = "0.1.46"
2083
+name = "exr"
2084
+version = "1.74.0"
1978 2085
 source = "registry+https://github.com/rust-lang/crates.io-index"
1979
-checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
2086
+checksum = "4300e043a56aa2cb633c01af81ca8f699a321879a7854d3896a0ba89056363be"
1980 2087
 dependencies = [
1981
- "num-traits",
2088
+ "bit_field",
2089
+ "half",
2090
+ "lebe",
2091
+ "miniz_oxide",
2092
+ "rayon-core",
2093
+ "smallvec",
2094
+ "zune-inflate",
1982 2095
 ]
1983 2096
 
1984 2097
 [[package]]
1985
-name = "num-traits"
1986
-version = "0.2.19"
2098
+name = "fairplay"
2099
+version = "0.1.0"
2100
+
2101
+[[package]]
2102
+name = "fastrand"
2103
+version = "1.9.0"
1987 2104
 source = "registry+https://github.com/rust-lang/crates.io-index"
1988
-checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
2105
+checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
1989 2106
 dependencies = [
1990
- "autocfg",
2107
+ "instant",
1991 2108
 ]
1992 2109
 
1993 2110
 [[package]]
1994
-name = "object"
1995
-version = "0.37.3"
2111
+name = "fastrand"
2112
+version = "2.4.1"
1996 2113
 source = "registry+https://github.com/rust-lang/crates.io-index"
1997
-checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe"
2114
+checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6"
2115
+
2116
+[[package]]
2117
+name = "fax"
2118
+version = "0.2.7"
2119
+source = "registry+https://github.com/rust-lang/crates.io-index"
2120
+checksum = "caf1079563223d5d59d83c85886a56e586cfd5c1a26292e971a0fa266531ac5a"
2121
+
2122
+[[package]]
2123
+name = "fdeflate"
2124
+version = "0.3.7"
2125
+source = "registry+https://github.com/rust-lang/crates.io-index"
2126
+checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c"
1998 2127
 dependencies = [
1999
- "memchr",
2128
+ "simd-adler32",
2000 2129
 ]
2001 2130
 
2002 2131
 [[package]]
2003
-name = "once_cell"
2004
-version = "1.21.3"
2132
+name = "filedescriptor"
2133
+version = "0.8.3"
2005 2134
 source = "registry+https://github.com/rust-lang/crates.io-index"
2006
-checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
2135
+checksum = "e40758ed24c9b2eeb76c35fb0aebc66c626084edd827e07e1552279814c6682d"
2136
+dependencies = [
2137
+ "libc",
2138
+ "thiserror 1.0.69",
2139
+ "winapi",
2140
+]
2007 2141
 
2008 2142
 [[package]]
2009
-name = "once_cell_polyfill"
2010
-version = "1.70.1"
2143
+name = "find-msvc-tools"
2144
+version = "0.1.9"
2011 2145
 source = "registry+https://github.com/rust-lang/crates.io-index"
2012
-checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad"
2146
+checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
2013 2147
 
2014 2148
 [[package]]
2015
-name = "openssl-probe"
2016
-version = "0.2.0"
2149
+name = "fixedbitset"
2150
+version = "0.5.7"
2017 2151
 source = "registry+https://github.com/rust-lang/crates.io-index"
2018
-checksum = "9f50d9b3dabb09ecd771ad0aa242ca6894994c130308ca3d7684634df8037391"
2152
+checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99"
2019 2153
 
2020 2154
 [[package]]
2021
-name = "ouroboros"
2022
-version = "0.18.5"
2155
+name = "flagset"
2156
+version = "0.4.7"
2023 2157
 source = "registry+https://github.com/rust-lang/crates.io-index"
2024
-checksum = "1e0f050db9c44b97a94723127e6be766ac5c340c48f2c4bb3ffa11713744be59"
2025
-dependencies = [
2026
- "aliasable",
2027
- "ouroboros_macro",
2028
- "static_assertions",
2029
-]
2158
+checksum = "b7ac824320a75a52197e8f2d787f6a38b6718bb6897a35142d749af3c0e8f4fe"
2030 2159
 
2031 2160
 [[package]]
2032
-name = "ouroboros_macro"
2033
-version = "0.18.5"
2161
+name = "flate2"
2162
+version = "1.1.9"
2034 2163
 source = "registry+https://github.com/rust-lang/crates.io-index"
2035
-checksum = "3c7028bdd3d43083f6d8d4d5187680d0d3560d54df4cc9d752005268b41e64d0"
2164
+checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
2036 2165
 dependencies = [
2037
- "heck 0.4.1",
2038
- "proc-macro2",
2039
- "proc-macro2-diagnostics",
2040
- "quote",
2041
- "syn 2.0.107",
2166
+ "crc32fast",
2167
+ "miniz_oxide",
2042 2168
 ]
2043 2169
 
2044 2170
 [[package]]
2045
-name = "owo-colors"
2046
-version = "3.5.0"
2171
+name = "float-cmp"
2172
+version = "0.9.0"
2047 2173
 source = "registry+https://github.com/rust-lang/crates.io-index"
2048
-checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f"
2174
+checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4"
2049 2175
 
2050 2176
 [[package]]
2051
-name = "pbkdf2"
2052
-version = "0.13.0-rc.9"
2177
+name = "float-ord"
2178
+version = "0.3.2"
2053 2179
 source = "registry+https://github.com/rust-lang/crates.io-index"
2054
-checksum = "c8dfa4e14084d963d35bfb4cdb38712cde78dcf83054c0e8b9b8e899150f374e"
2055
-dependencies = [
2056
- "digest",
2057
- "hmac",
2058
-]
2180
+checksum = "8ce81f49ae8a0482e4c55ea62ebbd7e5a686af544c00b9d090bba3ff9be97b3d"
2059 2181
 
2060 2182
 [[package]]
2061
-name = "peeking_take_while"
2062
-version = "0.1.2"
2183
+name = "float_next_after"
2184
+version = "1.0.0"
2063 2185
 source = "registry+https://github.com/rust-lang/crates.io-index"
2064
-checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
2186
+checksum = "8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8"
2065 2187
 
2066 2188
 [[package]]
2067
-name = "percent-encoding"
2068
-version = "2.3.2"
2189
+name = "flume"
2190
+version = "0.11.1"
2069 2191
 source = "registry+https://github.com/rust-lang/crates.io-index"
2070
-checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
2192
+checksum = "da0e4dd2a88388a1f4ccc7c9ce104604dab68d9f408dc34cd45823d5a9069095"
2193
+dependencies = [
2194
+ "futures-core",
2195
+ "futures-sink",
2196
+ "nanorand",
2197
+ "spin 0.9.8",
2198
+]
2071 2199
 
2072 2200
 [[package]]
2073
-name = "pin-project-lite"
2074
-version = "0.2.16"
2201
+name = "fnv"
2202
+version = "1.0.7"
2075 2203
 source = "registry+https://github.com/rust-lang/crates.io-index"
2076
-checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
2204
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
2077 2205
 
2078 2206
 [[package]]
2079
-name = "pin-utils"
2080
-version = "0.1.0"
2207
+name = "foldhash"
2208
+version = "0.1.5"
2081 2209
 source = "registry+https://github.com/rust-lang/crates.io-index"
2082
-checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
2210
+checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
2083 2211
 
2084 2212
 [[package]]
2085
-name = "plain"
2086
-version = "0.2.3"
2213
+name = "foldhash"
2214
+version = "0.2.0"
2087 2215
 source = "registry+https://github.com/rust-lang/crates.io-index"
2088
-checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
2216
+checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
2089 2217
 
2090 2218
 [[package]]
2091
-name = "plist"
2092
-version = "1.8.0"
2219
+name = "font-types"
2220
+version = "0.11.3"
2093 2221
 source = "registry+https://github.com/rust-lang/crates.io-index"
2094
-checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07"
2222
+checksum = "5b38ad915f6dadd993ced50848a8291a543bd41ca62bc10740d5e64e2ab4cfd7"
2095 2223
 dependencies = [
2096
- "base64 0.22.1",
2097
- "indexmap 2.12.0",
2098
- "quick-xml",
2099
- "serde",
2100
- "time",
2224
+ "bytemuck",
2101 2225
 ]
2102 2226
 
2103 2227
 [[package]]
2104
-name = "plist-macros"
2105
-version = "0.1.0"
2228
+name = "fontconfig-parser"
2229
+version = "0.5.8"
2230
+source = "registry+https://github.com/rust-lang/crates.io-index"
2231
+checksum = "bbc773e24e02d4ddd8395fd30dc147524273a83e54e0f312d986ea30de5f5646"
2106 2232
 dependencies = [
2107
- "plist",
2233
+ "roxmltree",
2108 2234
 ]
2109 2235
 
2110 2236
 [[package]]
2111
-name = "polyval"
2112
-version = "0.7.0-rc.9"
2237
+name = "fontdb"
2238
+version = "0.23.0"
2113 2239
 source = "registry+https://github.com/rust-lang/crates.io-index"
2114
-checksum = "0e83fbff7a079b2d37c70aa6bd5eedb9e5d09ceb9b4ecd31e9ea212d00e9b0bc"
2240
+checksum = "457e789b3d1202543297a350643cf459f836cade38934e7a4cf6a39e7cde2905"
2115 2241
 dependencies = [
2116
- "cpubits",
2117
- "cpufeatures 0.3.0",
2118
- "universal-hash",
2242
+ "fontconfig-parser",
2243
+ "log",
2244
+ "memmap2",
2245
+ "slotmap",
2246
+ "tinyvec",
2247
+ "ttf-parser",
2119 2248
 ]
2120 2249
 
2121 2250
 [[package]]
2122
-name = "portable-atomic"
2123
-version = "1.11.1"
2124
-source = "registry+https://github.com/rust-lang/crates.io-index"
2125
-checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483"
2126
-
2127
-[[package]]
2128
-name = "portable-atomic-util"
2129
-version = "0.2.4"
2251
+name = "foreign-types"
2252
+version = "0.5.0"
2130 2253
 source = "registry+https://github.com/rust-lang/crates.io-index"
2131
-checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507"
2254
+checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965"
2132 2255
 dependencies = [
2133
- "portable-atomic",
2256
+ "foreign-types-macros",
2257
+ "foreign-types-shared",
2134 2258
 ]
2135 2259
 
2136 2260
 [[package]]
2137
-name = "potential_utf"
2138
-version = "0.1.3"
2261
+name = "foreign-types-macros"
2262
+version = "0.2.3"
2139 2263
 source = "registry+https://github.com/rust-lang/crates.io-index"
2140
-checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a"
2264
+checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
2141 2265
 dependencies = [
2142
- "zerovec",
2266
+ "proc-macro2",
2267
+ "quote",
2268
+ "syn",
2143 2269
 ]
2144 2270
 
2145 2271
 [[package]]
2146
-name = "powerfmt"
2147
-version = "0.2.0"
2272
+name = "foreign-types-shared"
2273
+version = "0.3.1"
2148 2274
 source = "registry+https://github.com/rust-lang/crates.io-index"
2149
-checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
2275
+checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b"
2150 2276
 
2151 2277
 [[package]]
2152
-name = "ppv-lite86"
2153
-version = "0.2.21"
2278
+name = "form_urlencoded"
2279
+version = "1.2.2"
2154 2280
 source = "registry+https://github.com/rust-lang/crates.io-index"
2155
-checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
2281
+checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
2156 2282
 dependencies = [
2157
- "zerocopy",
2283
+ "percent-encoding",
2158 2284
 ]
2159 2285
 
2160 2286
 [[package]]
2161
-name = "prettyplease"
2162
-version = "0.2.37"
2287
+name = "freetype-sys"
2288
+version = "0.20.1"
2163 2289
 source = "registry+https://github.com/rust-lang/crates.io-index"
2164
-checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
2290
+checksum = "0e7edc5b9669349acfda99533e9e0bcf26a51862ab43b08ee7745c55d28eb134"
2165 2291
 dependencies = [
2166
- "proc-macro2",
2167
- "syn 2.0.107",
2292
+ "cc",
2293
+ "libc",
2294
+ "pkg-config",
2168 2295
 ]
2169 2296
 
2170 2297
 [[package]]
2171
-name = "proc-macro-error"
2172
-version = "1.0.4"
2298
+name = "fs_extra"
2299
+version = "1.3.0"
2173 2300
 source = "registry+https://github.com/rust-lang/crates.io-index"
2174
-checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
2175
-dependencies = [
2176
- "proc-macro-error-attr",
2177
- "proc-macro2",
2178
- "quote",
2179
- "syn 1.0.109",
2180
- "version_check",
2181
-]
2301
+checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
2182 2302
 
2183 2303
 [[package]]
2184
-name = "proc-macro-error-attr"
2185
-version = "1.0.4"
2304
+name = "futf"
2305
+version = "0.1.5"
2186 2306
 source = "registry+https://github.com/rust-lang/crates.io-index"
2187
-checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
2307
+checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843"
2188 2308
 dependencies = [
2189
- "proc-macro2",
2190
- "quote",
2191
- "version_check",
2309
+ "mac",
2310
+ "new_debug_unreachable",
2192 2311
 ]
2193 2312
 
2194 2313
 [[package]]
2195
-name = "proc-macro2"
2196
-version = "1.0.101"
2314
+name = "futures"
2315
+version = "0.3.32"
2197 2316
 source = "registry+https://github.com/rust-lang/crates.io-index"
2198
-checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de"
2317
+checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d"
2199 2318
 dependencies = [
2200
- "unicode-ident",
2319
+ "futures-channel",
2320
+ "futures-core",
2321
+ "futures-executor",
2322
+ "futures-io",
2323
+ "futures-sink",
2324
+ "futures-task",
2325
+ "futures-util",
2201 2326
 ]
2202 2327
 
2203 2328
 [[package]]
2204
-name = "proc-macro2-diagnostics"
2205
-version = "0.10.1"
2329
+name = "futures-channel"
2330
+version = "0.3.32"
2206 2331
 source = "registry+https://github.com/rust-lang/crates.io-index"
2207
-checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
2332
+checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d"
2208 2333
 dependencies = [
2209
- "proc-macro2",
2210
- "quote",
2211
- "syn 2.0.107",
2212
- "version_check",
2213
- "yansi",
2334
+ "futures-core",
2335
+ "futures-sink",
2214 2336
 ]
2215 2337
 
2216 2338
 [[package]]
2217
-name = "purple-builder"
2218
-version = "0.1.0"
2339
+name = "futures-concurrency"
2340
+version = "7.7.1"
2341
+source = "registry+https://github.com/rust-lang/crates.io-index"
2342
+checksum = "175cd8cca9e1d45b87f18ffa75088f2099e3c4fe5e2f83e42de112560bea8ea6"
2219 2343
 dependencies = [
2220
- "adi",
2221
- "elf-loader",
2222
- "env_logger 0.11.8",
2344
+ "fixedbitset",
2345
+ "futures-core",
2346
+ "futures-lite 2.6.1",
2347
+ "pin-project",
2348
+ "smallvec",
2223 2349
 ]
2224 2350
 
2225 2351
 [[package]]
2226
-name = "quick-error"
2227
-version = "1.2.3"
2352
+name = "futures-core"
2353
+version = "0.3.32"
2228 2354
 source = "registry+https://github.com/rust-lang/crates.io-index"
2229
-checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
2355
+checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
2230 2356
 
2231 2357
 [[package]]
2232
-name = "quick-xml"
2233
-version = "0.38.4"
2358
+name = "futures-executor"
2359
+version = "0.3.32"
2234 2360
 source = "registry+https://github.com/rust-lang/crates.io-index"
2235
-checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c"
2361
+checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d"
2236 2362
 dependencies = [
2237
- "memchr",
2363
+ "futures-core",
2364
+ "futures-task",
2365
+ "futures-util",
2238 2366
 ]
2239 2367
 
2240 2368
 [[package]]
2241
-name = "quinn"
2242
-version = "0.11.9"
2369
+name = "futures-io"
2370
+version = "0.3.32"
2243 2371
 source = "registry+https://github.com/rust-lang/crates.io-index"
2244
-checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20"
2245
-dependencies = [
2246
- "bytes",
2247
- "cfg_aliases",
2248
- "pin-project-lite",
2249
- "quinn-proto",
2250
- "quinn-udp",
2251
- "rustc-hash 2.1.1",
2252
- "rustls 0.23.36",
2253
- "socket2 0.6.1",
2254
- "thiserror 2.0.17",
2255
- "tokio",
2256
- "tracing",
2257
- "web-time",
2258
-]
2372
+checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718"
2259 2373
 
2260 2374
 [[package]]
2261
-name = "quinn-proto"
2262
-version = "0.11.13"
2375
+name = "futures-lite"
2376
+version = "1.13.0"
2263 2377
 source = "registry+https://github.com/rust-lang/crates.io-index"
2264
-checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31"
2378
+checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce"
2265 2379
 dependencies = [
2266
- "aws-lc-rs",
2267
- "bytes",
2268
- "getrandom 0.3.4",
2269
- "lru-slab",
2270
- "rand",
2271
- "ring",
2272
- "rustc-hash 2.1.1",
2273
- "rustls 0.23.36",
2274
- "rustls-pki-types",
2275
- "slab",
2276
- "thiserror 2.0.17",
2277
- "tinyvec",
2278
- "tracing",
2279
- "web-time",
2380
+ "fastrand 1.9.0",
2381
+ "futures-core",
2382
+ "futures-io",
2383
+ "memchr",
2384
+ "parking",
2385
+ "pin-project-lite",
2386
+ "waker-fn",
2280 2387
 ]
2281 2388
 
2282 2389
 [[package]]
2283
-name = "quinn-udp"
2284
-version = "0.5.14"
2390
+name = "futures-lite"
2391
+version = "2.6.1"
2285 2392
 source = "registry+https://github.com/rust-lang/crates.io-index"
2286
-checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd"
2393
+checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad"
2287 2394
 dependencies = [
2288
- "cfg_aliases",
2289
- "libc",
2290
- "once_cell",
2291
- "socket2 0.6.1",
2292
- "tracing",
2293
- "windows-sys 0.60.2",
2395
+ "fastrand 2.4.1",
2396
+ "futures-core",
2397
+ "futures-io",
2398
+ "parking",
2399
+ "pin-project-lite",
2294 2400
 ]
2295 2401
 
2296 2402
 [[package]]
2297
-name = "quote"
2298
-version = "1.0.41"
2403
+name = "futures-macro"
2404
+version = "0.3.32"
2299 2405
 source = "registry+https://github.com/rust-lang/crates.io-index"
2300
-checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1"
2406
+checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b"
2301 2407
 dependencies = [
2302 2408
  "proc-macro2",
2409
+ "quote",
2410
+ "syn",
2303 2411
 ]
2304 2412
 
2305 2413
 [[package]]
2306
-name = "r-efi"
2307
-version = "5.3.0"
2414
+name = "futures-sink"
2415
+version = "0.3.32"
2308 2416
 source = "registry+https://github.com/rust-lang/crates.io-index"
2309
-checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
2417
+checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893"
2310 2418
 
2311 2419
 [[package]]
2312
-name = "rand"
2313
-version = "0.9.2"
2420
+name = "futures-task"
2421
+version = "0.3.32"
2314 2422
 source = "registry+https://github.com/rust-lang/crates.io-index"
2315
-checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
2316
-dependencies = [
2317
- "rand_chacha",
2318
- "rand_core 0.9.3",
2319
-]
2423
+checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"
2320 2424
 
2321 2425
 [[package]]
2322
-name = "rand_chacha"
2323
-version = "0.9.0"
2426
+name = "futures-util"
2427
+version = "0.3.32"
2324 2428
 source = "registry+https://github.com/rust-lang/crates.io-index"
2325
-checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
2429
+checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
2326 2430
 dependencies = [
2327
- "ppv-lite86",
2328
- "rand_core 0.9.3",
2431
+ "futures-channel",
2432
+ "futures-core",
2433
+ "futures-io",
2434
+ "futures-macro",
2435
+ "futures-sink",
2436
+ "futures-task",
2437
+ "memchr",
2438
+ "pin-project-lite",
2439
+ "slab",
2329 2440
 ]
2330 2441
 
2331 2442
 [[package]]
2332
-name = "rand_core"
2333
-version = "0.9.3"
2443
+name = "generic-array"
2444
+version = "0.14.7"
2334 2445
 source = "registry+https://github.com/rust-lang/crates.io-index"
2335
-checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38"
2446
+checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
2336 2447
 dependencies = [
2337
- "getrandom 0.3.4",
2448
+ "typenum",
2449
+ "version_check",
2338 2450
 ]
2339 2451
 
2340 2452
 [[package]]
2341
-name = "rand_core"
2342
-version = "0.10.0"
2453
+name = "gethostname"
2454
+version = "1.1.0"
2343 2455
 source = "registry+https://github.com/rust-lang/crates.io-index"
2344
-checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba"
2456
+checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8"
2457
+dependencies = [
2458
+ "rustix 1.1.4",
2459
+ "windows-link 0.2.1",
2460
+]
2345 2461
 
2346 2462
 [[package]]
2347
-name = "regex"
2348
-version = "1.12.2"
2463
+name = "getrandom"
2464
+version = "0.2.17"
2349 2465
 source = "registry+https://github.com/rust-lang/crates.io-index"
2350
-checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4"
2466
+checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
2351 2467
 dependencies = [
2352
- "aho-corasick",
2353
- "memchr",
2354
- "regex-automata",
2355
- "regex-syntax",
2468
+ "cfg-if",
2469
+ "js-sys",
2470
+ "libc",
2471
+ "wasi",
2472
+ "wasm-bindgen",
2356 2473
 ]
2357 2474
 
2358 2475
 [[package]]
2359
-name = "regex-automata"
2360
-version = "0.4.13"
2476
+name = "getrandom"
2477
+version = "0.3.4"
2361 2478
 source = "registry+https://github.com/rust-lang/crates.io-index"
2362
-checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
2479
+checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
2480
+dependencies = [
2481
+ "cfg-if",
2482
+ "js-sys",
2483
+ "libc",
2484
+ "r-efi 5.3.0",
2485
+ "wasip2",
2486
+ "wasm-bindgen",
2487
+]
2488
+
2489
+[[package]]
2490
+name = "getrandom"
2491
+version = "0.4.3"
2492
+source = "registry+https://github.com/rust-lang/crates.io-index"
2493
+checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
2494
+dependencies = [
2495
+ "cfg-if",
2496
+ "js-sys",
2497
+ "libc",
2498
+ "r-efi 6.0.0",
2499
+ "rand_core 0.10.1",
2500
+ "wasm-bindgen",
2501
+]
2502
+
2503
+[[package]]
2504
+name = "ghash"
2505
+version = "0.6.0"
2506
+source = "registry+https://github.com/rust-lang/crates.io-index"
2507
+checksum = "2eecf2d5dc9b66b732b97707a0210906b1d30523eb773193ab777c0c84b3e8d5"
2508
+dependencies = [
2509
+ "polyval",
2510
+]
2511
+
2512
+[[package]]
2513
+name = "gif"
2514
+version = "0.13.3"
2515
+source = "registry+https://github.com/rust-lang/crates.io-index"
2516
+checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b"
2517
+dependencies = [
2518
+ "color_quant",
2519
+ "weezl",
2520
+]
2521
+
2522
+[[package]]
2523
+name = "gif"
2524
+version = "0.14.2"
2525
+source = "registry+https://github.com/rust-lang/crates.io-index"
2526
+checksum = "ee8cfcc411d9adbbaba82fb72661cc1bcca13e8bba98b364e62b2dba8f960159"
2527
+dependencies = [
2528
+ "color_quant",
2529
+ "weezl",
2530
+]
2531
+
2532
+[[package]]
2533
+name = "gimli"
2534
+version = "0.32.3"
2535
+source = "registry+https://github.com/rust-lang/crates.io-index"
2536
+checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7"
2537
+
2538
+[[package]]
2539
+name = "gl_generator"
2540
+version = "0.14.0"
2541
+source = "registry+https://github.com/rust-lang/crates.io-index"
2542
+checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d"
2543
+dependencies = [
2544
+ "khronos_api",
2545
+ "log",
2546
+ "xml-rs",
2547
+]
2548
+
2549
+[[package]]
2550
+name = "glob"
2551
+version = "0.3.3"
2552
+source = "registry+https://github.com/rust-lang/crates.io-index"
2553
+checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
2554
+
2555
+[[package]]
2556
+name = "globset"
2557
+version = "0.4.18"
2558
+source = "registry+https://github.com/rust-lang/crates.io-index"
2559
+checksum = "52dfc19153a48bde0cbd630453615c8151bce3a5adfac7a0aebfbf0a1e1f57e3"
2363 2560
 dependencies = [
2364 2561
  "aho-corasick",
2365
- "memchr",
2562
+ "bstr",
2563
+ "log",
2564
+ "regex-automata",
2366 2565
  "regex-syntax",
2367 2566
 ]
2368 2567
 
2369 2568
 [[package]]
2370
-name = "regex-syntax"
2371
-version = "0.8.8"
2569
+name = "glow"
2570
+version = "0.17.0"
2571
+source = "registry+https://github.com/rust-lang/crates.io-index"
2572
+checksum = "29038e1c483364cc6bb3cf78feee1816002e127c331a1eec55a4d202b9e1adb5"
2573
+dependencies = [
2574
+ "js-sys",
2575
+ "slotmap",
2576
+ "wasm-bindgen",
2577
+ "web-sys",
2578
+]
2579
+
2580
+[[package]]
2581
+name = "glutin_wgl_sys"
2582
+version = "0.6.1"
2583
+source = "registry+https://github.com/rust-lang/crates.io-index"
2584
+checksum = "2c4ee00b289aba7a9e5306d57c2d05499b2e5dc427f84ac708bd2c090212cf3e"
2585
+dependencies = [
2586
+ "gl_generator",
2587
+]
2588
+
2589
+[[package]]
2590
+name = "goblin"
2591
+version = "0.10.7"
2592
+source = "registry+https://github.com/rust-lang/crates.io-index"
2593
+checksum = "17582616a7718cca54cec18e534a76c7c4aec11a8b9a85695712f262fd15a4c8"
2594
+dependencies = [
2595
+ "log",
2596
+ "plain",
2597
+ "scroll",
2598
+]
2599
+
2600
+[[package]]
2601
+name = "gpu-allocator"
2602
+version = "0.28.0"
2603
+source = "registry+https://github.com/rust-lang/crates.io-index"
2604
+checksum = "51255ea7cfaadb6c5f1528d43e92a82acb2b96c43365989a28b2d44ee38f8795"
2605
+dependencies = [
2606
+ "ash",
2607
+ "hashbrown 0.16.1",
2608
+ "log",
2609
+ "presser",
2610
+ "thiserror 2.0.18",
2611
+ "windows 0.62.2",
2612
+]
2613
+
2614
+[[package]]
2615
+name = "gpu-descriptor"
2616
+version = "0.3.2"
2617
+source = "registry+https://github.com/rust-lang/crates.io-index"
2618
+checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca"
2619
+dependencies = [
2620
+ "bitflags 2.13.0",
2621
+ "gpu-descriptor-types",
2622
+ "hashbrown 0.15.5",
2623
+]
2624
+
2625
+[[package]]
2626
+name = "gpu-descriptor-types"
2627
+version = "0.2.0"
2628
+source = "registry+https://github.com/rust-lang/crates.io-index"
2629
+checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91"
2630
+dependencies = [
2631
+ "bitflags 2.13.0",
2632
+]
2633
+
2634
+[[package]]
2635
+name = "gpui"
2636
+version = "0.2.2"
2637
+source = "git+https://github.com/gpui-ce/gpui-ce#20340e14874a3b55122e5cb2aa0d023874e08b2d"
2638
+dependencies = [
2639
+ "accesskit",
2640
+ "anyhow",
2641
+ "async-channel",
2642
+ "async-task",
2643
+ "bindgen 0.71.1",
2644
+ "bitflags 2.13.0",
2645
+ "block",
2646
+ "cbindgen",
2647
+ "chrono",
2648
+ "cocoa 0.26.0",
2649
+ "cocoa-foundation 0.2.0",
2650
+ "collections",
2651
+ "core-foundation 0.10.0",
2652
+ "core-foundation-sys",
2653
+ "core-graphics 0.24.0",
2654
+ "core-text",
2655
+ "core-video",
2656
+ "ctor",
2657
+ "derive_more",
2658
+ "embed-resource",
2659
+ "etagere",
2660
+ "foreign-types",
2661
+ "futures",
2662
+ "futures-concurrency",
2663
+ "getrandom 0.3.4",
2664
+ "gpui_macros",
2665
+ "gpui_shared_string",
2666
+ "gpui_util",
2667
+ "http",
2668
+ "image",
2669
+ "inventory",
2670
+ "itertools 0.14.0",
2671
+ "log",
2672
+ "lyon",
2673
+ "mach2 0.5.0",
2674
+ "media",
2675
+ "metal",
2676
+ "num_cpus",
2677
+ "objc",
2678
+ "parking",
2679
+ "parking_lot",
2680
+ "pathfinder_geometry",
2681
+ "pin-project",
2682
+ "pollster 0.4.0",
2683
+ "postage",
2684
+ "profiling",
2685
+ "rand 0.9.4",
2686
+ "raw-window-handle",
2687
+ "refineable",
2688
+ "regex",
2689
+ "resvg",
2690
+ "scheduler",
2691
+ "schemars",
2692
+ "seahash",
2693
+ "serde",
2694
+ "serde_json",
2695
+ "slotmap",
2696
+ "smallvec",
2697
+ "spin 0.10.0",
2698
+ "stacksafe",
2699
+ "strum",
2700
+ "sum_tree",
2701
+ "taffy",
2702
+ "thiserror 2.0.18",
2703
+ "ttf-parser",
2704
+ "url",
2705
+ "usvg",
2706
+ "util_macros",
2707
+ "uuid",
2708
+ "waker-fn",
2709
+ "web-time",
2710
+ "windows 0.61.3",
2711
+ "zed-font-kit",
2712
+ "zed-scap",
2713
+]
2714
+
2715
+[[package]]
2716
+name = "gpui_linux"
2717
+version = "0.1.0"
2718
+source = "git+https://github.com/gpui-ce/gpui-ce#20340e14874a3b55122e5cb2aa0d023874e08b2d"
2719
+dependencies = [
2720
+ "accesskit",
2721
+ "accesskit_unix",
2722
+ "anyhow",
2723
+ "as-raw-xcb-connection",
2724
+ "ashpd",
2725
+ "bitflags 2.13.0",
2726
+ "bytemuck",
2727
+ "calloop",
2728
+ "calloop-wayland-source",
2729
+ "collections",
2730
+ "filedescriptor",
2731
+ "futures",
2732
+ "gpui",
2733
+ "gpui_wgpu",
2734
+ "image",
2735
+ "itertools 0.14.0",
2736
+ "libc",
2737
+ "log",
2738
+ "oo7",
2739
+ "open",
2740
+ "parking_lot",
2741
+ "pathfinder_geometry",
2742
+ "pollster 0.4.0",
2743
+ "profiling",
2744
+ "raw-window-handle",
2745
+ "smallvec",
2746
+ "smol",
2747
+ "strum",
2748
+ "swash",
2749
+ "url",
2750
+ "util",
2751
+ "uuid",
2752
+ "wayland-backend",
2753
+ "wayland-client",
2754
+ "wayland-cursor",
2755
+ "wayland-protocols",
2756
+ "wayland-protocols-plasma",
2757
+ "wayland-protocols-wlr",
2758
+ "x11-clipboard",
2759
+ "x11rb",
2760
+ "xkbcommon",
2761
+ "zed-scap",
2762
+ "zed-xim",
2763
+]
2764
+
2765
+[[package]]
2766
+name = "gpui_macos"
2767
+version = "0.1.0"
2768
+source = "git+https://github.com/gpui-ce/gpui-ce#20340e14874a3b55122e5cb2aa0d023874e08b2d"
2769
+dependencies = [
2770
+ "accesskit",
2771
+ "accesskit_macos",
2772
+ "anyhow",
2773
+ "async-task",
2774
+ "block",
2775
+ "cbindgen",
2776
+ "cocoa 0.26.0",
2777
+ "collections",
2778
+ "core-foundation 0.10.0",
2779
+ "core-foundation-sys",
2780
+ "core-graphics 0.24.0",
2781
+ "core-text",
2782
+ "core-video",
2783
+ "ctor",
2784
+ "derive_more",
2785
+ "dispatch2",
2786
+ "etagere",
2787
+ "foreign-types",
2788
+ "futures",
2789
+ "gpui",
2790
+ "image",
2791
+ "itertools 0.14.0",
2792
+ "libc",
2793
+ "log",
2794
+ "mach2 0.5.0",
2795
+ "media",
2796
+ "metal",
2797
+ "objc",
2798
+ "objc2-app-kit 0.3.2",
2799
+ "parking_lot",
2800
+ "pathfinder_geometry",
2801
+ "raw-window-handle",
2802
+ "semver",
2803
+ "smallvec",
2804
+ "strum",
2805
+ "util",
2806
+ "uuid",
2807
+ "zed-font-kit",
2808
+]
2809
+
2810
+[[package]]
2811
+name = "gpui_macros"
2812
+version = "0.1.0"
2813
+source = "git+https://github.com/gpui-ce/gpui-ce#20340e14874a3b55122e5cb2aa0d023874e08b2d"
2814
+dependencies = [
2815
+ "heck 0.5.0",
2816
+ "proc-macro2",
2817
+ "quote",
2818
+ "syn",
2819
+]
2820
+
2821
+[[package]]
2822
+name = "gpui_platform"
2823
+version = "0.1.0"
2824
+source = "git+https://github.com/gpui-ce/gpui-ce#20340e14874a3b55122e5cb2aa0d023874e08b2d"
2825
+dependencies = [
2826
+ "console_error_panic_hook",
2827
+ "gpui",
2828
+ "gpui_linux",
2829
+ "gpui_macos",
2830
+ "gpui_web",
2831
+ "gpui_windows",
2832
+]
2833
+
2834
+[[package]]
2835
+name = "gpui_shared_string"
2836
+version = "0.1.0"
2837
+source = "git+https://github.com/gpui-ce/gpui-ce#20340e14874a3b55122e5cb2aa0d023874e08b2d"
2838
+dependencies = [
2839
+ "schemars",
2840
+ "serde",
2841
+ "smol_str",
2842
+]
2843
+
2844
+[[package]]
2845
+name = "gpui_util"
2846
+version = "0.1.0"
2847
+source = "git+https://github.com/zed-industries/zed?rev=876ec5a8a074ba83cce2129ed4d76b59c05a37e9#876ec5a8a074ba83cce2129ed4d76b59c05a37e9"
2848
+dependencies = [
2849
+ "anyhow",
2850
+ "log",
2851
+]
2852
+
2853
+[[package]]
2854
+name = "gpui_web"
2855
+version = "0.1.0"
2856
+source = "git+https://github.com/gpui-ce/gpui-ce#20340e14874a3b55122e5cb2aa0d023874e08b2d"
2857
+dependencies = [
2858
+ "anyhow",
2859
+ "console_error_panic_hook",
2860
+ "futures",
2861
+ "gpui",
2862
+ "gpui_wgpu",
2863
+ "http",
2864
+ "js-sys",
2865
+ "log",
2866
+ "parking_lot",
2867
+ "raw-window-handle",
2868
+ "smallvec",
2869
+ "uuid",
2870
+ "wasm-bindgen",
2871
+ "wasm-bindgen-futures",
2872
+ "web-sys",
2873
+ "web-time",
2874
+]
2875
+
2876
+[[package]]
2877
+name = "gpui_wgpu"
2878
+version = "0.1.0"
2879
+source = "git+https://github.com/gpui-ce/gpui-ce#20340e14874a3b55122e5cb2aa0d023874e08b2d"
2880
+dependencies = [
2881
+ "anyhow",
2882
+ "bytemuck",
2883
+ "collections",
2884
+ "cosmic-text",
2885
+ "etagere",
2886
+ "gpui",
2887
+ "gpui_util",
2888
+ "itertools 0.14.0",
2889
+ "js-sys",
2890
+ "log",
2891
+ "parking_lot",
2892
+ "pollster 0.4.0",
2893
+ "profiling",
2894
+ "raw-window-handle",
2895
+ "smallvec",
2896
+ "swash",
2897
+ "unicode-segmentation",
2898
+ "wasm-bindgen",
2899
+ "wasm-bindgen-futures",
2900
+ "web-sys",
2901
+ "wgpu",
2902
+ "zed-font-kit",
2903
+]
2904
+
2905
+[[package]]
2906
+name = "gpui_windows"
2907
+version = "0.1.0"
2908
+source = "git+https://github.com/gpui-ce/gpui-ce#20340e14874a3b55122e5cb2aa0d023874e08b2d"
2909
+dependencies = [
2910
+ "accesskit",
2911
+ "accesskit_windows",
2912
+ "anyhow",
2913
+ "collections",
2914
+ "etagere",
2915
+ "futures",
2916
+ "gpui",
2917
+ "image",
2918
+ "itertools 0.14.0",
2919
+ "log",
2920
+ "parking_lot",
2921
+ "rand 0.9.4",
2922
+ "raw-window-handle",
2923
+ "smallvec",
2924
+ "util",
2925
+ "uuid",
2926
+ "windows 0.61.3",
2927
+ "windows-core 0.61.2",
2928
+ "windows-numerics 0.2.0",
2929
+ "windows-registry 0.5.3",
2930
+]
2931
+
2932
+[[package]]
2933
+name = "grandslam"
2934
+version = "0.1.0"
2935
+dependencies = [
2936
+ "adi",
2937
+ "aes 0.9.1",
2938
+ "aes-gcm",
2939
+ "base64",
2940
+ "bytes",
2941
+ "cbc 0.2.1",
2942
+ "chrono",
2943
+ "hex",
2944
+ "hmac 0.13.0",
2945
+ "iana-time-zone",
2946
+ "log",
2947
+ "pbkdf2 0.13.0",
2948
+ "plist",
2949
+ "plist-macros",
2950
+ "rand 0.9.4",
2951
+ "reqwest",
2952
+ "serde",
2953
+ "sha2 0.11.0",
2954
+ "srp",
2955
+ "sys-locale",
2956
+ "thiserror 2.0.18",
2957
+]
2958
+
2959
+[[package]]
2960
+name = "grid"
2961
+version = "1.0.1"
2962
+source = "registry+https://github.com/rust-lang/crates.io-index"
2963
+checksum = "b40ca9252762c466af32d0b1002e91e4e1bc5398f77455e55474deb466355ff5"
2964
+
2965
+[[package]]
2966
+name = "h2"
2967
+version = "0.4.15"
2968
+source = "registry+https://github.com/rust-lang/crates.io-index"
2969
+checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155"
2970
+dependencies = [
2971
+ "atomic-waker",
2972
+ "bytes",
2973
+ "fnv",
2974
+ "futures-core",
2975
+ "futures-sink",
2976
+ "http",
2977
+ "indexmap",
2978
+ "slab",
2979
+ "tokio",
2980
+ "tokio-util",
2981
+ "tracing",
2982
+]
2983
+
2984
+[[package]]
2985
+name = "half"
2986
+version = "2.7.1"
2987
+source = "registry+https://github.com/rust-lang/crates.io-index"
2988
+checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b"
2989
+dependencies = [
2990
+ "cfg-if",
2991
+ "crunchy",
2992
+ "num-traits",
2993
+ "zerocopy",
2994
+]
2995
+
2996
+[[package]]
2997
+name = "harfrust"
2998
+version = "0.5.2"
2372 2999
 source = "registry+https://github.com/rust-lang/crates.io-index"
2373
-checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
3000
+checksum = "9da2e5ae821f6e96664977bf974d6d6a2d6682f9ccee23e62ec1d134246845f9"
3001
+dependencies = [
3002
+ "bitflags 2.13.0",
3003
+ "bytemuck",
3004
+ "core_maths",
3005
+ "read-fonts 0.37.0",
3006
+ "smallvec",
3007
+]
3008
+
3009
+[[package]]
3010
+name = "hash32"
3011
+version = "0.3.1"
3012
+source = "registry+https://github.com/rust-lang/crates.io-index"
3013
+checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606"
3014
+dependencies = [
3015
+ "byteorder",
3016
+]
3017
+
3018
+[[package]]
3019
+name = "hashbrown"
3020
+version = "0.14.5"
3021
+source = "registry+https://github.com/rust-lang/crates.io-index"
3022
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
3023
+
3024
+[[package]]
3025
+name = "hashbrown"
3026
+version = "0.15.5"
3027
+source = "registry+https://github.com/rust-lang/crates.io-index"
3028
+checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
3029
+dependencies = [
3030
+ "foldhash 0.1.5",
3031
+]
3032
+
3033
+[[package]]
3034
+name = "hashbrown"
3035
+version = "0.16.1"
3036
+source = "registry+https://github.com/rust-lang/crates.io-index"
3037
+checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
3038
+dependencies = [
3039
+ "allocator-api2",
3040
+ "equivalent",
3041
+ "foldhash 0.2.0",
3042
+]
3043
+
3044
+[[package]]
3045
+name = "hashbrown"
3046
+version = "0.17.1"
3047
+source = "registry+https://github.com/rust-lang/crates.io-index"
3048
+checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
3049
+
3050
+[[package]]
3051
+name = "heapless"
3052
+version = "0.9.3"
3053
+source = "registry+https://github.com/rust-lang/crates.io-index"
3054
+checksum = "25ba4bd83f9415b58b4ed8dc5714c76e626a105be4646c02630ad730ad3b5aa4"
3055
+dependencies = [
3056
+ "hash32",
3057
+ "stable_deref_trait",
3058
+]
3059
+
3060
+[[package]]
3061
+name = "heck"
3062
+version = "0.4.1"
3063
+source = "registry+https://github.com/rust-lang/crates.io-index"
3064
+checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
3065
+
3066
+[[package]]
3067
+name = "heck"
3068
+version = "0.5.0"
3069
+source = "registry+https://github.com/rust-lang/crates.io-index"
3070
+checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
3071
+
3072
+[[package]]
3073
+name = "hermit-abi"
3074
+version = "0.5.2"
3075
+source = "registry+https://github.com/rust-lang/crates.io-index"
3076
+checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
3077
+
3078
+[[package]]
3079
+name = "hex"
3080
+version = "0.4.3"
3081
+source = "registry+https://github.com/rust-lang/crates.io-index"
3082
+checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
3083
+
3084
+[[package]]
3085
+name = "hexf-parse"
3086
+version = "0.2.1"
3087
+source = "registry+https://github.com/rust-lang/crates.io-index"
3088
+checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df"
3089
+
3090
+[[package]]
3091
+name = "hkdf"
3092
+version = "0.12.4"
3093
+source = "registry+https://github.com/rust-lang/crates.io-index"
3094
+checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7"
3095
+dependencies = [
3096
+ "hmac 0.12.1",
3097
+]
3098
+
3099
+[[package]]
3100
+name = "hmac"
3101
+version = "0.12.1"
3102
+source = "registry+https://github.com/rust-lang/crates.io-index"
3103
+checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
3104
+dependencies = [
3105
+ "digest 0.10.7",
3106
+]
3107
+
3108
+[[package]]
3109
+name = "hmac"
3110
+version = "0.13.0"
3111
+source = "registry+https://github.com/rust-lang/crates.io-index"
3112
+checksum = "6303bc9732ae41b04cb554b844a762b4115a61bfaa81e3e83050991eeb56863f"
3113
+dependencies = [
3114
+ "digest 0.11.3",
3115
+]
3116
+
3117
+[[package]]
3118
+name = "home"
3119
+version = "0.5.12"
3120
+source = "registry+https://github.com/rust-lang/crates.io-index"
3121
+checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d"
3122
+dependencies = [
3123
+ "windows-sys 0.61.2",
3124
+]
3125
+
3126
+[[package]]
3127
+name = "http"
3128
+version = "1.4.2"
3129
+source = "registry+https://github.com/rust-lang/crates.io-index"
3130
+checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425"
3131
+dependencies = [
3132
+ "bytes",
3133
+ "itoa",
3134
+]
3135
+
3136
+[[package]]
3137
+name = "http-body"
3138
+version = "1.0.1"
3139
+source = "registry+https://github.com/rust-lang/crates.io-index"
3140
+checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184"
3141
+dependencies = [
3142
+ "bytes",
3143
+ "http",
3144
+]
3145
+
3146
+[[package]]
3147
+name = "http-body-util"
3148
+version = "0.1.3"
3149
+source = "registry+https://github.com/rust-lang/crates.io-index"
3150
+checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a"
3151
+dependencies = [
3152
+ "bytes",
3153
+ "futures-core",
3154
+ "http",
3155
+ "http-body",
3156
+ "pin-project-lite",
3157
+]
3158
+
3159
+[[package]]
3160
+name = "httparse"
3161
+version = "1.10.1"
3162
+source = "registry+https://github.com/rust-lang/crates.io-index"
3163
+checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
3164
+
3165
+[[package]]
3166
+name = "hybrid-array"
3167
+version = "0.4.13"
3168
+source = "registry+https://github.com/rust-lang/crates.io-index"
3169
+checksum = "818356c5132c1fede50f837ca96afbe78ff42413047f4abb886217845e1b6c8c"
3170
+dependencies = [
3171
+ "typenum",
3172
+]
3173
+
3174
+[[package]]
3175
+name = "hyper"
3176
+version = "1.10.1"
3177
+source = "registry+https://github.com/rust-lang/crates.io-index"
3178
+checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498"
3179
+dependencies = [
3180
+ "atomic-waker",
3181
+ "bytes",
3182
+ "futures-channel",
3183
+ "futures-core",
3184
+ "h2",
3185
+ "http",
3186
+ "http-body",
3187
+ "httparse",
3188
+ "itoa",
3189
+ "pin-project-lite",
3190
+ "smallvec",
3191
+ "tokio",
3192
+ "want",
3193
+]
3194
+
3195
+[[package]]
3196
+name = "hyper-rustls"
3197
+version = "0.27.9"
3198
+source = "registry+https://github.com/rust-lang/crates.io-index"
3199
+checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f"
3200
+dependencies = [
3201
+ "http",
3202
+ "hyper",
3203
+ "hyper-util",
3204
+ "rustls",
3205
+ "tokio",
3206
+ "tokio-rustls",
3207
+ "tower-service",
3208
+]
3209
+
3210
+[[package]]
3211
+name = "hyper-util"
3212
+version = "0.1.20"
3213
+source = "registry+https://github.com/rust-lang/crates.io-index"
3214
+checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0"
3215
+dependencies = [
3216
+ "base64",
3217
+ "bytes",
3218
+ "futures-channel",
3219
+ "futures-util",
3220
+ "http",
3221
+ "http-body",
3222
+ "hyper",
3223
+ "ipnet",
3224
+ "libc",
3225
+ "percent-encoding",
3226
+ "pin-project-lite",
3227
+ "socket2",
3228
+ "system-configuration",
3229
+ "tokio",
3230
+ "tower-service",
3231
+ "tracing",
3232
+ "windows-registry 0.6.1",
3233
+]
3234
+
3235
+[[package]]
3236
+name = "iana-time-zone"
3237
+version = "0.1.65"
3238
+source = "registry+https://github.com/rust-lang/crates.io-index"
3239
+checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470"
3240
+dependencies = [
3241
+ "android_system_properties",
3242
+ "core-foundation-sys",
3243
+ "iana-time-zone-haiku",
3244
+ "js-sys",
3245
+ "log",
3246
+ "wasm-bindgen",
3247
+ "windows-core 0.62.2",
3248
+]
3249
+
3250
+[[package]]
3251
+name = "iana-time-zone-haiku"
3252
+version = "0.1.2"
3253
+source = "registry+https://github.com/rust-lang/crates.io-index"
3254
+checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
3255
+dependencies = [
3256
+ "cc",
3257
+]
3258
+
3259
+[[package]]
3260
+name = "icu_collections"
3261
+version = "2.2.0"
3262
+source = "registry+https://github.com/rust-lang/crates.io-index"
3263
+checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c"
3264
+dependencies = [
3265
+ "displaydoc",
3266
+ "potential_utf",
3267
+ "utf8_iter",
3268
+ "yoke",
3269
+ "zerofrom",
3270
+ "zerovec",
3271
+]
3272
+
3273
+[[package]]
3274
+name = "icu_locale_core"
3275
+version = "2.2.0"
3276
+source = "registry+https://github.com/rust-lang/crates.io-index"
3277
+checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29"
3278
+dependencies = [
3279
+ "displaydoc",
3280
+ "litemap",
3281
+ "tinystr",
3282
+ "writeable",
3283
+ "zerovec",
3284
+]
3285
+
3286
+[[package]]
3287
+name = "icu_normalizer"
3288
+version = "2.2.0"
3289
+source = "registry+https://github.com/rust-lang/crates.io-index"
3290
+checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4"
3291
+dependencies = [
3292
+ "icu_collections",
3293
+ "icu_normalizer_data",
3294
+ "icu_properties",
3295
+ "icu_provider",
3296
+ "smallvec",
3297
+ "zerovec",
3298
+]
3299
+
3300
+[[package]]
3301
+name = "icu_normalizer_data"
3302
+version = "2.2.0"
3303
+source = "registry+https://github.com/rust-lang/crates.io-index"
3304
+checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38"
3305
+
3306
+[[package]]
3307
+name = "icu_properties"
3308
+version = "2.2.0"
3309
+source = "registry+https://github.com/rust-lang/crates.io-index"
3310
+checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de"
3311
+dependencies = [
3312
+ "icu_collections",
3313
+ "icu_locale_core",
3314
+ "icu_properties_data",
3315
+ "icu_provider",
3316
+ "zerotrie",
3317
+ "zerovec",
3318
+]
3319
+
3320
+[[package]]
3321
+name = "icu_properties_data"
3322
+version = "2.2.0"
3323
+source = "registry+https://github.com/rust-lang/crates.io-index"
3324
+checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14"
3325
+
3326
+[[package]]
3327
+name = "icu_provider"
3328
+version = "2.2.0"
3329
+source = "registry+https://github.com/rust-lang/crates.io-index"
3330
+checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421"
3331
+dependencies = [
3332
+ "displaydoc",
3333
+ "icu_locale_core",
3334
+ "writeable",
3335
+ "yoke",
3336
+ "zerofrom",
3337
+ "zerotrie",
3338
+ "zerovec",
3339
+]
3340
+
3341
+[[package]]
3342
+name = "idna"
3343
+version = "1.1.0"
3344
+source = "registry+https://github.com/rust-lang/crates.io-index"
3345
+checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
3346
+dependencies = [
3347
+ "idna_adapter",
3348
+ "smallvec",
3349
+ "utf8_iter",
3350
+]
3351
+
3352
+[[package]]
3353
+name = "idna_adapter"
3354
+version = "1.2.2"
3355
+source = "registry+https://github.com/rust-lang/crates.io-index"
3356
+checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714"
3357
+dependencies = [
3358
+ "icu_normalizer",
3359
+ "icu_properties",
3360
+]
3361
+
3362
+[[package]]
3363
+name = "image"
3364
+version = "0.25.10"
3365
+source = "registry+https://github.com/rust-lang/crates.io-index"
3366
+checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104"
3367
+dependencies = [
3368
+ "bytemuck",
3369
+ "byteorder-lite",
3370
+ "color_quant",
3371
+ "exr",
3372
+ "gif 0.14.2",
3373
+ "image-webp",
3374
+ "moxcms",
3375
+ "num-traits",
3376
+ "png 0.18.1",
3377
+ "qoi",
3378
+ "ravif",
3379
+ "rayon",
3380
+ "rgb",
3381
+ "tiff",
3382
+ "zune-core 0.5.1",
3383
+ "zune-jpeg 0.5.15",
3384
+]
3385
+
3386
+[[package]]
3387
+name = "image-webp"
3388
+version = "0.2.4"
3389
+source = "registry+https://github.com/rust-lang/crates.io-index"
3390
+checksum = "525e9ff3e1a4be2fbea1fdf0e98686a6d98b4d8f937e1bf7402245af1909e8c3"
3391
+dependencies = [
3392
+ "byteorder-lite",
3393
+ "quick-error",
3394
+]
3395
+
3396
+[[package]]
3397
+name = "imagesize"
3398
+version = "0.13.0"
3399
+source = "registry+https://github.com/rust-lang/crates.io-index"
3400
+checksum = "edcd27d72f2f071c64249075f42e205ff93c9a4c5f6c6da53e79ed9f9832c285"
3401
+
3402
+[[package]]
3403
+name = "imgref"
3404
+version = "1.12.2"
3405
+source = "registry+https://github.com/rust-lang/crates.io-index"
3406
+checksum = "89194689a993ab15268672e99e7b0e19da2da3268ac682e8f02d29d4d1434cd7"
3407
+
3408
+[[package]]
3409
+name = "indexmap"
3410
+version = "2.14.0"
3411
+source = "registry+https://github.com/rust-lang/crates.io-index"
3412
+checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
3413
+dependencies = [
3414
+ "equivalent",
3415
+ "hashbrown 0.17.1",
3416
+ "serde",
3417
+ "serde_core",
3418
+]
3419
+
3420
+[[package]]
3421
+name = "inout"
3422
+version = "0.1.4"
3423
+source = "registry+https://github.com/rust-lang/crates.io-index"
3424
+checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01"
3425
+dependencies = [
3426
+ "block-padding 0.3.3",
3427
+ "generic-array",
3428
+]
3429
+
3430
+[[package]]
3431
+name = "inout"
3432
+version = "0.2.2"
3433
+source = "registry+https://github.com/rust-lang/crates.io-index"
3434
+checksum = "4250ce6452e92010fdf7268ccc5d14faa80bb12fc741938534c58f16804e03c7"
3435
+dependencies = [
3436
+ "block-padding 0.4.2",
3437
+ "hybrid-array",
3438
+]
3439
+
3440
+[[package]]
3441
+name = "instant"
3442
+version = "0.1.13"
3443
+source = "registry+https://github.com/rust-lang/crates.io-index"
3444
+checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
3445
+dependencies = [
3446
+ "cfg-if",
3447
+]
3448
+
3449
+[[package]]
3450
+name = "interpolate_name"
3451
+version = "0.2.4"
3452
+source = "registry+https://github.com/rust-lang/crates.io-index"
3453
+checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60"
3454
+dependencies = [
3455
+ "proc-macro2",
3456
+ "quote",
3457
+ "syn",
3458
+]
3459
+
3460
+[[package]]
3461
+name = "inventory"
3462
+version = "0.3.24"
3463
+source = "registry+https://github.com/rust-lang/crates.io-index"
3464
+checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b"
3465
+dependencies = [
3466
+ "rustversion",
3467
+]
3468
+
3469
+[[package]]
3470
+name = "io-surface"
3471
+version = "0.16.1"
3472
+source = "registry+https://github.com/rust-lang/crates.io-index"
3473
+checksum = "554b8c5d64ec09a3a520fe58e4d48a73e00ff32899cdcbe32a4877afd4968b8e"
3474
+dependencies = [
3475
+ "cgl",
3476
+ "core-foundation 0.10.0",
3477
+ "core-foundation-sys",
3478
+ "leaky-cow",
3479
+]
3480
+
3481
+[[package]]
3482
+name = "ipnet"
3483
+version = "2.12.0"
3484
+source = "registry+https://github.com/rust-lang/crates.io-index"
3485
+checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2"
3486
+
3487
+[[package]]
3488
+name = "is-docker"
3489
+version = "0.2.0"
3490
+source = "registry+https://github.com/rust-lang/crates.io-index"
3491
+checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3"
3492
+dependencies = [
3493
+ "once_cell",
3494
+]
3495
+
3496
+[[package]]
3497
+name = "is-wsl"
3498
+version = "0.4.0"
3499
+source = "registry+https://github.com/rust-lang/crates.io-index"
3500
+checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5"
3501
+dependencies = [
3502
+ "is-docker",
3503
+ "once_cell",
3504
+]
3505
+
3506
+[[package]]
3507
+name = "is_terminal_polyfill"
3508
+version = "1.70.2"
3509
+source = "registry+https://github.com/rust-lang/crates.io-index"
3510
+checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
3511
+
3512
+[[package]]
3513
+name = "itertools"
3514
+version = "0.13.0"
3515
+source = "registry+https://github.com/rust-lang/crates.io-index"
3516
+checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
3517
+dependencies = [
3518
+ "either",
3519
+]
3520
+
3521
+[[package]]
3522
+name = "itertools"
3523
+version = "0.14.0"
3524
+source = "registry+https://github.com/rust-lang/crates.io-index"
3525
+checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
3526
+dependencies = [
3527
+ "either",
3528
+]
3529
+
3530
+[[package]]
3531
+name = "itoa"
3532
+version = "1.0.18"
3533
+source = "registry+https://github.com/rust-lang/crates.io-index"
3534
+checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
3535
+
3536
+[[package]]
3537
+name = "itunes"
3538
+version = "0.1.0"
3539
+dependencies = [
3540
+ "adi",
3541
+ "base64",
3542
+ "bytes",
3543
+ "grandslam",
3544
+ "hex",
3545
+ "log",
3546
+ "plist",
3547
+ "plist-macros",
3548
+ "rand 0.9.4",
3549
+ "reqwest",
3550
+ "thiserror 2.0.18",
3551
+ "uuid",
3552
+]
3553
+
3554
+[[package]]
3555
+name = "jiff"
3556
+version = "0.2.31"
3557
+source = "registry+https://github.com/rust-lang/crates.io-index"
3558
+checksum = "ccfe6121cbe750cf81efa362d85c0bde7ea298ec43092d3a193baca59cdbd634"
3559
+dependencies = [
3560
+ "defmt",
3561
+ "jiff-static",
3562
+ "log",
3563
+ "portable-atomic",
3564
+ "portable-atomic-util",
3565
+ "serde_core",
3566
+]
3567
+
3568
+[[package]]
3569
+name = "jiff-static"
3570
+version = "0.2.31"
3571
+source = "registry+https://github.com/rust-lang/crates.io-index"
3572
+checksum = "e165e897f662d428f3cd3828a919dbe067c2d42bb1031eede74ef9d27ecdedd2"
3573
+dependencies = [
3574
+ "proc-macro2",
3575
+ "quote",
3576
+ "syn",
3577
+]
3578
+
3579
+[[package]]
3580
+name = "jni"
3581
+version = "0.22.4"
3582
+source = "registry+https://github.com/rust-lang/crates.io-index"
3583
+checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498"
3584
+dependencies = [
3585
+ "cfg-if",
3586
+ "combine",
3587
+ "jni-macros",
3588
+ "jni-sys 0.4.1",
3589
+ "log",
3590
+ "simd_cesu8",
3591
+ "thiserror 2.0.18",
3592
+ "walkdir",
3593
+ "windows-link 0.2.1",
3594
+]
3595
+
3596
+[[package]]
3597
+name = "jni-macros"
3598
+version = "0.22.4"
3599
+source = "registry+https://github.com/rust-lang/crates.io-index"
3600
+checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3"
3601
+dependencies = [
3602
+ "proc-macro2",
3603
+ "quote",
3604
+ "rustc_version",
3605
+ "simd_cesu8",
3606
+ "syn",
3607
+]
3608
+
3609
+[[package]]
3610
+name = "jni-sys"
3611
+version = "0.3.1"
3612
+source = "registry+https://github.com/rust-lang/crates.io-index"
3613
+checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258"
3614
+dependencies = [
3615
+ "jni-sys 0.4.1",
3616
+]
3617
+
3618
+[[package]]
3619
+name = "jni-sys"
3620
+version = "0.4.1"
3621
+source = "registry+https://github.com/rust-lang/crates.io-index"
3622
+checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2"
3623
+dependencies = [
3624
+ "jni-sys-macros",
3625
+]
3626
+
3627
+[[package]]
3628
+name = "jni-sys-macros"
3629
+version = "0.4.1"
3630
+source = "registry+https://github.com/rust-lang/crates.io-index"
3631
+checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264"
3632
+dependencies = [
3633
+ "quote",
3634
+ "syn",
3635
+]
3636
+
3637
+[[package]]
3638
+name = "jobserver"
3639
+version = "0.1.35"
3640
+source = "registry+https://github.com/rust-lang/crates.io-index"
3641
+checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3"
3642
+dependencies = [
3643
+ "getrandom 0.4.3",
3644
+ "libc",
3645
+]
3646
+
3647
+[[package]]
3648
+name = "js-sys"
3649
+version = "0.3.103"
3650
+source = "registry+https://github.com/rust-lang/crates.io-index"
3651
+checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102"
3652
+dependencies = [
3653
+ "cfg-if",
3654
+ "futures-util",
3655
+ "wasm-bindgen",
3656
+]
3657
+
3658
+[[package]]
3659
+name = "keccak"
3660
+version = "0.1.6"
3661
+source = "registry+https://github.com/rust-lang/crates.io-index"
3662
+checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653"
3663
+dependencies = [
3664
+ "cpufeatures 0.2.17",
3665
+]
3666
+
3667
+[[package]]
3668
+name = "khronos-egl"
3669
+version = "6.0.0"
3670
+source = "registry+https://github.com/rust-lang/crates.io-index"
3671
+checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76"
3672
+dependencies = [
3673
+ "libc",
3674
+ "libloading",
3675
+ "pkg-config",
3676
+]
3677
+
3678
+[[package]]
3679
+name = "khronos_api"
3680
+version = "3.1.0"
3681
+source = "registry+https://github.com/rust-lang/crates.io-index"
3682
+checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc"
3683
+
3684
+[[package]]
3685
+name = "kurbo"
3686
+version = "0.11.3"
3687
+source = "registry+https://github.com/rust-lang/crates.io-index"
3688
+checksum = "c62026ae44756f8a599ba21140f350303d4f08dcdcc71b5ad9c9bb8128c13c62"
3689
+dependencies = [
3690
+ "arrayvec",
3691
+ "euclid",
3692
+ "smallvec",
3693
+]
3694
+
3695
+[[package]]
3696
+name = "lazy_static"
3697
+version = "1.5.0"
3698
+source = "registry+https://github.com/rust-lang/crates.io-index"
3699
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
3700
+dependencies = [
3701
+ "spin 0.9.8",
3702
+]
3703
+
3704
+[[package]]
3705
+name = "leak"
3706
+version = "0.1.2"
3707
+source = "registry+https://github.com/rust-lang/crates.io-index"
3708
+checksum = "bd100e01f1154f2908dfa7d02219aeab25d0b9c7fa955164192e3245255a0c73"
3709
+
3710
+[[package]]
3711
+name = "leaky-cow"
3712
+version = "0.1.1"
3713
+source = "registry+https://github.com/rust-lang/crates.io-index"
3714
+checksum = "40a8225d44241fd324a8af2806ba635fc7c8a7e9a7de4d5cf3ef54e71f5926fc"
3715
+dependencies = [
3716
+ "leak",
3717
+]
3718
+
3719
+[[package]]
3720
+name = "lebe"
3721
+version = "0.5.3"
3722
+source = "registry+https://github.com/rust-lang/crates.io-index"
3723
+checksum = "7a79a3332a6609480d7d0c9eab957bca6b455b91bb84e66d19f5ff66294b85b8"
3724
+
3725
+[[package]]
3726
+name = "libc"
3727
+version = "0.2.186"
3728
+source = "registry+https://github.com/rust-lang/crates.io-index"
3729
+checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
3730
+
3731
+[[package]]
3732
+name = "libfuzzer-sys"
3733
+version = "0.4.13"
3734
+source = "registry+https://github.com/rust-lang/crates.io-index"
3735
+checksum = "a9fd2f41a1cba099f79a0b6b6c35656cf7c03351a7bae8ff0f28f25270f929d2"
3736
+dependencies = [
3737
+ "arbitrary",
3738
+ "cc",
3739
+]
3740
+
3741
+[[package]]
3742
+name = "libloading"
3743
+version = "0.8.9"
3744
+source = "registry+https://github.com/rust-lang/crates.io-index"
3745
+checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55"
3746
+dependencies = [
3747
+ "cfg-if",
3748
+ "windows-link 0.2.1",
3749
+]
3750
+
3751
+[[package]]
3752
+name = "libm"
3753
+version = "0.2.16"
3754
+source = "registry+https://github.com/rust-lang/crates.io-index"
3755
+checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
3756
+
3757
+[[package]]
3758
+name = "library-coreadi"
3759
+version = "0.1.0"
3760
+dependencies = [
3761
+ "adi",
3762
+ "dlopen2",
3763
+]
3764
+
3765
+[[package]]
3766
+name = "libredox"
3767
+version = "0.1.18"
3768
+source = "registry+https://github.com/rust-lang/crates.io-index"
3769
+checksum = "c943259e342f1e06ff2da7a83eabdfe7f92ce10262688dbf1895ff0b3e6e4652"
3770
+dependencies = [
3771
+ "libc",
3772
+]
3773
+
3774
+[[package]]
3775
+name = "linebender_resource_handle"
3776
+version = "0.1.1"
3777
+source = "registry+https://github.com/rust-lang/crates.io-index"
3778
+checksum = "d4a5ff6bcca6c4867b1c4fd4ef63e4db7436ef363e0ad7531d1558856bae64f4"
3779
+
3780
+[[package]]
3781
+name = "link-section"
3782
+version = "0.19.0"
3783
+source = "registry+https://github.com/rust-lang/crates.io-index"
3784
+checksum = "e333fe507b738576d6da5bb3f1a7d7a1c80307ed9ef31624c057d844c19c93e9"
3785
+
3786
+[[package]]
3787
+name = "linktime-proc-macro"
3788
+version = "0.2.0"
3789
+source = "registry+https://github.com/rust-lang/crates.io-index"
3790
+checksum = "8c7b0a3383c2a1002d11349c92c85a666a5fb679e96c79d782cf0dbe557fd6ee"
3791
+
3792
+[[package]]
3793
+name = "linux-raw-sys"
3794
+version = "0.4.15"
3795
+source = "registry+https://github.com/rust-lang/crates.io-index"
3796
+checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
3797
+
3798
+[[package]]
3799
+name = "linux-raw-sys"
3800
+version = "0.12.1"
3801
+source = "registry+https://github.com/rust-lang/crates.io-index"
3802
+checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
3803
+
3804
+[[package]]
3805
+name = "litemap"
3806
+version = "0.8.2"
3807
+source = "registry+https://github.com/rust-lang/crates.io-index"
3808
+checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0"
3809
+
3810
+[[package]]
3811
+name = "litrs"
3812
+version = "1.0.0"
3813
+source = "registry+https://github.com/rust-lang/crates.io-index"
3814
+checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092"
3815
+
3816
+[[package]]
3817
+name = "lock_api"
3818
+version = "0.4.14"
3819
+source = "registry+https://github.com/rust-lang/crates.io-index"
3820
+checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965"
3821
+dependencies = [
3822
+ "scopeguard",
3823
+]
3824
+
3825
+[[package]]
3826
+name = "log"
3827
+version = "0.4.33"
3828
+source = "registry+https://github.com/rust-lang/crates.io-index"
3829
+checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
3830
+dependencies = [
3831
+ "serde_core",
3832
+ "value-bag",
3833
+]
3834
+
3835
+[[package]]
3836
+name = "loop9"
3837
+version = "0.1.5"
3838
+source = "registry+https://github.com/rust-lang/crates.io-index"
3839
+checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062"
3840
+dependencies = [
3841
+ "imgref",
3842
+]
3843
+
3844
+[[package]]
3845
+name = "lru-slab"
3846
+version = "0.1.2"
3847
+source = "registry+https://github.com/rust-lang/crates.io-index"
3848
+checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
3849
+
3850
+[[package]]
3851
+name = "lyon"
3852
+version = "1.0.19"
3853
+source = "registry+https://github.com/rust-lang/crates.io-index"
3854
+checksum = "bd0578bdecb7d6d88987b8b2b1e3a4e2f81df9d0ece1078623324a567904e7b7"
3855
+dependencies = [
3856
+ "lyon_algorithms",
3857
+ "lyon_tessellation",
3858
+]
3859
+
3860
+[[package]]
3861
+name = "lyon_algorithms"
3862
+version = "1.0.20"
3863
+source = "registry+https://github.com/rust-lang/crates.io-index"
3864
+checksum = "8575c0d003ae459399623c4def180c63b77f343b1a7fee64f249b349e7699a31"
3865
+dependencies = [
3866
+ "lyon_path",
3867
+ "num-traits",
3868
+]
3869
+
3870
+[[package]]
3871
+name = "lyon_geom"
3872
+version = "1.0.19"
3873
+source = "registry+https://github.com/rust-lang/crates.io-index"
3874
+checksum = "4336502e29e32af93cf2dad2214ed6003c17ceb5bd499df77b1de663b9042b92"
3875
+dependencies = [
3876
+ "arrayvec",
3877
+ "euclid",
3878
+ "num-traits",
3879
+]
3880
+
3881
+[[package]]
3882
+name = "lyon_path"
3883
+version = "1.0.19"
3884
+source = "registry+https://github.com/rust-lang/crates.io-index"
3885
+checksum = "5c463f9c428b7fc5ec885dcd39ce4aa61e29111d0e33483f6f98c74e89d8621e"
3886
+dependencies = [
3887
+ "lyon_geom",
3888
+ "num-traits",
3889
+]
3890
+
3891
+[[package]]
3892
+name = "lyon_tessellation"
3893
+version = "1.0.20"
3894
+source = "registry+https://github.com/rust-lang/crates.io-index"
3895
+checksum = "8e43b7e44161571868f5c931d12583592c223c5583eef86b08aa02b7048a3552"
3896
+dependencies = [
3897
+ "float_next_after",
3898
+ "lyon_path",
3899
+ "num-traits",
3900
+]
3901
+
3902
+[[package]]
3903
+name = "mac"
3904
+version = "0.1.1"
3905
+source = "registry+https://github.com/rust-lang/crates.io-index"
3906
+checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4"
3907
+
3908
+[[package]]
3909
+name = "mach2"
3910
+version = "0.4.3"
3911
+source = "registry+https://github.com/rust-lang/crates.io-index"
3912
+checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44"
3913
+dependencies = [
3914
+ "libc",
3915
+]
3916
+
3917
+[[package]]
3918
+name = "mach2"
3919
+version = "0.5.0"
3920
+source = "registry+https://github.com/rust-lang/crates.io-index"
3921
+checksum = "6a1b95cd5421ec55b445b5ae102f5ea0e768de1f82bd3001e11f426c269c3aea"
3922
+dependencies = [
3923
+ "libc",
3924
+]
3925
+
3926
+[[package]]
3927
+name = "malloc_buf"
3928
+version = "0.0.6"
3929
+source = "registry+https://github.com/rust-lang/crates.io-index"
3930
+checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
3931
+dependencies = [
3932
+ "libc",
3933
+]
3934
+
3935
+[[package]]
3936
+name = "maybe-rayon"
3937
+version = "0.1.1"
3938
+source = "registry+https://github.com/rust-lang/crates.io-index"
3939
+checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519"
3940
+dependencies = [
3941
+ "cfg-if",
3942
+ "rayon",
3943
+]
3944
+
3945
+[[package]]
3946
+name = "md-5"
3947
+version = "0.10.6"
3948
+source = "registry+https://github.com/rust-lang/crates.io-index"
3949
+checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf"
3950
+dependencies = [
3951
+ "cfg-if",
3952
+ "digest 0.10.7",
3953
+]
3954
+
3955
+[[package]]
3956
+name = "media"
3957
+version = "0.1.0"
3958
+source = "git+https://github.com/zed-industries/zed?rev=876ec5a8a074ba83cce2129ed4d76b59c05a37e9#876ec5a8a074ba83cce2129ed4d76b59c05a37e9"
3959
+dependencies = [
3960
+ "anyhow",
3961
+ "bindgen 0.71.1",
3962
+ "core-foundation 0.10.0",
3963
+ "core-video",
3964
+ "ctor",
3965
+ "foreign-types",
3966
+ "metal",
3967
+ "objc",
3968
+]
3969
+
3970
+[[package]]
3971
+name = "memchr"
3972
+version = "2.8.2"
3973
+source = "registry+https://github.com/rust-lang/crates.io-index"
3974
+checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4"
3975
+
3976
+[[package]]
3977
+name = "memmap2"
3978
+version = "0.9.11"
3979
+source = "registry+https://github.com/rust-lang/crates.io-index"
3980
+checksum = "d1219ed1b7f229ee7104d281dd01d6802fe28bb6e95d292942c4daacdeb798c0"
3981
+dependencies = [
3982
+ "libc",
3983
+]
3984
+
3985
+[[package]]
3986
+name = "memoffset"
3987
+version = "0.9.1"
3988
+source = "registry+https://github.com/rust-lang/crates.io-index"
3989
+checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
3990
+dependencies = [
3991
+ "autocfg",
3992
+]
3993
+
3994
+[[package]]
3995
+name = "metal"
3996
+version = "0.33.0"
3997
+source = "registry+https://github.com/rust-lang/crates.io-index"
3998
+checksum = "c7047791b5bc903b8cd963014b355f71dc9864a9a0b727057676c1dcae5cbc15"
3999
+dependencies = [
4000
+ "bitflags 2.13.0",
4001
+ "block",
4002
+ "core-graphics-types 0.2.0",
4003
+ "foreign-types",
4004
+ "log",
4005
+ "objc",
4006
+ "paste",
4007
+]
4008
+
4009
+[[package]]
4010
+name = "mime"
4011
+version = "0.3.17"
4012
+source = "registry+https://github.com/rust-lang/crates.io-index"
4013
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
4014
+
4015
+[[package]]
4016
+name = "minimal-lexical"
4017
+version = "0.2.1"
4018
+source = "registry+https://github.com/rust-lang/crates.io-index"
4019
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
4020
+
4021
+[[package]]
4022
+name = "miniz_oxide"
4023
+version = "0.8.9"
4024
+source = "registry+https://github.com/rust-lang/crates.io-index"
4025
+checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
4026
+dependencies = [
4027
+ "adler2",
4028
+ "simd-adler32",
4029
+]
4030
+
4031
+[[package]]
4032
+name = "mio"
4033
+version = "1.2.1"
4034
+source = "registry+https://github.com/rust-lang/crates.io-index"
4035
+checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda"
4036
+dependencies = [
4037
+ "libc",
4038
+ "wasi",
4039
+ "windows-sys 0.61.2",
4040
+]
4041
+
4042
+[[package]]
4043
+name = "moxcms"
4044
+version = "0.8.1"
4045
+source = "registry+https://github.com/rust-lang/crates.io-index"
4046
+checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b"
4047
+dependencies = [
4048
+ "num-traits",
4049
+ "pxfm",
4050
+]
4051
+
4052
+[[package]]
4053
+name = "naga"
4054
+version = "29.0.3"
4055
+source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88"
4056
+dependencies = [
4057
+ "arrayvec",
4058
+ "bit-set",
4059
+ "bitflags 2.13.0",
4060
+ "cfg-if",
4061
+ "cfg_aliases",
4062
+ "codespan-reporting",
4063
+ "half",
4064
+ "hashbrown 0.16.1",
4065
+ "hexf-parse",
4066
+ "indexmap",
4067
+ "libm",
4068
+ "log",
4069
+ "num-traits",
4070
+ "once_cell",
4071
+ "rustc-hash 1.1.0",
4072
+ "spirv",
4073
+ "thiserror 2.0.18",
4074
+ "unicode-ident",
4075
+]
4076
+
4077
+[[package]]
4078
+name = "nanorand"
4079
+version = "0.7.0"
4080
+source = "registry+https://github.com/rust-lang/crates.io-index"
4081
+checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3"
4082
+dependencies = [
4083
+ "getrandom 0.2.17",
4084
+]
4085
+
4086
+[[package]]
4087
+name = "ndk-sys"
4088
+version = "0.6.0+11769913"
4089
+source = "registry+https://github.com/rust-lang/crates.io-index"
4090
+checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873"
4091
+dependencies = [
4092
+ "jni-sys 0.3.1",
4093
+]
4094
+
4095
+[[package]]
4096
+name = "new_debug_unreachable"
4097
+version = "1.0.6"
4098
+source = "registry+https://github.com/rust-lang/crates.io-index"
4099
+checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086"
4100
+
4101
+[[package]]
4102
+name = "nix"
4103
+version = "0.29.0"
4104
+source = "registry+https://github.com/rust-lang/crates.io-index"
4105
+checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
4106
+dependencies = [
4107
+ "bitflags 2.13.0",
4108
+ "cfg-if",
4109
+ "cfg_aliases",
4110
+ "libc",
4111
+]
4112
+
4113
+[[package]]
4114
+name = "nix"
4115
+version = "0.31.3"
4116
+source = "registry+https://github.com/rust-lang/crates.io-index"
4117
+checksum = "cf20d2fde8ff38632c426f1165ed7436270b44f199fc55284c38276f9db47c3d"
4118
+dependencies = [
4119
+ "bitflags 2.13.0",
4120
+ "cfg-if",
4121
+ "cfg_aliases",
4122
+ "libc",
4123
+]
4124
+
4125
+[[package]]
4126
+name = "no_std_io2"
4127
+version = "0.9.4"
4128
+source = "registry+https://github.com/rust-lang/crates.io-index"
4129
+checksum = "418abd1b6d34fbf6cae440dc874771b0525a604428704c76e48b29a5e67b8003"
4130
+dependencies = [
4131
+ "memchr",
4132
+]
4133
+
4134
+[[package]]
4135
+name = "nom"
4136
+version = "7.1.3"
4137
+source = "registry+https://github.com/rust-lang/crates.io-index"
4138
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
4139
+dependencies = [
4140
+ "memchr",
4141
+ "minimal-lexical",
4142
+]
4143
+
4144
+[[package]]
4145
+name = "nom"
4146
+version = "8.0.0"
4147
+source = "registry+https://github.com/rust-lang/crates.io-index"
4148
+checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405"
4149
+dependencies = [
4150
+ "memchr",
4151
+]
4152
+
4153
+[[package]]
4154
+name = "noop_proc_macro"
4155
+version = "0.3.0"
4156
+source = "registry+https://github.com/rust-lang/crates.io-index"
4157
+checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8"
4158
+
4159
+[[package]]
4160
+name = "ntapi"
4161
+version = "0.4.3"
4162
+source = "registry+https://github.com/rust-lang/crates.io-index"
4163
+checksum = "c3b335231dfd352ffb0f8017f3b6027a4917f7df785ea2143d8af2adc66980ae"
4164
+dependencies = [
4165
+ "winapi",
4166
+]
4167
+
4168
+[[package]]
4169
+name = "nu-ansi-term"
4170
+version = "0.50.3"
4171
+source = "registry+https://github.com/rust-lang/crates.io-index"
4172
+checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
4173
+dependencies = [
4174
+ "windows-sys 0.61.2",
4175
+]
4176
+
4177
+[[package]]
4178
+name = "num"
4179
+version = "0.4.3"
4180
+source = "registry+https://github.com/rust-lang/crates.io-index"
4181
+checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23"
4182
+dependencies = [
4183
+ "num-bigint",
4184
+ "num-complex",
4185
+ "num-integer",
4186
+ "num-iter",
4187
+ "num-rational",
4188
+ "num-traits",
4189
+]
4190
+
4191
+[[package]]
4192
+name = "num-bigint"
4193
+version = "0.4.8"
4194
+source = "registry+https://github.com/rust-lang/crates.io-index"
4195
+checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367"
4196
+dependencies = [
4197
+ "num-integer",
4198
+ "num-traits",
4199
+]
4200
+
4201
+[[package]]
4202
+name = "num-bigint-dig"
4203
+version = "0.8.6"
4204
+source = "registry+https://github.com/rust-lang/crates.io-index"
4205
+checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7"
4206
+dependencies = [
4207
+ "lazy_static",
4208
+ "libm",
4209
+ "num-integer",
4210
+ "num-iter",
4211
+ "num-traits",
4212
+ "rand 0.8.6",
4213
+ "smallvec",
4214
+ "zeroize",
4215
+]
4216
+
4217
+[[package]]
4218
+name = "num-bigint-dig"
4219
+version = "0.9.1"
4220
+source = "registry+https://github.com/rust-lang/crates.io-index"
4221
+checksum = "a7f9a86e097b0d187ad0e65667c2f58b9254671e86e7dbb78036b16692eae099"
4222
+dependencies = [
4223
+ "libm",
4224
+ "num-integer",
4225
+ "num-iter",
4226
+ "num-traits",
4227
+ "once_cell",
4228
+ "rand 0.9.4",
4229
+ "serde",
4230
+ "smallvec",
4231
+ "zeroize",
4232
+]
4233
+
4234
+[[package]]
4235
+name = "num-complex"
4236
+version = "0.4.6"
4237
+source = "registry+https://github.com/rust-lang/crates.io-index"
4238
+checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
4239
+dependencies = [
4240
+ "num-traits",
4241
+]
4242
+
4243
+[[package]]
4244
+name = "num-conv"
4245
+version = "0.2.2"
4246
+source = "registry+https://github.com/rust-lang/crates.io-index"
4247
+checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441"
4248
+
4249
+[[package]]
4250
+name = "num-derive"
4251
+version = "0.4.2"
4252
+source = "registry+https://github.com/rust-lang/crates.io-index"
4253
+checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
4254
+dependencies = [
4255
+ "proc-macro2",
4256
+ "quote",
4257
+ "syn",
4258
+]
4259
+
4260
+[[package]]
4261
+name = "num-integer"
4262
+version = "0.1.46"
4263
+source = "registry+https://github.com/rust-lang/crates.io-index"
4264
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
4265
+dependencies = [
4266
+ "num-traits",
4267
+]
4268
+
4269
+[[package]]
4270
+name = "num-iter"
4271
+version = "0.1.45"
4272
+source = "registry+https://github.com/rust-lang/crates.io-index"
4273
+checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
4274
+dependencies = [
4275
+ "autocfg",
4276
+ "num-integer",
4277
+ "num-traits",
4278
+]
4279
+
4280
+[[package]]
4281
+name = "num-rational"
4282
+version = "0.4.2"
4283
+source = "registry+https://github.com/rust-lang/crates.io-index"
4284
+checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
4285
+dependencies = [
4286
+ "num-bigint",
4287
+ "num-integer",
4288
+ "num-traits",
4289
+]
4290
+
4291
+[[package]]
4292
+name = "num-traits"
4293
+version = "0.2.19"
4294
+source = "registry+https://github.com/rust-lang/crates.io-index"
4295
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
4296
+dependencies = [
4297
+ "autocfg",
4298
+ "libm",
4299
+]
4300
+
4301
+[[package]]
4302
+name = "num_cpus"
4303
+version = "1.17.0"
4304
+source = "registry+https://github.com/rust-lang/crates.io-index"
4305
+checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b"
4306
+dependencies = [
4307
+ "hermit-abi",
4308
+ "libc",
4309
+]
4310
+
4311
+[[package]]
4312
+name = "objc"
4313
+version = "0.2.7"
4314
+source = "registry+https://github.com/rust-lang/crates.io-index"
4315
+checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
4316
+dependencies = [
4317
+ "malloc_buf",
4318
+ "objc_exception",
4319
+]
4320
+
4321
+[[package]]
4322
+name = "objc-foundation"
4323
+version = "0.1.1"
4324
+source = "registry+https://github.com/rust-lang/crates.io-index"
4325
+checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9"
4326
+dependencies = [
4327
+ "block",
4328
+ "objc",
4329
+ "objc_id",
4330
+]
4331
+
4332
+[[package]]
4333
+name = "objc-sys"
4334
+version = "0.3.5"
4335
+source = "registry+https://github.com/rust-lang/crates.io-index"
4336
+checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310"
4337
+
4338
+[[package]]
4339
+name = "objc2"
4340
+version = "0.5.2"
4341
+source = "registry+https://github.com/rust-lang/crates.io-index"
4342
+checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804"
4343
+dependencies = [
4344
+ "objc-sys",
4345
+ "objc2-encode",
4346
+]
4347
+
4348
+[[package]]
4349
+name = "objc2"
4350
+version = "0.6.4"
4351
+source = "registry+https://github.com/rust-lang/crates.io-index"
4352
+checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f"
4353
+dependencies = [
4354
+ "objc2-encode",
4355
+]
4356
+
4357
+[[package]]
4358
+name = "objc2-app-kit"
4359
+version = "0.2.2"
4360
+source = "registry+https://github.com/rust-lang/crates.io-index"
4361
+checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff"
4362
+dependencies = [
4363
+ "bitflags 2.13.0",
4364
+ "block2 0.5.1",
4365
+ "libc",
4366
+ "objc2 0.5.2",
4367
+ "objc2-core-data",
4368
+ "objc2-core-image",
4369
+ "objc2-foundation 0.2.2",
4370
+ "objc2-quartz-core 0.2.2",
4371
+]
4372
+
4373
+[[package]]
4374
+name = "objc2-app-kit"
4375
+version = "0.3.2"
4376
+source = "registry+https://github.com/rust-lang/crates.io-index"
4377
+checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c"
4378
+dependencies = [
4379
+ "objc2 0.6.4",
4380
+ "objc2-foundation 0.3.2",
4381
+]
4382
+
4383
+[[package]]
4384
+name = "objc2-core-data"
4385
+version = "0.2.2"
4386
+source = "registry+https://github.com/rust-lang/crates.io-index"
4387
+checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef"
4388
+dependencies = [
4389
+ "bitflags 2.13.0",
4390
+ "block2 0.5.1",
4391
+ "objc2 0.5.2",
4392
+ "objc2-foundation 0.2.2",
4393
+]
4394
+
4395
+[[package]]
4396
+name = "objc2-core-foundation"
4397
+version = "0.3.2"
4398
+source = "registry+https://github.com/rust-lang/crates.io-index"
4399
+checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
4400
+dependencies = [
4401
+ "bitflags 2.13.0",
4402
+ "dispatch2",
4403
+ "objc2 0.6.4",
4404
+]
4405
+
4406
+[[package]]
4407
+name = "objc2-core-image"
4408
+version = "0.2.2"
4409
+source = "registry+https://github.com/rust-lang/crates.io-index"
4410
+checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80"
4411
+dependencies = [
4412
+ "block2 0.5.1",
4413
+ "objc2 0.5.2",
4414
+ "objc2-foundation 0.2.2",
4415
+ "objc2-metal 0.2.2",
4416
+]
4417
+
4418
+[[package]]
4419
+name = "objc2-encode"
4420
+version = "4.1.0"
4421
+source = "registry+https://github.com/rust-lang/crates.io-index"
4422
+checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33"
4423
+
4424
+[[package]]
4425
+name = "objc2-foundation"
4426
+version = "0.2.2"
4427
+source = "registry+https://github.com/rust-lang/crates.io-index"
4428
+checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8"
4429
+dependencies = [
4430
+ "bitflags 2.13.0",
4431
+ "block2 0.5.1",
4432
+ "libc",
4433
+ "objc2 0.5.2",
4434
+]
4435
+
4436
+[[package]]
4437
+name = "objc2-foundation"
4438
+version = "0.3.2"
4439
+source = "registry+https://github.com/rust-lang/crates.io-index"
4440
+checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272"
4441
+dependencies = [
4442
+ "bitflags 2.13.0",
4443
+ "objc2 0.6.4",
4444
+ "objc2-core-foundation",
4445
+]
4446
+
4447
+[[package]]
4448
+name = "objc2-metal"
4449
+version = "0.2.2"
4450
+source = "registry+https://github.com/rust-lang/crates.io-index"
4451
+checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6"
4452
+dependencies = [
4453
+ "bitflags 2.13.0",
4454
+ "block2 0.5.1",
4455
+ "objc2 0.5.2",
4456
+ "objc2-foundation 0.2.2",
4457
+]
4458
+
4459
+[[package]]
4460
+name = "objc2-metal"
4461
+version = "0.3.2"
4462
+source = "registry+https://github.com/rust-lang/crates.io-index"
4463
+checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794"
4464
+dependencies = [
4465
+ "bitflags 2.13.0",
4466
+ "block2 0.6.2",
4467
+ "objc2 0.6.4",
4468
+ "objc2-foundation 0.3.2",
4469
+]
4470
+
4471
+[[package]]
4472
+name = "objc2-quartz-core"
4473
+version = "0.2.2"
4474
+source = "registry+https://github.com/rust-lang/crates.io-index"
4475
+checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a"
4476
+dependencies = [
4477
+ "bitflags 2.13.0",
4478
+ "block2 0.5.1",
4479
+ "objc2 0.5.2",
4480
+ "objc2-foundation 0.2.2",
4481
+ "objc2-metal 0.2.2",
4482
+]
4483
+
4484
+[[package]]
4485
+name = "objc2-quartz-core"
4486
+version = "0.3.2"
4487
+source = "registry+https://github.com/rust-lang/crates.io-index"
4488
+checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f"
4489
+dependencies = [
4490
+ "bitflags 2.13.0",
4491
+ "objc2 0.6.4",
4492
+ "objc2-core-foundation",
4493
+ "objc2-foundation 0.3.2",
4494
+ "objc2-metal 0.3.2",
4495
+]
4496
+
4497
+[[package]]
4498
+name = "objc_exception"
4499
+version = "0.1.2"
4500
+source = "registry+https://github.com/rust-lang/crates.io-index"
4501
+checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4"
4502
+dependencies = [
4503
+ "cc",
4504
+]
4505
+
4506
+[[package]]
4507
+name = "objc_id"
4508
+version = "0.1.1"
4509
+source = "registry+https://github.com/rust-lang/crates.io-index"
4510
+checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b"
4511
+dependencies = [
4512
+ "objc",
4513
+]
4514
+
4515
+[[package]]
4516
+name = "object"
4517
+version = "0.37.3"
4518
+source = "registry+https://github.com/rust-lang/crates.io-index"
4519
+checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe"
4520
+dependencies = [
4521
+ "memchr",
4522
+]
4523
+
4524
+[[package]]
4525
+name = "once_cell"
4526
+version = "1.21.4"
4527
+source = "registry+https://github.com/rust-lang/crates.io-index"
4528
+checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
4529
+
4530
+[[package]]
4531
+name = "once_cell_polyfill"
4532
+version = "1.70.2"
4533
+source = "registry+https://github.com/rust-lang/crates.io-index"
4534
+checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
4535
+
4536
+[[package]]
4537
+name = "oo7"
4538
+version = "0.6.0"
4539
+source = "registry+https://github.com/rust-lang/crates.io-index"
4540
+checksum = "78f2bfed90f1618b4b48dcad9307f25e14ae894e2949642c87c351601d62cebd"
4541
+dependencies = [
4542
+ "aes 0.8.4",
4543
+ "ashpd",
4544
+ "async-fs",
4545
+ "async-io",
4546
+ "async-lock",
4547
+ "blocking",
4548
+ "cbc 0.1.2",
4549
+ "cipher 0.4.4",
4550
+ "digest 0.10.7",
4551
+ "endi",
4552
+ "futures-lite 2.6.1",
4553
+ "futures-util",
4554
+ "getrandom 0.4.3",
4555
+ "hkdf",
4556
+ "hmac 0.12.1",
4557
+ "md-5",
4558
+ "num",
4559
+ "num-bigint-dig 0.9.1",
4560
+ "pbkdf2 0.12.2",
4561
+ "serde",
4562
+ "serde_bytes",
4563
+ "sha2 0.10.9",
4564
+ "subtle",
4565
+ "zbus",
4566
+ "zbus_macros",
4567
+ "zeroize",
4568
+ "zvariant",
4569
+]
4570
+
4571
+[[package]]
4572
+name = "open"
4573
+version = "5.3.6"
4574
+source = "registry+https://github.com/rust-lang/crates.io-index"
4575
+checksum = "cd8d3b65c44123a56e0133d2cd06ce4361bd3ca99d41198b2f25e3c3db9b8b4a"
4576
+dependencies = [
4577
+ "is-wsl",
4578
+ "libc",
4579
+]
4580
+
4581
+[[package]]
4582
+name = "openssl-probe"
4583
+version = "0.2.1"
4584
+source = "registry+https://github.com/rust-lang/crates.io-index"
4585
+checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe"
4586
+
4587
+[[package]]
4588
+name = "option-ext"
4589
+version = "0.2.0"
4590
+source = "registry+https://github.com/rust-lang/crates.io-index"
4591
+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
4592
+
4593
+[[package]]
4594
+name = "ordered-float"
4595
+version = "5.3.0"
4596
+source = "registry+https://github.com/rust-lang/crates.io-index"
4597
+checksum = "b7d950ca161dc355eaf28f82b11345ed76c6e1f6eb1f4f4479e0323b9e2fbd0e"
4598
+dependencies = [
4599
+ "num-traits",
4600
+]
4601
+
4602
+[[package]]
4603
+name = "ordered-stream"
4604
+version = "0.2.0"
4605
+source = "registry+https://github.com/rust-lang/crates.io-index"
4606
+checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50"
4607
+dependencies = [
4608
+ "futures-core",
4609
+ "pin-project-lite",
4610
+]
4611
+
4612
+[[package]]
4613
+name = "ouroboros"
4614
+version = "0.18.5"
4615
+source = "registry+https://github.com/rust-lang/crates.io-index"
4616
+checksum = "1e0f050db9c44b97a94723127e6be766ac5c340c48f2c4bb3ffa11713744be59"
4617
+dependencies = [
4618
+ "aliasable",
4619
+ "ouroboros_macro",
4620
+ "static_assertions",
4621
+]
4622
+
4623
+[[package]]
4624
+name = "ouroboros_macro"
4625
+version = "0.18.5"
4626
+source = "registry+https://github.com/rust-lang/crates.io-index"
4627
+checksum = "3c7028bdd3d43083f6d8d4d5187680d0d3560d54df4cc9d752005268b41e64d0"
4628
+dependencies = [
4629
+ "heck 0.4.1",
4630
+ "proc-macro2",
4631
+ "proc-macro2-diagnostics",
4632
+ "quote",
4633
+ "syn",
4634
+]
4635
+
4636
+[[package]]
4637
+name = "parking"
4638
+version = "2.2.1"
4639
+source = "registry+https://github.com/rust-lang/crates.io-index"
4640
+checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
4641
+
4642
+[[package]]
4643
+name = "parking_lot"
4644
+version = "0.12.5"
4645
+source = "registry+https://github.com/rust-lang/crates.io-index"
4646
+checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a"
4647
+dependencies = [
4648
+ "lock_api",
4649
+ "parking_lot_core",
4650
+]
4651
+
4652
+[[package]]
4653
+name = "parking_lot_core"
4654
+version = "0.9.12"
4655
+source = "registry+https://github.com/rust-lang/crates.io-index"
4656
+checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1"
4657
+dependencies = [
4658
+ "cfg-if",
4659
+ "libc",
4660
+ "redox_syscall",
4661
+ "smallvec",
4662
+ "windows-link 0.2.1",
4663
+]
4664
+
4665
+[[package]]
4666
+name = "paste"
4667
+version = "1.0.15"
4668
+source = "registry+https://github.com/rust-lang/crates.io-index"
4669
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
4670
+
4671
+[[package]]
4672
+name = "pastey"
4673
+version = "0.1.1"
4674
+source = "registry+https://github.com/rust-lang/crates.io-index"
4675
+checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec"
4676
+
4677
+[[package]]
4678
+name = "pathfinder_geometry"
4679
+version = "0.5.1"
4680
+source = "registry+https://github.com/rust-lang/crates.io-index"
4681
+checksum = "0b7b7e7b4ea703700ce73ebf128e1450eb69c3a8329199ffbfb9b2a0418e5ad3"
4682
+dependencies = [
4683
+ "log",
4684
+ "pathfinder_simd",
4685
+]
4686
+
4687
+[[package]]
4688
+name = "pathfinder_simd"
4689
+version = "0.5.6"
4690
+source = "registry+https://github.com/rust-lang/crates.io-index"
4691
+checksum = "4500030c302e4af1d423f36f3b958d1aecb6c04184356ed5a833bf6b60435777"
4692
+dependencies = [
4693
+ "rustc_version",
4694
+]
4695
+
4696
+[[package]]
4697
+name = "pbkdf2"
4698
+version = "0.12.2"
4699
+source = "registry+https://github.com/rust-lang/crates.io-index"
4700
+checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2"
4701
+dependencies = [
4702
+ "digest 0.10.7",
4703
+ "hmac 0.12.1",
4704
+]
4705
+
4706
+[[package]]
4707
+name = "pbkdf2"
4708
+version = "0.13.0"
4709
+source = "registry+https://github.com/rust-lang/crates.io-index"
4710
+checksum = "112d82ceb8c5bf524d9af484d4e4970c9fd5a0cc15ba14ad93dccd28873b0629"
4711
+dependencies = [
4712
+ "digest 0.11.3",
4713
+ "hmac 0.13.0",
4714
+]
4715
+
4716
+[[package]]
4717
+name = "pem-rfc7468"
4718
+version = "0.7.0"
4719
+source = "registry+https://github.com/rust-lang/crates.io-index"
4720
+checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412"
4721
+dependencies = [
4722
+ "base64ct",
4723
+]
4724
+
4725
+[[package]]
4726
+name = "percent-encoding"
4727
+version = "2.3.2"
4728
+source = "registry+https://github.com/rust-lang/crates.io-index"
4729
+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
4730
+
4731
+[[package]]
4732
+name = "perf"
4733
+version = "0.1.0"
4734
+source = "git+https://github.com/zed-industries/zed?rev=876ec5a8a074ba83cce2129ed4d76b59c05a37e9#876ec5a8a074ba83cce2129ed4d76b59c05a37e9"
4735
+dependencies = [
4736
+ "collections",
4737
+ "serde",
4738
+ "serde_json",
4739
+]
4740
+
4741
+[[package]]
4742
+name = "phf"
4743
+version = "0.13.1"
4744
+source = "registry+https://github.com/rust-lang/crates.io-index"
4745
+checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf"
4746
+dependencies = [
4747
+ "phf_macros",
4748
+ "phf_shared",
4749
+ "serde",
4750
+]
4751
+
4752
+[[package]]
4753
+name = "phf_generator"
4754
+version = "0.13.1"
4755
+source = "registry+https://github.com/rust-lang/crates.io-index"
4756
+checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737"
4757
+dependencies = [
4758
+ "fastrand 2.4.1",
4759
+ "phf_shared",
4760
+]
4761
+
4762
+[[package]]
4763
+name = "phf_macros"
4764
+version = "0.13.1"
4765
+source = "registry+https://github.com/rust-lang/crates.io-index"
4766
+checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef"
4767
+dependencies = [
4768
+ "phf_generator",
4769
+ "phf_shared",
4770
+ "proc-macro2",
4771
+ "quote",
4772
+ "syn",
4773
+]
4774
+
4775
+[[package]]
4776
+name = "phf_shared"
4777
+version = "0.13.1"
4778
+source = "registry+https://github.com/rust-lang/crates.io-index"
4779
+checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266"
4780
+dependencies = [
4781
+ "siphasher",
4782
+]
4783
+
4784
+[[package]]
4785
+name = "pico-args"
4786
+version = "0.5.0"
4787
+source = "registry+https://github.com/rust-lang/crates.io-index"
4788
+checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315"
4789
+
4790
+[[package]]
4791
+name = "pin-project"
4792
+version = "1.1.13"
4793
+source = "registry+https://github.com/rust-lang/crates.io-index"
4794
+checksum = "2466b2336ed02bcdca6b294417127b90ec92038d1d5c4fbeac971a922e0e0924"
4795
+dependencies = [
4796
+ "pin-project-internal",
4797
+]
4798
+
4799
+[[package]]
4800
+name = "pin-project-internal"
4801
+version = "1.1.13"
4802
+source = "registry+https://github.com/rust-lang/crates.io-index"
4803
+checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b"
4804
+dependencies = [
4805
+ "proc-macro2",
4806
+ "quote",
4807
+ "syn",
4808
+]
4809
+
4810
+[[package]]
4811
+name = "pin-project-lite"
4812
+version = "0.2.17"
4813
+source = "registry+https://github.com/rust-lang/crates.io-index"
4814
+checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
4815
+
4816
+[[package]]
4817
+name = "piper"
4818
+version = "0.2.5"
4819
+source = "registry+https://github.com/rust-lang/crates.io-index"
4820
+checksum = "c835479a4443ded371d6c535cbfd8d31ad92c5d23ae9770a61bc155e4992a3c1"
4821
+dependencies = [
4822
+ "atomic-waker",
4823
+ "fastrand 2.4.1",
4824
+ "futures-io",
4825
+]
4826
+
4827
+[[package]]
4828
+name = "pkcs1"
4829
+version = "0.7.5"
4830
+source = "registry+https://github.com/rust-lang/crates.io-index"
4831
+checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f"
4832
+dependencies = [
4833
+ "der",
4834
+ "pkcs8",
4835
+ "spki",
4836
+]
4837
+
4838
+[[package]]
4839
+name = "pkcs8"
4840
+version = "0.10.2"
4841
+source = "registry+https://github.com/rust-lang/crates.io-index"
4842
+checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
4843
+dependencies = [
4844
+ "der",
4845
+ "spki",
4846
+]
4847
+
4848
+[[package]]
4849
+name = "pkg-config"
4850
+version = "0.3.33"
4851
+source = "registry+https://github.com/rust-lang/crates.io-index"
4852
+checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e"
4853
+
4854
+[[package]]
4855
+name = "plain"
4856
+version = "0.2.3"
4857
+source = "registry+https://github.com/rust-lang/crates.io-index"
4858
+checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
4859
+
4860
+[[package]]
4861
+name = "plist"
4862
+version = "1.10.0"
4863
+source = "registry+https://github.com/rust-lang/crates.io-index"
4864
+checksum = "7da1d65da6dd5d1e44199ac0f58712d241c0f439f80adea8924d832384087f85"
4865
+dependencies = [
4866
+ "base64",
4867
+ "indexmap",
4868
+ "quick-xml 0.41.0",
4869
+ "serde",
4870
+ "time",
4871
+]
4872
+
4873
+[[package]]
4874
+name = "plist-macros"
4875
+version = "0.1.0"
4876
+dependencies = [
4877
+ "plist",
4878
+]
4879
+
4880
+[[package]]
4881
+name = "png"
4882
+version = "0.17.16"
4883
+source = "registry+https://github.com/rust-lang/crates.io-index"
4884
+checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526"
4885
+dependencies = [
4886
+ "bitflags 1.3.2",
4887
+ "crc32fast",
4888
+ "fdeflate",
4889
+ "flate2",
4890
+ "miniz_oxide",
4891
+]
4892
+
4893
+[[package]]
4894
+name = "png"
4895
+version = "0.18.1"
4896
+source = "registry+https://github.com/rust-lang/crates.io-index"
4897
+checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61"
4898
+dependencies = [
4899
+ "bitflags 2.13.0",
4900
+ "crc32fast",
4901
+ "fdeflate",
4902
+ "flate2",
4903
+ "miniz_oxide",
4904
+]
4905
+
4906
+[[package]]
4907
+name = "polling"
4908
+version = "3.11.0"
4909
+source = "registry+https://github.com/rust-lang/crates.io-index"
4910
+checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218"
4911
+dependencies = [
4912
+ "cfg-if",
4913
+ "concurrent-queue",
4914
+ "hermit-abi",
4915
+ "pin-project-lite",
4916
+ "rustix 1.1.4",
4917
+ "windows-sys 0.61.2",
4918
+]
4919
+
4920
+[[package]]
4921
+name = "pollster"
4922
+version = "0.2.5"
4923
+source = "registry+https://github.com/rust-lang/crates.io-index"
4924
+checksum = "5da3b0203fd7ee5720aa0b5e790b591aa5d3f41c3ed2c34a3a393382198af2f7"
4925
+
4926
+[[package]]
4927
+name = "pollster"
4928
+version = "0.4.0"
4929
+source = "registry+https://github.com/rust-lang/crates.io-index"
4930
+checksum = "2f3a9f18d041e6d0e102a0a46750538147e5e8992d3b4873aaafee2520b00ce3"
4931
+
4932
+[[package]]
4933
+name = "polyval"
4934
+version = "0.7.1"
4935
+source = "registry+https://github.com/rust-lang/crates.io-index"
4936
+checksum = "7dfc63250416fea14f5749b90725916a6c903f599d51cb635aa7a52bfd03eede"
4937
+dependencies = [
4938
+ "cpubits",
4939
+ "cpufeatures 0.3.0",
4940
+ "universal-hash",
4941
+]
4942
+
4943
+[[package]]
4944
+name = "portable-atomic"
4945
+version = "1.13.1"
4946
+source = "registry+https://github.com/rust-lang/crates.io-index"
4947
+checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
4948
+
4949
+[[package]]
4950
+name = "portable-atomic-util"
4951
+version = "0.2.7"
4952
+source = "registry+https://github.com/rust-lang/crates.io-index"
4953
+checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618"
4954
+dependencies = [
4955
+ "portable-atomic",
4956
+]
4957
+
4958
+[[package]]
4959
+name = "postage"
4960
+version = "0.5.0"
4961
+source = "registry+https://github.com/rust-lang/crates.io-index"
4962
+checksum = "af3fb618632874fb76937c2361a7f22afd393c982a2165595407edc75b06d3c1"
4963
+dependencies = [
4964
+ "atomic",
4965
+ "crossbeam-queue",
4966
+ "futures",
4967
+ "log",
4968
+ "parking_lot",
4969
+ "pin-project",
4970
+ "pollster 0.2.5",
4971
+ "static_assertions",
4972
+ "thiserror 1.0.69",
4973
+]
4974
+
4975
+[[package]]
4976
+name = "potential_utf"
4977
+version = "0.1.5"
4978
+source = "registry+https://github.com/rust-lang/crates.io-index"
4979
+checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564"
4980
+dependencies = [
4981
+ "zerovec",
4982
+]
4983
+
4984
+[[package]]
4985
+name = "powerfmt"
4986
+version = "0.2.0"
4987
+source = "registry+https://github.com/rust-lang/crates.io-index"
4988
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
4989
+
4990
+[[package]]
4991
+name = "ppv-lite86"
4992
+version = "0.2.21"
4993
+source = "registry+https://github.com/rust-lang/crates.io-index"
4994
+checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
4995
+dependencies = [
4996
+ "zerocopy",
4997
+]
4998
+
4999
+[[package]]
5000
+name = "presser"
5001
+version = "0.3.1"
5002
+source = "registry+https://github.com/rust-lang/crates.io-index"
5003
+checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa"
5004
+
5005
+[[package]]
5006
+name = "prettyplease"
5007
+version = "0.2.37"
5008
+source = "registry+https://github.com/rust-lang/crates.io-index"
5009
+checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
5010
+dependencies = [
5011
+ "proc-macro2",
5012
+ "syn",
5013
+]
5014
+
5015
+[[package]]
5016
+name = "proc-macro-crate"
5017
+version = "3.5.0"
5018
+source = "registry+https://github.com/rust-lang/crates.io-index"
5019
+checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f"
5020
+dependencies = [
5021
+ "toml_edit 0.25.12+spec-1.1.0",
5022
+]
5023
+
5024
+[[package]]
5025
+name = "proc-macro2"
5026
+version = "1.0.106"
5027
+source = "registry+https://github.com/rust-lang/crates.io-index"
5028
+checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
5029
+dependencies = [
5030
+ "unicode-ident",
5031
+]
5032
+
5033
+[[package]]
5034
+name = "proc-macro2-diagnostics"
5035
+version = "0.10.1"
5036
+source = "registry+https://github.com/rust-lang/crates.io-index"
5037
+checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
5038
+dependencies = [
5039
+ "proc-macro2",
5040
+ "quote",
5041
+ "syn",
5042
+ "version_check",
5043
+ "yansi",
5044
+]
5045
+
5046
+[[package]]
5047
+name = "profiling"
5048
+version = "1.0.18"
5049
+source = "registry+https://github.com/rust-lang/crates.io-index"
5050
+checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5"
5051
+dependencies = [
5052
+ "profiling-procmacros",
5053
+]
5054
+
5055
+[[package]]
5056
+name = "profiling-procmacros"
5057
+version = "1.0.18"
5058
+source = "registry+https://github.com/rust-lang/crates.io-index"
5059
+checksum = "4488a4a36b9a4ba6b9334a32a39971f77c1436ec82c38707bce707699cc3bbcb"
5060
+dependencies = [
5061
+ "quote",
5062
+ "syn",
5063
+]
5064
+
5065
+[[package]]
5066
+name = "psm"
5067
+version = "0.1.31"
5068
+source = "registry+https://github.com/rust-lang/crates.io-index"
5069
+checksum = "645dbe486e346d9b5de3ef16ede18c26e6c70ad97418f4874b8b1889d6e761ea"
5070
+dependencies = [
5071
+ "ar_archive_writer",
5072
+ "cc",
5073
+]
5074
+
5075
+[[package]]
5076
+name = "purple-builder"
5077
+version = "0.1.0"
5078
+dependencies = [
5079
+ "adi",
5080
+ "elf-loader",
5081
+ "env_logger",
5082
+]
5083
+
5084
+[[package]]
5085
+name = "pxfm"
5086
+version = "0.1.30"
5087
+source = "registry+https://github.com/rust-lang/crates.io-index"
5088
+checksum = "d55d956fa96f5ec02be2e13af0e20391a5aa83d6a074e3ad368959d0fab299ea"
5089
+
5090
+[[package]]
5091
+name = "qoi"
5092
+version = "0.4.1"
5093
+source = "registry+https://github.com/rust-lang/crates.io-index"
5094
+checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001"
5095
+dependencies = [
5096
+ "bytemuck",
5097
+]
5098
+
5099
+[[package]]
5100
+name = "quick-error"
5101
+version = "2.0.1"
5102
+source = "registry+https://github.com/rust-lang/crates.io-index"
5103
+checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
5104
+
5105
+[[package]]
5106
+name = "quick-xml"
5107
+version = "0.30.0"
5108
+source = "registry+https://github.com/rust-lang/crates.io-index"
5109
+checksum = "eff6510e86862b57b210fd8cbe8ed3f0d7d600b9c2863cd4549a2e033c66e956"
5110
+dependencies = [
5111
+ "memchr",
5112
+]
5113
+
5114
+[[package]]
5115
+name = "quick-xml"
5116
+version = "0.39.4"
5117
+source = "registry+https://github.com/rust-lang/crates.io-index"
5118
+checksum = "cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e"
5119
+dependencies = [
5120
+ "memchr",
5121
+ "serde",
5122
+]
5123
+
5124
+[[package]]
5125
+name = "quick-xml"
5126
+version = "0.41.0"
5127
+source = "registry+https://github.com/rust-lang/crates.io-index"
5128
+checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1"
5129
+dependencies = [
5130
+ "memchr",
5131
+]
5132
+
5133
+[[package]]
5134
+name = "quinn"
5135
+version = "0.11.11"
5136
+source = "registry+https://github.com/rust-lang/crates.io-index"
5137
+checksum = "0c1a41e437b6bbd489372cd4971de128e85c855f56c57f283d20ff016cf7c0a8"
5138
+dependencies = [
5139
+ "bytes",
5140
+ "cfg_aliases",
5141
+ "pin-project-lite",
5142
+ "quinn-proto",
5143
+ "quinn-udp",
5144
+ "rustc-hash 2.1.3",
5145
+ "rustls",
5146
+ "socket2",
5147
+ "thiserror 2.0.18",
5148
+ "tokio",
5149
+ "tracing",
5150
+ "web-time",
5151
+]
5152
+
5153
+[[package]]
5154
+name = "quinn-proto"
5155
+version = "0.11.16"
5156
+source = "registry+https://github.com/rust-lang/crates.io-index"
5157
+checksum = "2f4bfc015262b9df63c8845072ce59068853ff5872180c2ce2f13038b970e560"
5158
+dependencies = [
5159
+ "aws-lc-rs",
5160
+ "bytes",
5161
+ "getrandom 0.4.3",
5162
+ "lru-slab",
5163
+ "rand 0.10.2",
5164
+ "rand_pcg",
5165
+ "ring",
5166
+ "rustc-hash 2.1.3",
5167
+ "rustls",
5168
+ "rustls-pki-types",
5169
+ "slab",
5170
+ "thiserror 2.0.18",
5171
+ "tinyvec",
5172
+ "tracing",
5173
+ "web-time",
5174
+]
5175
+
5176
+[[package]]
5177
+name = "quinn-udp"
5178
+version = "0.5.15"
5179
+source = "registry+https://github.com/rust-lang/crates.io-index"
5180
+checksum = "35a133f956daabe89a61a685c2649f13d82d5aa4bd5d12d1277e1072a21c0694"
5181
+dependencies = [
5182
+ "cfg_aliases",
5183
+ "libc",
5184
+ "once_cell",
5185
+ "socket2",
5186
+ "tracing",
5187
+ "windows-sys 0.61.2",
5188
+]
5189
+
5190
+[[package]]
5191
+name = "quote"
5192
+version = "1.0.46"
5193
+source = "registry+https://github.com/rust-lang/crates.io-index"
5194
+checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368"
5195
+dependencies = [
5196
+ "proc-macro2",
5197
+]
5198
+
5199
+[[package]]
5200
+name = "r-efi"
5201
+version = "5.3.0"
5202
+source = "registry+https://github.com/rust-lang/crates.io-index"
5203
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
5204
+
5205
+[[package]]
5206
+name = "r-efi"
5207
+version = "6.0.0"
5208
+source = "registry+https://github.com/rust-lang/crates.io-index"
5209
+checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
5210
+
5211
+[[package]]
5212
+name = "rand"
5213
+version = "0.8.6"
5214
+source = "registry+https://github.com/rust-lang/crates.io-index"
5215
+checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a"
5216
+dependencies = [
5217
+ "libc",
5218
+ "rand_chacha 0.3.1",
5219
+ "rand_core 0.6.4",
5220
+]
5221
+
5222
+[[package]]
5223
+name = "rand"
5224
+version = "0.9.4"
5225
+source = "registry+https://github.com/rust-lang/crates.io-index"
5226
+checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea"
5227
+dependencies = [
5228
+ "rand_chacha 0.9.0",
5229
+ "rand_core 0.9.5",
5230
+]
5231
+
5232
+[[package]]
5233
+name = "rand"
5234
+version = "0.10.2"
5235
+source = "registry+https://github.com/rust-lang/crates.io-index"
5236
+checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80"
5237
+dependencies = [
5238
+ "chacha20",
5239
+ "getrandom 0.4.3",
5240
+ "rand_core 0.10.1",
5241
+]
5242
+
5243
+[[package]]
5244
+name = "rand_chacha"
5245
+version = "0.3.1"
5246
+source = "registry+https://github.com/rust-lang/crates.io-index"
5247
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
5248
+dependencies = [
5249
+ "ppv-lite86",
5250
+ "rand_core 0.6.4",
5251
+]
5252
+
5253
+[[package]]
5254
+name = "rand_chacha"
5255
+version = "0.9.0"
5256
+source = "registry+https://github.com/rust-lang/crates.io-index"
5257
+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
5258
+dependencies = [
5259
+ "ppv-lite86",
5260
+ "rand_core 0.9.5",
5261
+]
5262
+
5263
+[[package]]
5264
+name = "rand_core"
5265
+version = "0.6.4"
5266
+source = "registry+https://github.com/rust-lang/crates.io-index"
5267
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
5268
+dependencies = [
5269
+ "getrandom 0.2.17",
5270
+]
5271
+
5272
+[[package]]
5273
+name = "rand_core"
5274
+version = "0.9.5"
5275
+source = "registry+https://github.com/rust-lang/crates.io-index"
5276
+checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
5277
+dependencies = [
5278
+ "getrandom 0.3.4",
5279
+]
5280
+
5281
+[[package]]
5282
+name = "rand_core"
5283
+version = "0.10.1"
5284
+source = "registry+https://github.com/rust-lang/crates.io-index"
5285
+checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69"
5286
+
5287
+[[package]]
5288
+name = "rand_pcg"
5289
+version = "0.10.2"
5290
+source = "registry+https://github.com/rust-lang/crates.io-index"
5291
+checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a"
5292
+dependencies = [
5293
+ "rand_core 0.10.1",
5294
+]
5295
+
5296
+[[package]]
5297
+name = "range-alloc"
5298
+version = "0.1.5"
5299
+source = "registry+https://github.com/rust-lang/crates.io-index"
5300
+checksum = "ca45419789ae5a7899559e9512e58ca889e41f04f1f2445e9f4b290ceccd1d08"
5301
+
5302
+[[package]]
5303
+name = "rangemap"
5304
+version = "1.7.1"
5305
+source = "registry+https://github.com/rust-lang/crates.io-index"
5306
+checksum = "973443cf09a9c8656b574a866ab68dfa19f0867d0340648c7d2f6a71b8a8ea68"
5307
+
5308
+[[package]]
5309
+name = "rav1e"
5310
+version = "0.8.1"
5311
+source = "registry+https://github.com/rust-lang/crates.io-index"
5312
+checksum = "43b6dd56e85d9483277cde964fd1bdb0428de4fec5ebba7540995639a21cb32b"
5313
+dependencies = [
5314
+ "aligned-vec",
5315
+ "arbitrary",
5316
+ "arg_enum_proc_macro",
5317
+ "arrayvec",
5318
+ "av-scenechange",
5319
+ "av1-grain",
5320
+ "bitstream-io",
5321
+ "built",
5322
+ "cfg-if",
5323
+ "interpolate_name",
5324
+ "itertools 0.14.0",
5325
+ "libc",
5326
+ "libfuzzer-sys",
5327
+ "log",
5328
+ "maybe-rayon",
5329
+ "new_debug_unreachable",
5330
+ "noop_proc_macro",
5331
+ "num-derive",
5332
+ "num-traits",
5333
+ "paste",
5334
+ "profiling",
5335
+ "rand 0.9.4",
5336
+ "rand_chacha 0.9.0",
5337
+ "simd_helpers",
5338
+ "thiserror 2.0.18",
5339
+ "v_frame",
5340
+ "wasm-bindgen",
5341
+]
5342
+
5343
+[[package]]
5344
+name = "ravif"
5345
+version = "0.13.0"
5346
+source = "registry+https://github.com/rust-lang/crates.io-index"
5347
+checksum = "e52310197d971b0f5be7fe6b57530dcd27beb35c1b013f29d66c1ad73fbbcc45"
5348
+dependencies = [
5349
+ "avif-serialize",
5350
+ "imgref",
5351
+ "loop9",
5352
+ "quick-error",
5353
+ "rav1e",
5354
+ "rayon",
5355
+ "rgb",
5356
+]
5357
+
5358
+[[package]]
5359
+name = "raw-window-handle"
5360
+version = "0.6.2"
5361
+source = "registry+https://github.com/rust-lang/crates.io-index"
5362
+checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539"
5363
+
5364
+[[package]]
5365
+name = "raw-window-metal"
5366
+version = "1.1.0"
5367
+source = "registry+https://github.com/rust-lang/crates.io-index"
5368
+checksum = "40d213455a5f1dc59214213c7330e074ddf8114c9a42411eb890c767357ce135"
5369
+dependencies = [
5370
+ "objc2 0.6.4",
5371
+ "objc2-core-foundation",
5372
+ "objc2-foundation 0.3.2",
5373
+ "objc2-quartz-core 0.3.2",
5374
+]
5375
+
5376
+[[package]]
5377
+name = "rayon"
5378
+version = "1.12.0"
5379
+source = "registry+https://github.com/rust-lang/crates.io-index"
5380
+checksum = "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d"
5381
+dependencies = [
5382
+ "either",
5383
+ "rayon-core",
5384
+]
5385
+
5386
+[[package]]
5387
+name = "rayon-core"
5388
+version = "1.13.0"
5389
+source = "registry+https://github.com/rust-lang/crates.io-index"
5390
+checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
5391
+dependencies = [
5392
+ "crossbeam-deque",
5393
+ "crossbeam-utils",
5394
+]
5395
+
5396
+[[package]]
5397
+name = "read-fonts"
5398
+version = "0.37.0"
5399
+source = "registry+https://github.com/rust-lang/crates.io-index"
5400
+checksum = "7b634fabf032fab15307ffd272149b622260f55974d9fad689292a5d33df02e5"
5401
+dependencies = [
5402
+ "bytemuck",
5403
+ "core_maths",
5404
+ "font-types",
5405
+]
5406
+
5407
+[[package]]
5408
+name = "read-fonts"
5409
+version = "0.39.2"
5410
+source = "registry+https://github.com/rust-lang/crates.io-index"
5411
+checksum = "c4ed38b89c2c77ff968c524145ad65fb010f38af5c7a224b53b81d47ac2daa81"
5412
+dependencies = [
5413
+ "bytemuck",
5414
+ "font-types",
5415
+]
5416
+
5417
+[[package]]
5418
+name = "redox_syscall"
5419
+version = "0.5.18"
5420
+source = "registry+https://github.com/rust-lang/crates.io-index"
5421
+checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
5422
+dependencies = [
5423
+ "bitflags 2.13.0",
5424
+]
5425
+
5426
+[[package]]
5427
+name = "redox_users"
5428
+version = "0.5.2"
5429
+source = "registry+https://github.com/rust-lang/crates.io-index"
5430
+checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac"
5431
+dependencies = [
5432
+ "getrandom 0.2.17",
5433
+ "libredox",
5434
+ "thiserror 2.0.18",
5435
+]
5436
+
5437
+[[package]]
5438
+name = "ref-cast"
5439
+version = "1.0.25"
5440
+source = "registry+https://github.com/rust-lang/crates.io-index"
5441
+checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d"
5442
+dependencies = [
5443
+ "ref-cast-impl",
5444
+]
5445
+
5446
+[[package]]
5447
+name = "ref-cast-impl"
5448
+version = "1.0.25"
5449
+source = "registry+https://github.com/rust-lang/crates.io-index"
5450
+checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da"
5451
+dependencies = [
5452
+ "proc-macro2",
5453
+ "quote",
5454
+ "syn",
5455
+]
5456
+
5457
+[[package]]
5458
+name = "refineable"
5459
+version = "0.1.0"
5460
+source = "git+https://github.com/zed-industries/zed?rev=876ec5a8a074ba83cce2129ed4d76b59c05a37e9#876ec5a8a074ba83cce2129ed4d76b59c05a37e9"
5461
+dependencies = [
5462
+ "derive_refineable",
5463
+]
5464
+
5465
+[[package]]
5466
+name = "regex"
5467
+version = "1.12.4"
5468
+source = "registry+https://github.com/rust-lang/crates.io-index"
5469
+checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba"
5470
+dependencies = [
5471
+ "aho-corasick",
5472
+ "memchr",
5473
+ "regex-automata",
5474
+ "regex-syntax",
5475
+]
5476
+
5477
+[[package]]
5478
+name = "regex-automata"
5479
+version = "0.4.14"
5480
+source = "registry+https://github.com/rust-lang/crates.io-index"
5481
+checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
5482
+dependencies = [
5483
+ "aho-corasick",
5484
+ "memchr",
5485
+ "regex-syntax",
5486
+]
5487
+
5488
+[[package]]
5489
+name = "regex-syntax"
5490
+version = "0.8.11"
5491
+source = "registry+https://github.com/rust-lang/crates.io-index"
5492
+checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
5493
+
5494
+[[package]]
5495
+name = "region"
5496
+version = "3.0.2"
5497
+source = "registry+https://github.com/rust-lang/crates.io-index"
5498
+checksum = "e6b6ebd13bc009aef9cd476c1310d49ac354d36e240cf1bd753290f3dc7199a7"
5499
+dependencies = [
5500
+ "bitflags 1.3.2",
5501
+ "libc",
5502
+ "mach2 0.4.3",
5503
+ "windows-sys 0.52.0",
5504
+]
5505
+
5506
+[[package]]
5507
+name = "renderdoc-sys"
5508
+version = "1.1.0"
5509
+source = "registry+https://github.com/rust-lang/crates.io-index"
5510
+checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832"
5511
+
5512
+[[package]]
5513
+name = "reqwest"
5514
+version = "0.13.4"
5515
+source = "registry+https://github.com/rust-lang/crates.io-index"
5516
+checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3"
5517
+dependencies = [
5518
+ "base64",
5519
+ "bytes",
5520
+ "encoding_rs",
5521
+ "futures-core",
5522
+ "h2",
5523
+ "http",
5524
+ "http-body",
5525
+ "http-body-util",
5526
+ "hyper",
5527
+ "hyper-rustls",
5528
+ "hyper-util",
5529
+ "js-sys",
5530
+ "log",
5531
+ "mime",
5532
+ "percent-encoding",
5533
+ "pin-project-lite",
5534
+ "quinn",
5535
+ "rustls",
5536
+ "rustls-pki-types",
5537
+ "rustls-platform-verifier",
5538
+ "serde",
5539
+ "serde_urlencoded",
5540
+ "sync_wrapper",
5541
+ "tokio",
5542
+ "tokio-rustls",
5543
+ "tower",
5544
+ "tower-http",
5545
+ "tower-service",
5546
+ "url",
5547
+ "wasm-bindgen",
5548
+ "wasm-bindgen-futures",
5549
+ "web-sys",
5550
+]
5551
+
5552
+[[package]]
5553
+name = "resvg"
5554
+version = "0.45.1"
5555
+source = "registry+https://github.com/rust-lang/crates.io-index"
5556
+checksum = "a8928798c0a55e03c9ca6c4c6846f76377427d2c1e1f7e6de3c06ae57942df43"
5557
+dependencies = [
5558
+ "gif 0.13.3",
5559
+ "image-webp",
5560
+ "log",
5561
+ "pico-args",
5562
+ "rgb",
5563
+ "svgtypes",
5564
+ "tiny-skia",
5565
+ "usvg",
5566
+ "zune-jpeg 0.4.21",
5567
+]
5568
+
5569
+[[package]]
5570
+name = "rgb"
5571
+version = "0.8.53"
5572
+source = "registry+https://github.com/rust-lang/crates.io-index"
5573
+checksum = "47b34b781b31e5d73e9fbc8689c70551fd1ade9a19e3e28cfec8580a79290cc4"
5574
+dependencies = [
5575
+ "bytemuck",
5576
+]
5577
+
5578
+[[package]]
5579
+name = "ring"
5580
+version = "0.17.14"
5581
+source = "registry+https://github.com/rust-lang/crates.io-index"
5582
+checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
5583
+dependencies = [
5584
+ "cc",
5585
+ "cfg-if",
5586
+ "getrandom 0.2.17",
5587
+ "libc",
5588
+ "untrusted",
5589
+ "windows-sys 0.52.0",
5590
+]
5591
+
5592
+[[package]]
5593
+name = "roxmltree"
5594
+version = "0.20.0"
5595
+source = "registry+https://github.com/rust-lang/crates.io-index"
5596
+checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97"
5597
+
5598
+[[package]]
5599
+name = "rsa"
5600
+version = "0.9.10"
5601
+source = "registry+https://github.com/rust-lang/crates.io-index"
5602
+checksum = "b8573f03f5883dcaebdfcf4725caa1ecb9c15b2ef50c43a07b816e06799bb12d"
5603
+dependencies = [
5604
+ "const-oid 0.9.6",
5605
+ "digest 0.10.7",
5606
+ "num-bigint-dig 0.8.6",
5607
+ "num-integer",
5608
+ "num-traits",
5609
+ "pkcs1",
5610
+ "pkcs8",
5611
+ "rand_core 0.6.4",
5612
+ "sha2 0.10.9",
5613
+ "signature",
5614
+ "spki",
5615
+ "subtle",
5616
+ "zeroize",
5617
+]
5618
+
5619
+[[package]]
5620
+name = "rust-embed"
5621
+version = "8.11.0"
5622
+source = "registry+https://github.com/rust-lang/crates.io-index"
5623
+checksum = "04113cb9355a377d83f06ef1f0a45b8ab8cd7d8b1288160717d66df5c7988d27"
5624
+dependencies = [
5625
+ "rust-embed-impl",
5626
+ "rust-embed-utils",
5627
+ "walkdir",
5628
+]
5629
+
5630
+[[package]]
5631
+name = "rust-embed-impl"
5632
+version = "8.11.0"
5633
+source = "registry+https://github.com/rust-lang/crates.io-index"
5634
+checksum = "da0902e4c7c8e997159ab384e6d0fc91c221375f6894346ae107f47dd0f3ccaa"
5635
+dependencies = [
5636
+ "proc-macro2",
5637
+ "quote",
5638
+ "rust-embed-utils",
5639
+ "syn",
5640
+ "walkdir",
5641
+]
5642
+
5643
+[[package]]
5644
+name = "rust-embed-utils"
5645
+version = "8.11.0"
5646
+source = "registry+https://github.com/rust-lang/crates.io-index"
5647
+checksum = "5bcdef0be6fe7f6fa333b1073c949729274b05f123a0ad7efcb8efd878e5c3b1"
5648
+dependencies = [
5649
+ "globset",
5650
+ "sha2 0.10.9",
5651
+ "walkdir",
5652
+]
5653
+
5654
+[[package]]
5655
+name = "rustc-demangle"
5656
+version = "0.1.27"
5657
+source = "registry+https://github.com/rust-lang/crates.io-index"
5658
+checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d"
5659
+
5660
+[[package]]
5661
+name = "rustc-hash"
5662
+version = "1.1.0"
5663
+source = "registry+https://github.com/rust-lang/crates.io-index"
5664
+checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
5665
+
5666
+[[package]]
5667
+name = "rustc-hash"
5668
+version = "2.1.3"
5669
+source = "registry+https://github.com/rust-lang/crates.io-index"
5670
+checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d"
5671
+
5672
+[[package]]
5673
+name = "rustc_version"
5674
+version = "0.4.1"
5675
+source = "registry+https://github.com/rust-lang/crates.io-index"
5676
+checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
5677
+dependencies = [
5678
+ "semver",
5679
+]
5680
+
5681
+[[package]]
5682
+name = "rustix"
5683
+version = "0.38.44"
5684
+source = "registry+https://github.com/rust-lang/crates.io-index"
5685
+checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
5686
+dependencies = [
5687
+ "bitflags 2.13.0",
5688
+ "errno",
5689
+ "libc",
5690
+ "linux-raw-sys 0.4.15",
5691
+ "windows-sys 0.59.0",
5692
+]
5693
+
5694
+[[package]]
5695
+name = "rustix"
5696
+version = "1.1.4"
5697
+source = "registry+https://github.com/rust-lang/crates.io-index"
5698
+checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
5699
+dependencies = [
5700
+ "bitflags 2.13.0",
5701
+ "errno",
5702
+ "libc",
5703
+ "linux-raw-sys 0.12.1",
5704
+ "windows-sys 0.61.2",
5705
+]
5706
+
5707
+[[package]]
5708
+name = "rustls"
5709
+version = "0.23.41"
5710
+source = "registry+https://github.com/rust-lang/crates.io-index"
5711
+checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f"
5712
+dependencies = [
5713
+ "aws-lc-rs",
5714
+ "once_cell",
5715
+ "rustls-pki-types",
5716
+ "rustls-webpki",
5717
+ "subtle",
5718
+ "zeroize",
5719
+]
5720
+
5721
+[[package]]
5722
+name = "rustls-native-certs"
5723
+version = "0.8.4"
5724
+source = "registry+https://github.com/rust-lang/crates.io-index"
5725
+checksum = "dab5152771c58876a2146916e53e35057e1a4dfa2b9df0f0305b07f611fdea4d"
5726
+dependencies = [
5727
+ "openssl-probe",
5728
+ "rustls-pki-types",
5729
+ "schannel",
5730
+ "security-framework",
5731
+]
5732
+
5733
+[[package]]
5734
+name = "rustls-pki-types"
5735
+version = "1.15.0"
5736
+source = "registry+https://github.com/rust-lang/crates.io-index"
5737
+checksum = "764899a24af3980067ee14bc143654f297b22eaebfe3c7b6b211920a5a59b046"
5738
+dependencies = [
5739
+ "web-time",
5740
+ "zeroize",
5741
+]
5742
+
5743
+[[package]]
5744
+name = "rustls-platform-verifier"
5745
+version = "0.7.0"
5746
+source = "registry+https://github.com/rust-lang/crates.io-index"
5747
+checksum = "26d1e2536ce4f35f4846aa13bff16bd0ff40157cdb14cc056c7b14ba41233ba0"
5748
+dependencies = [
5749
+ "core-foundation 0.10.0",
5750
+ "core-foundation-sys",
5751
+ "jni",
5752
+ "log",
5753
+ "once_cell",
5754
+ "rustls",
5755
+ "rustls-native-certs",
5756
+ "rustls-platform-verifier-android",
5757
+ "rustls-webpki",
5758
+ "security-framework",
5759
+ "security-framework-sys",
5760
+ "webpki-root-certs",
5761
+ "windows-sys 0.61.2",
5762
+]
5763
+
5764
+[[package]]
5765
+name = "rustls-platform-verifier-android"
5766
+version = "0.1.1"
5767
+source = "registry+https://github.com/rust-lang/crates.io-index"
5768
+checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f"
5769
+
5770
+[[package]]
5771
+name = "rustls-webpki"
5772
+version = "0.103.13"
5773
+source = "registry+https://github.com/rust-lang/crates.io-index"
5774
+checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e"
5775
+dependencies = [
5776
+ "aws-lc-rs",
5777
+ "ring",
5778
+ "rustls-pki-types",
5779
+ "untrusted",
5780
+]
5781
+
5782
+[[package]]
5783
+name = "rustversion"
5784
+version = "1.0.22"
5785
+source = "registry+https://github.com/rust-lang/crates.io-index"
5786
+checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
5787
+
5788
+[[package]]
5789
+name = "rustybuzz"
5790
+version = "0.20.1"
5791
+source = "registry+https://github.com/rust-lang/crates.io-index"
5792
+checksum = "fd3c7c96f8a08ee34eff8857b11b49b07d71d1c3f4e88f8a88d4c9e9f90b1702"
5793
+dependencies = [
5794
+ "bitflags 2.13.0",
5795
+ "bytemuck",
5796
+ "core_maths",
5797
+ "log",
5798
+ "smallvec",
5799
+ "ttf-parser",
5800
+ "unicode-bidi-mirroring",
5801
+ "unicode-ccc",
5802
+ "unicode-properties",
5803
+ "unicode-script",
5804
+]
5805
+
5806
+[[package]]
5807
+name = "ryu"
5808
+version = "1.0.23"
5809
+source = "registry+https://github.com/rust-lang/crates.io-index"
5810
+checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f"
5811
+
5812
+[[package]]
5813
+name = "same-file"
5814
+version = "1.0.6"
5815
+source = "registry+https://github.com/rust-lang/crates.io-index"
5816
+checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
5817
+dependencies = [
5818
+ "winapi-util",
5819
+]
5820
+
5821
+[[package]]
5822
+name = "schannel"
5823
+version = "0.1.29"
5824
+source = "registry+https://github.com/rust-lang/crates.io-index"
5825
+checksum = "91c1b7e4904c873ef0710c1f407dde2e6287de2bebc1bbbf7d430bb7cbffd939"
5826
+dependencies = [
5827
+ "windows-sys 0.61.2",
5828
+]
5829
+
5830
+[[package]]
5831
+name = "scheduler"
5832
+version = "0.1.0"
5833
+source = "git+https://github.com/zed-industries/zed?rev=876ec5a8a074ba83cce2129ed4d76b59c05a37e9#876ec5a8a074ba83cce2129ed4d76b59c05a37e9"
5834
+dependencies = [
5835
+ "async-task",
5836
+ "backtrace",
5837
+ "chrono",
5838
+ "flume",
5839
+ "futures",
5840
+ "parking_lot",
5841
+ "rand 0.9.4",
5842
+ "web-time",
5843
+]
5844
+
5845
+[[package]]
5846
+name = "schemars"
5847
+version = "1.2.1"
5848
+source = "registry+https://github.com/rust-lang/crates.io-index"
5849
+checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc"
5850
+dependencies = [
5851
+ "dyn-clone",
5852
+ "indexmap",
5853
+ "ref-cast",
5854
+ "schemars_derive",
5855
+ "serde",
5856
+ "serde_json",
5857
+]
5858
+
5859
+[[package]]
5860
+name = "schemars_derive"
5861
+version = "1.2.1"
5862
+source = "registry+https://github.com/rust-lang/crates.io-index"
5863
+checksum = "7d115b50f4aaeea07e79c1912f645c7513d81715d0420f8bc77a18c6260b307f"
5864
+dependencies = [
5865
+ "proc-macro2",
5866
+ "quote",
5867
+ "serde_derive_internals",
5868
+ "syn",
5869
+]
5870
+
5871
+[[package]]
5872
+name = "scoped-tls"
5873
+version = "1.0.1"
5874
+source = "registry+https://github.com/rust-lang/crates.io-index"
5875
+checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
5876
+
5877
+[[package]]
5878
+name = "scopeguard"
5879
+version = "1.2.0"
5880
+source = "registry+https://github.com/rust-lang/crates.io-index"
5881
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
5882
+
5883
+[[package]]
5884
+name = "screencapturekit"
5885
+version = "0.2.8"
5886
+source = "registry+https://github.com/rust-lang/crates.io-index"
5887
+checksum = "1a5eeeb57ac94960cfe5ff4c402be6585ae4c8d29a2cf41b276048c2e849d64e"
5888
+dependencies = [
5889
+ "screencapturekit-sys",
5890
+]
5891
+
5892
+[[package]]
5893
+name = "screencapturekit-sys"
5894
+version = "0.2.8"
5895
+source = "registry+https://github.com/rust-lang/crates.io-index"
5896
+checksum = "22411b57f7d49e7fe08025198813ee6fd65e1ee5eff4ebc7880c12c82bde4c60"
5897
+dependencies = [
5898
+ "block",
5899
+ "dispatch",
5900
+ "objc",
5901
+ "objc-foundation",
5902
+ "objc_id",
5903
+ "once_cell",
5904
+]
5905
+
5906
+[[package]]
5907
+name = "scroll"
5908
+version = "0.13.0"
5909
+source = "registry+https://github.com/rust-lang/crates.io-index"
5910
+checksum = "c1257cd4248b4132760d6524d6dda4e053bc648c9070b960929bf50cfb1e7add"
5911
+dependencies = [
5912
+ "scroll_derive",
5913
+]
5914
+
5915
+[[package]]
5916
+name = "scroll_derive"
5917
+version = "0.13.1"
5918
+source = "registry+https://github.com/rust-lang/crates.io-index"
5919
+checksum = "ed76efe62313ab6610570951494bdaa81568026e0318eaa55f167de70eeea67d"
5920
+dependencies = [
5921
+ "proc-macro2",
5922
+ "quote",
5923
+ "syn",
5924
+]
5925
+
5926
+[[package]]
5927
+name = "seahash"
5928
+version = "4.1.0"
5929
+source = "registry+https://github.com/rust-lang/crates.io-index"
5930
+checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b"
5931
+
5932
+[[package]]
5933
+name = "security-framework"
5934
+version = "3.7.0"
5935
+source = "registry+https://github.com/rust-lang/crates.io-index"
5936
+checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d"
5937
+dependencies = [
5938
+ "bitflags 2.13.0",
5939
+ "core-foundation 0.10.0",
5940
+ "core-foundation-sys",
5941
+ "libc",
5942
+ "security-framework-sys",
5943
+]
5944
+
5945
+[[package]]
5946
+name = "security-framework-sys"
5947
+version = "2.17.0"
5948
+source = "registry+https://github.com/rust-lang/crates.io-index"
5949
+checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3"
5950
+dependencies = [
5951
+ "core-foundation-sys",
5952
+ "libc",
5953
+]
5954
+
5955
+[[package]]
5956
+name = "self_cell"
5957
+version = "1.2.2"
5958
+source = "registry+https://github.com/rust-lang/crates.io-index"
5959
+checksum = "b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89"
5960
+
5961
+[[package]]
5962
+name = "semver"
5963
+version = "1.0.22"
5964
+source = "registry+https://github.com/rust-lang/crates.io-index"
5965
+checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
5966
+dependencies = [
5967
+ "serde",
5968
+]
5969
+
5970
+[[package]]
5971
+name = "serde"
5972
+version = "1.0.228"
5973
+source = "registry+https://github.com/rust-lang/crates.io-index"
5974
+checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
5975
+dependencies = [
5976
+ "serde_core",
5977
+ "serde_derive",
5978
+]
5979
+
5980
+[[package]]
5981
+name = "serde_bytes"
5982
+version = "0.11.19"
5983
+source = "registry+https://github.com/rust-lang/crates.io-index"
5984
+checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8"
5985
+dependencies = [
5986
+ "serde",
5987
+ "serde_core",
5988
+]
5989
+
5990
+[[package]]
5991
+name = "serde_core"
5992
+version = "1.0.228"
5993
+source = "registry+https://github.com/rust-lang/crates.io-index"
5994
+checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
5995
+dependencies = [
5996
+ "serde_derive",
5997
+]
5998
+
5999
+[[package]]
6000
+name = "serde_derive"
6001
+version = "1.0.228"
6002
+source = "registry+https://github.com/rust-lang/crates.io-index"
6003
+checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
6004
+dependencies = [
6005
+ "proc-macro2",
6006
+ "quote",
6007
+ "syn",
6008
+]
6009
+
6010
+[[package]]
6011
+name = "serde_derive_internals"
6012
+version = "0.29.1"
6013
+source = "registry+https://github.com/rust-lang/crates.io-index"
6014
+checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711"
6015
+dependencies = [
6016
+ "proc-macro2",
6017
+ "quote",
6018
+ "syn",
6019
+]
6020
+
6021
+[[package]]
6022
+name = "serde_fmt"
6023
+version = "1.1.0"
6024
+source = "registry+https://github.com/rust-lang/crates.io-index"
6025
+checksum = "6e497af288b3b95d067a23a4f749f2861121ffcb2f6d8379310dcda040c345ed"
6026
+dependencies = [
6027
+ "serde_core",
6028
+]
6029
+
6030
+[[package]]
6031
+name = "serde_json"
6032
+version = "1.0.150"
6033
+source = "registry+https://github.com/rust-lang/crates.io-index"
6034
+checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
6035
+dependencies = [
6036
+ "indexmap",
6037
+ "itoa",
6038
+ "memchr",
6039
+ "serde",
6040
+ "serde_core",
6041
+ "zmij",
6042
+]
6043
+
6044
+[[package]]
6045
+name = "serde_json_lenient"
6046
+version = "0.2.4"
6047
+source = "registry+https://github.com/rust-lang/crates.io-index"
6048
+checksum = "0e033097bf0d2b59a62b42c18ebbb797503839b26afdda2c4e1415cb6c813540"
6049
+dependencies = [
6050
+ "indexmap",
6051
+ "itoa",
6052
+ "memchr",
6053
+ "ryu",
6054
+ "serde",
6055
+]
6056
+
6057
+[[package]]
6058
+name = "serde_repr"
6059
+version = "0.1.20"
6060
+source = "registry+https://github.com/rust-lang/crates.io-index"
6061
+checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c"
6062
+dependencies = [
6063
+ "proc-macro2",
6064
+ "quote",
6065
+ "syn",
6066
+]
6067
+
6068
+[[package]]
6069
+name = "serde_spanned"
6070
+version = "0.6.9"
6071
+source = "registry+https://github.com/rust-lang/crates.io-index"
6072
+checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3"
6073
+dependencies = [
6074
+ "serde",
6075
+]
6076
+
6077
+[[package]]
6078
+name = "serde_spanned"
6079
+version = "1.1.1"
6080
+source = "registry+https://github.com/rust-lang/crates.io-index"
6081
+checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26"
6082
+dependencies = [
6083
+ "serde_core",
6084
+]
6085
+
6086
+[[package]]
6087
+name = "serde_urlencoded"
6088
+version = "0.7.1"
6089
+source = "registry+https://github.com/rust-lang/crates.io-index"
6090
+checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
6091
+dependencies = [
6092
+ "form_urlencoded",
6093
+ "itoa",
6094
+ "ryu",
6095
+ "serde",
6096
+]
6097
+
6098
+[[package]]
6099
+name = "serdect"
6100
+version = "0.4.3"
6101
+source = "registry+https://github.com/rust-lang/crates.io-index"
6102
+checksum = "66cf8fedced2fcf12406bcb34223dffb92eaf34908ede12fed414c82b7f00b3e"
6103
+dependencies = [
6104
+ "base16ct",
6105
+ "serde",
6106
+]
6107
+
6108
+[[package]]
6109
+name = "sha1"
6110
+version = "0.10.6"
6111
+source = "registry+https://github.com/rust-lang/crates.io-index"
6112
+checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
6113
+dependencies = [
6114
+ "cfg-if",
6115
+ "cpufeatures 0.2.17",
6116
+ "digest 0.10.7",
6117
+]
6118
+
6119
+[[package]]
6120
+name = "sha1"
6121
+version = "0.11.0"
6122
+source = "registry+https://github.com/rust-lang/crates.io-index"
6123
+checksum = "aacc4cc499359472b4abe1bf11d0b12e688af9a805fa5e3016f9a386dc2d0214"
6124
+dependencies = [
6125
+ "cfg-if",
6126
+ "cpufeatures 0.3.0",
6127
+ "digest 0.11.3",
6128
+]
6129
+
6130
+[[package]]
6131
+name = "sha1_smol"
6132
+version = "1.0.1"
6133
+source = "registry+https://github.com/rust-lang/crates.io-index"
6134
+checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d"
6135
+
6136
+[[package]]
6137
+name = "sha2"
6138
+version = "0.10.9"
6139
+source = "registry+https://github.com/rust-lang/crates.io-index"
6140
+checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
6141
+dependencies = [
6142
+ "cfg-if",
6143
+ "cpufeatures 0.2.17",
6144
+ "digest 0.10.7",
6145
+]
6146
+
6147
+[[package]]
6148
+name = "sha2"
6149
+version = "0.11.0"
6150
+source = "registry+https://github.com/rust-lang/crates.io-index"
6151
+checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4"
6152
+dependencies = [
6153
+ "cfg-if",
6154
+ "cpufeatures 0.3.0",
6155
+ "digest 0.11.3",
6156
+]
6157
+
6158
+[[package]]
6159
+name = "sha3"
6160
+version = "0.10.9"
6161
+source = "registry+https://github.com/rust-lang/crates.io-index"
6162
+checksum = "77fd7028345d415a4034cf8777cd4f8ab1851274233b45f84e3d955502d93874"
6163
+dependencies = [
6164
+ "digest 0.10.7",
6165
+ "keccak",
6166
+]
6167
+
6168
+[[package]]
6169
+name = "sharded-slab"
6170
+version = "0.1.7"
6171
+source = "registry+https://github.com/rust-lang/crates.io-index"
6172
+checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
6173
+dependencies = [
6174
+ "lazy_static",
6175
+]
6176
+
6177
+[[package]]
6178
+name = "shlex"
6179
+version = "1.3.0"
6180
+source = "registry+https://github.com/rust-lang/crates.io-index"
6181
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
6182
+
6183
+[[package]]
6184
+name = "shlex"
6185
+version = "2.0.1"
6186
+source = "registry+https://github.com/rust-lang/crates.io-index"
6187
+checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
6188
+
6189
+[[package]]
6190
+name = "signal-hook-registry"
6191
+version = "1.4.8"
6192
+source = "registry+https://github.com/rust-lang/crates.io-index"
6193
+checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b"
6194
+dependencies = [
6195
+ "errno",
6196
+ "libc",
6197
+]
6198
+
6199
+[[package]]
6200
+name = "signature"
6201
+version = "2.2.0"
6202
+source = "registry+https://github.com/rust-lang/crates.io-index"
6203
+checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
6204
+dependencies = [
6205
+ "digest 0.10.7",
6206
+ "rand_core 0.6.4",
6207
+]
6208
+
6209
+[[package]]
6210
+name = "simd-adler32"
6211
+version = "0.3.9"
6212
+source = "registry+https://github.com/rust-lang/crates.io-index"
6213
+checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214"
6214
+
6215
+[[package]]
6216
+name = "simd_cesu8"
6217
+version = "1.1.1"
6218
+source = "registry+https://github.com/rust-lang/crates.io-index"
6219
+checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33"
6220
+dependencies = [
6221
+ "rustc_version",
6222
+ "simdutf8",
6223
+]
6224
+
6225
+[[package]]
6226
+name = "simd_helpers"
6227
+version = "0.1.0"
6228
+source = "registry+https://github.com/rust-lang/crates.io-index"
6229
+checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6"
6230
+dependencies = [
6231
+ "quote",
6232
+]
6233
+
6234
+[[package]]
6235
+name = "simdutf8"
6236
+version = "0.1.5"
6237
+source = "registry+https://github.com/rust-lang/crates.io-index"
6238
+checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e"
6239
+
6240
+[[package]]
6241
+name = "simplecss"
6242
+version = "0.2.2"
6243
+source = "registry+https://github.com/rust-lang/crates.io-index"
6244
+checksum = "7a9c6883ca9c3c7c90e888de77b7a5c849c779d25d74a1269b0218b14e8b136c"
6245
+dependencies = [
6246
+ "log",
6247
+]
6248
+
6249
+[[package]]
6250
+name = "siphasher"
6251
+version = "1.0.3"
6252
+source = "registry+https://github.com/rust-lang/crates.io-index"
6253
+checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649"
6254
+
6255
+[[package]]
6256
+name = "skrifa"
6257
+version = "0.40.0"
6258
+source = "registry+https://github.com/rust-lang/crates.io-index"
6259
+checksum = "7fbdfe3d2475fbd7ddd1f3e5cf8288a30eb3e5f95832829570cd88115a7434ac"
6260
+dependencies = [
6261
+ "bytemuck",
6262
+ "read-fonts 0.37.0",
6263
+]
6264
+
6265
+[[package]]
6266
+name = "skrifa"
6267
+version = "0.42.1"
6268
+source = "registry+https://github.com/rust-lang/crates.io-index"
6269
+checksum = "0c34617370ae968efb7161bb2beb517d9084659aae19e24b89e3db25b46e4564"
6270
+dependencies = [
6271
+ "bytemuck",
6272
+ "read-fonts 0.39.2",
6273
+]
6274
+
6275
+[[package]]
6276
+name = "slab"
6277
+version = "0.4.12"
6278
+source = "registry+https://github.com/rust-lang/crates.io-index"
6279
+checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
6280
+
6281
+[[package]]
6282
+name = "slotmap"
6283
+version = "1.1.1"
6284
+source = "registry+https://github.com/rust-lang/crates.io-index"
6285
+checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038"
6286
+dependencies = [
6287
+ "version_check",
6288
+]
6289
+
6290
+[[package]]
6291
+name = "smallvec"
6292
+version = "1.15.2"
6293
+source = "registry+https://github.com/rust-lang/crates.io-index"
6294
+checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90"
6295
+
6296
+[[package]]
6297
+name = "smol"
6298
+version = "2.0.2"
6299
+source = "registry+https://github.com/rust-lang/crates.io-index"
6300
+checksum = "a33bd3e260892199c3ccfc487c88b2da2265080acb316cd920da72fdfd7c599f"
6301
+dependencies = [
6302
+ "async-channel",
6303
+ "async-executor",
6304
+ "async-fs",
6305
+ "async-io",
6306
+ "async-lock",
6307
+ "async-net",
6308
+ "async-process",
6309
+ "blocking",
6310
+ "futures-lite 2.6.1",
6311
+]
6312
+
6313
+[[package]]
6314
+name = "smol_str"
6315
+version = "0.3.6"
6316
+source = "registry+https://github.com/rust-lang/crates.io-index"
6317
+checksum = "4aaa7368fcf4852a4c2dd92df0cace6a71f2091ca0a23391ce7f3a31833f1523"
6318
+dependencies = [
6319
+ "borsh",
6320
+ "serde_core",
6321
+]
6322
+
6323
+[[package]]
6324
+name = "socket2"
6325
+version = "0.6.4"
6326
+source = "registry+https://github.com/rust-lang/crates.io-index"
6327
+checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51"
6328
+dependencies = [
6329
+ "libc",
6330
+ "windows-sys 0.61.2",
6331
+]
6332
+
6333
+[[package]]
6334
+name = "spin"
6335
+version = "0.9.8"
6336
+source = "registry+https://github.com/rust-lang/crates.io-index"
6337
+checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
6338
+dependencies = [
6339
+ "lock_api",
6340
+]
6341
+
6342
+[[package]]
6343
+name = "spin"
6344
+version = "0.10.0"
6345
+source = "registry+https://github.com/rust-lang/crates.io-index"
6346
+checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591"
6347
+dependencies = [
6348
+ "lock_api",
6349
+]
6350
+
6351
+[[package]]
6352
+name = "spirv"
6353
+version = "0.4.0+sdk-1.4.341.0"
6354
+source = "registry+https://github.com/rust-lang/crates.io-index"
6355
+checksum = "d9571ea910ebd84c86af4b3ed27f9dbdc6ad06f17c5f96146b2b671e2976744f"
6356
+dependencies = [
6357
+ "bitflags 2.13.0",
6358
+]
6359
+
6360
+[[package]]
6361
+name = "spki"
6362
+version = "0.7.3"
6363
+source = "registry+https://github.com/rust-lang/crates.io-index"
6364
+checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
6365
+dependencies = [
6366
+ "base64ct",
6367
+ "der",
6368
+]
6369
+
6370
+[[package]]
6371
+name = "srp"
6372
+version = "0.7.0-rc.3"
6373
+source = "registry+https://github.com/rust-lang/crates.io-index"
6374
+checksum = "4b5f622c2d21b826b3501f4c620ccc4696e4a09a6b51727fcb21036dec87c101"
6375
+dependencies = [
6376
+ "crypto-bigint",
6377
+ "crypto-common 0.2.2",
6378
+ "digest 0.11.3",
6379
+ "subtle",
6380
+]
6381
+
6382
+[[package]]
6383
+name = "stable_deref_trait"
6384
+version = "1.2.1"
6385
+source = "registry+https://github.com/rust-lang/crates.io-index"
6386
+checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
6387
+
6388
+[[package]]
6389
+name = "stacker"
6390
+version = "0.1.24"
6391
+source = "registry+https://github.com/rust-lang/crates.io-index"
6392
+checksum = "640c8cdd92b6b12f5bcb1803ca3bbf5ab96e5e6b6b96b9ab77dabe9e880b3190"
6393
+dependencies = [
6394
+ "cc",
6395
+ "cfg-if",
6396
+ "libc",
6397
+ "psm",
6398
+ "windows-sys 0.61.2",
6399
+]
6400
+
6401
+[[package]]
6402
+name = "stacksafe"
6403
+version = "1.0.2"
6404
+source = "registry+https://github.com/rust-lang/crates.io-index"
6405
+checksum = "b738765988c43975135c78ade8b0ee940566ab87d7e324897662b7460c44ab83"
6406
+dependencies = [
6407
+ "stacker",
6408
+ "stacksafe-macro",
6409
+]
6410
+
6411
+[[package]]
6412
+name = "stacksafe-macro"
6413
+version = "1.0.2"
6414
+source = "registry+https://github.com/rust-lang/crates.io-index"
6415
+checksum = "9e30778b21fdee0c7dbfcf5cfc2d9e2a0dbc135faf7093c245bf19f088f9fa10"
6416
+dependencies = [
6417
+ "proc-macro2",
6418
+ "quote",
6419
+ "syn",
6420
+]
6421
+
6422
+[[package]]
6423
+name = "static_assertions"
6424
+version = "1.1.0"
6425
+source = "registry+https://github.com/rust-lang/crates.io-index"
6426
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
6427
+
6428
+[[package]]
6429
+name = "strict-num"
6430
+version = "0.1.1"
6431
+source = "registry+https://github.com/rust-lang/crates.io-index"
6432
+checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731"
6433
+dependencies = [
6434
+ "float-cmp",
6435
+]
6436
+
6437
+[[package]]
6438
+name = "strum"
6439
+version = "0.27.2"
6440
+source = "registry+https://github.com/rust-lang/crates.io-index"
6441
+checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf"
6442
+dependencies = [
6443
+ "strum_macros",
6444
+]
6445
+
6446
+[[package]]
6447
+name = "strum_macros"
6448
+version = "0.27.2"
6449
+source = "registry+https://github.com/rust-lang/crates.io-index"
6450
+checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7"
6451
+dependencies = [
6452
+ "heck 0.5.0",
6453
+ "proc-macro2",
6454
+ "quote",
6455
+ "syn",
6456
+]
6457
+
6458
+[[package]]
6459
+name = "subtle"
6460
+version = "2.6.1"
6461
+source = "registry+https://github.com/rust-lang/crates.io-index"
6462
+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
6463
+
6464
+[[package]]
6465
+name = "sum_tree"
6466
+version = "0.1.0"
6467
+source = "git+https://github.com/zed-industries/zed?rev=876ec5a8a074ba83cce2129ed4d76b59c05a37e9#876ec5a8a074ba83cce2129ed4d76b59c05a37e9"
6468
+dependencies = [
6469
+ "heapless",
6470
+ "log",
6471
+ "rayon",
6472
+ "tracing",
6473
+ "ztracing",
6474
+]
6475
+
6476
+[[package]]
6477
+name = "super-sideloader"
6478
+version = "0.1.0"
6479
+dependencies = [
6480
+ "env_logger",
6481
+ "gpui",
6482
+ "gpui_platform",
6483
+]
6484
+
6485
+[[package]]
6486
+name = "sval"
6487
+version = "2.20.0"
6488
+source = "registry+https://github.com/rust-lang/crates.io-index"
6489
+checksum = "5fb9efbae90f97301f4d25f3be63dfd99d6b7af9d088228a52ec960d649b2e7d"
6490
+
6491
+[[package]]
6492
+name = "sval_buffer"
6493
+version = "2.20.0"
6494
+source = "registry+https://github.com/rust-lang/crates.io-index"
6495
+checksum = "ff5c0280ea0af40b3a1fd0b532680b5067482ffb81412ee66ec04b1d9952b49a"
6496
+dependencies = [
6497
+ "sval",
6498
+ "sval_ref",
6499
+]
6500
+
6501
+[[package]]
6502
+name = "sval_dynamic"
6503
+version = "2.20.0"
6504
+source = "registry+https://github.com/rust-lang/crates.io-index"
6505
+checksum = "59b9067f2e68f58e110cf8019a268057e3791cf74b0fdb1b3c7c6e49104f44e6"
6506
+dependencies = [
6507
+ "sval",
6508
+]
6509
+
6510
+[[package]]
6511
+name = "sval_fmt"
6512
+version = "2.20.0"
6513
+source = "registry+https://github.com/rust-lang/crates.io-index"
6514
+checksum = "96ebdbf0e4b175884aa587fcf551c16dabe245ea04235abdd8cbbd160b27ed5a"
6515
+dependencies = [
6516
+ "itoa",
6517
+ "ryu",
6518
+ "sval",
6519
+]
6520
+
6521
+[[package]]
6522
+name = "sval_json"
6523
+version = "2.20.0"
6524
+source = "registry+https://github.com/rust-lang/crates.io-index"
6525
+checksum = "1e448d9fa216a6c16670b28d624fbbcf5c04e41eb187bd7c52e01222ffa72a12"
6526
+dependencies = [
6527
+ "itoa",
6528
+ "ryu",
6529
+ "sval",
6530
+]
6531
+
6532
+[[package]]
6533
+name = "sval_nested"
6534
+version = "2.20.0"
6535
+source = "registry+https://github.com/rust-lang/crates.io-index"
6536
+checksum = "021de5b5c26efd544c694cef9b8a9abe8633481bf3be1ea145a18a740818b291"
6537
+dependencies = [
6538
+ "sval",
6539
+ "sval_buffer",
6540
+ "sval_ref",
6541
+]
6542
+
6543
+[[package]]
6544
+name = "sval_ref"
6545
+version = "2.20.0"
6546
+source = "registry+https://github.com/rust-lang/crates.io-index"
6547
+checksum = "54ef5ffec8bc52ded04ee424ab8d959e25e64fd40a48a16d21f8991ce824c1bb"
6548
+dependencies = [
6549
+ "sval",
6550
+]
6551
+
6552
+[[package]]
6553
+name = "sval_serde"
6554
+version = "2.20.0"
6555
+source = "registry+https://github.com/rust-lang/crates.io-index"
6556
+checksum = "b983833a8a2390f89ebcf9b9acd06883017014b4ffd72ee28e0c9de6852039f5"
6557
+dependencies = [
6558
+ "serde_core",
6559
+ "sval",
6560
+ "sval_nested",
6561
+]
6562
+
6563
+[[package]]
6564
+name = "svg_fmt"
6565
+version = "0.4.5"
6566
+source = "registry+https://github.com/rust-lang/crates.io-index"
6567
+checksum = "0193cc4331cfd2f3d2011ef287590868599a2f33c3e69bc22c1a3d3acf9e02fb"
6568
+
6569
+[[package]]
6570
+name = "svgtypes"
6571
+version = "0.15.3"
6572
+source = "registry+https://github.com/rust-lang/crates.io-index"
6573
+checksum = "68c7541fff44b35860c1a7a47a7cadf3e4a304c457b58f9870d9706ece028afc"
6574
+dependencies = [
6575
+ "kurbo",
6576
+ "siphasher",
6577
+]
6578
+
6579
+[[package]]
6580
+name = "swash"
6581
+version = "0.2.9"
6582
+source = "registry+https://github.com/rust-lang/crates.io-index"
6583
+checksum = "0811b01ca2c4e8718760713911feaf4675c24f94e50530a015ec646cfb622f7c"
6584
+dependencies = [
6585
+ "skrifa 0.42.1",
6586
+ "yazi",
6587
+ "zeno",
6588
+]
6589
+
6590
+[[package]]
6591
+name = "syn"
6592
+version = "2.0.118"
6593
+source = "registry+https://github.com/rust-lang/crates.io-index"
6594
+checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422"
6595
+dependencies = [
6596
+ "proc-macro2",
6597
+ "quote",
6598
+ "unicode-ident",
6599
+]
6600
+
6601
+[[package]]
6602
+name = "sync_wrapper"
6603
+version = "1.0.2"
6604
+source = "registry+https://github.com/rust-lang/crates.io-index"
6605
+checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
6606
+dependencies = [
6607
+ "futures-core",
6608
+]
6609
+
6610
+[[package]]
6611
+name = "synstructure"
6612
+version = "0.13.2"
6613
+source = "registry+https://github.com/rust-lang/crates.io-index"
6614
+checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
6615
+dependencies = [
6616
+ "proc-macro2",
6617
+ "quote",
6618
+ "syn",
6619
+]
6620
+
6621
+[[package]]
6622
+name = "sys-locale"
6623
+version = "0.3.2"
6624
+source = "registry+https://github.com/rust-lang/crates.io-index"
6625
+checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4"
6626
+dependencies = [
6627
+ "libc",
6628
+]
6629
+
6630
+[[package]]
6631
+name = "sysinfo"
6632
+version = "0.31.4"
6633
+source = "registry+https://github.com/rust-lang/crates.io-index"
6634
+checksum = "355dbe4f8799b304b05e1b0f05fc59b2a18d36645cf169607da45bde2f69a1be"
6635
+dependencies = [
6636
+ "core-foundation-sys",
6637
+ "libc",
6638
+ "memchr",
6639
+ "ntapi",
6640
+ "rayon",
6641
+ "windows 0.57.0",
6642
+]
6643
+
6644
+[[package]]
6645
+name = "system-configuration"
6646
+version = "0.7.0"
6647
+source = "registry+https://github.com/rust-lang/crates.io-index"
6648
+checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b"
6649
+dependencies = [
6650
+ "bitflags 2.13.0",
6651
+ "core-foundation 0.9.4",
6652
+ "system-configuration-sys",
6653
+]
2374 6654
 
2375 6655
 [[package]]
2376
-name = "region"
2377
-version = "3.0.2"
6656
+name = "system-configuration-sys"
6657
+version = "0.6.0"
2378 6658
 source = "registry+https://github.com/rust-lang/crates.io-index"
2379
-checksum = "e6b6ebd13bc009aef9cd476c1310d49ac354d36e240cf1bd753290f3dc7199a7"
6659
+checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
2380 6660
 dependencies = [
2381
- "bitflags 1.3.2",
6661
+ "core-foundation-sys",
2382 6662
  "libc",
2383
- "mach2",
2384
- "windows-sys 0.52.0",
2385 6663
 ]
2386 6664
 
2387 6665
 [[package]]
2388
-name = "reqwest"
2389
-version = "0.11.24"
2390
-source = "registry+https://github.com/rust-lang/crates.io-index"
2391
-checksum = "c6920094eb85afde5e4a138be3f2de8bbdf28000f0029e72c45025a56b042251"
6666
+name = "sysv64"
6667
+version = "0.1.0"
2392 6668
 dependencies = [
2393
- "base64 0.21.7",
2394
- "bytes",
2395
- "encoding_rs",
2396
- "futures-core",
2397
- "futures-util",
2398
- "h2 0.3.27",
2399
- "http 0.2.12",
2400
- "http-body 0.4.6",
2401
- "hyper 0.14.32",
2402
- "hyper-rustls 0.24.2",
2403
- "ipnet",
2404
- "js-sys",
2405
- "log",
2406
- "mime",
2407
- "once_cell",
2408
- "percent-encoding",
2409
- "pin-project-lite",
2410
- "rustls 0.21.12",
2411
- "rustls-pemfile",
2412
- "serde",
2413
- "serde_json",
2414
- "serde_urlencoded",
2415
- "sync_wrapper 0.1.2",
2416
- "system-configuration 0.5.1",
2417
- "tokio",
2418
- "tokio-rustls 0.24.1",
2419
- "tower-service",
2420
- "url",
2421
- "wasm-bindgen",
2422
- "wasm-bindgen-futures",
2423
- "web-sys",
2424
- "webpki-roots",
2425
- "winreg",
6669
+ "proc-macro2",
6670
+ "quote",
6671
+ "syn",
2426 6672
 ]
2427 6673
 
2428 6674
 [[package]]
2429
-name = "reqwest"
2430
-version = "0.13.1"
6675
+name = "taffy"
6676
+version = "0.10.1"
2431 6677
 source = "registry+https://github.com/rust-lang/crates.io-index"
2432
-checksum = "04e9018c9d814e5f30cc16a0f03271aeab3571e609612d9fe78c1aa8d11c2f62"
6678
+checksum = "aea22054047c16c3f34d3ac473a2170be1424b1115b2a3adcf28cfb067c88859"
2433 6679
 dependencies = [
2434
- "base64 0.22.1",
2435
- "bytes",
2436
- "encoding_rs",
2437
- "futures-core",
2438
- "h2 0.4.12",
2439
- "http 1.3.1",
2440
- "http-body 1.0.1",
2441
- "http-body-util",
2442
- "hyper 1.7.0",
2443
- "hyper-rustls 0.27.7",
2444
- "hyper-util",
2445
- "js-sys",
2446
- "log",
2447
- "mime",
2448
- "percent-encoding",
2449
- "pin-project-lite",
2450
- "quinn",
2451
- "rustls 0.23.36",
2452
- "rustls-pki-types",
2453
- "rustls-platform-verifier",
6680
+ "arrayvec",
6681
+ "grid",
2454 6682
  "serde",
2455
- "serde_urlencoded",
2456
- "sync_wrapper 1.0.2",
2457
- "tokio",
2458
- "tokio-rustls 0.26.4",
2459
- "tower",
2460
- "tower-http",
2461
- "tower-service",
2462
- "url",
2463
- "wasm-bindgen",
2464
- "wasm-bindgen-futures",
2465
- "web-sys",
6683
+ "slotmap",
2466 6684
 ]
2467 6685
 
2468 6686
 [[package]]
2469
-name = "ring"
2470
-version = "0.17.14"
6687
+name = "take-until"
6688
+version = "0.2.0"
2471 6689
 source = "registry+https://github.com/rust-lang/crates.io-index"
2472
-checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
6690
+checksum = "8bdb6fa0dfa67b38c1e66b7041ba9dcf23b99d8121907cd31c807a332f7a0bbb"
6691
+
6692
+[[package]]
6693
+name = "tao-core-video-sys"
6694
+version = "0.2.0"
6695
+source = "registry+https://github.com/rust-lang/crates.io-index"
6696
+checksum = "271450eb289cb4d8d0720c6ce70c72c8c858c93dd61fc625881616752e6b98f6"
2473 6697
 dependencies = [
2474
- "cc",
2475
- "cfg-if 1.0.4",
2476
- "getrandom 0.2.16",
6698
+ "cfg-if",
6699
+ "core-foundation-sys",
2477 6700
  "libc",
2478
- "untrusted",
2479
- "windows-sys 0.52.0",
6701
+ "objc",
2480 6702
 ]
2481 6703
 
2482 6704
 [[package]]
2483
-name = "rustc-demangle"
2484
-version = "0.1.26"
6705
+name = "tempfile"
6706
+version = "3.27.0"
2485 6707
 source = "registry+https://github.com/rust-lang/crates.io-index"
2486
-checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace"
6708
+checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
6709
+dependencies = [
6710
+ "fastrand 2.4.1",
6711
+ "getrandom 0.4.3",
6712
+ "once_cell",
6713
+ "rustix 1.1.4",
6714
+ "windows-sys 0.61.2",
6715
+]
2487 6716
 
2488 6717
 [[package]]
2489
-name = "rustc-hash"
2490
-version = "1.1.0"
6718
+name = "tendril"
6719
+version = "0.4.3"
2491 6720
 source = "registry+https://github.com/rust-lang/crates.io-index"
2492
-checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
6721
+checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0"
6722
+dependencies = [
6723
+ "futf",
6724
+ "mac",
6725
+ "utf-8",
6726
+]
2493 6727
 
2494 6728
 [[package]]
2495
-name = "rustc-hash"
2496
-version = "2.1.1"
6729
+name = "termcolor"
6730
+version = "1.4.1"
2497 6731
 source = "registry+https://github.com/rust-lang/crates.io-index"
2498
-checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
6732
+checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
6733
+dependencies = [
6734
+ "winapi-util",
6735
+]
2499 6736
 
2500 6737
 [[package]]
2501
-name = "rustix"
2502
-version = "1.1.2"
6738
+name = "thiserror"
6739
+version = "1.0.69"
2503 6740
 source = "registry+https://github.com/rust-lang/crates.io-index"
2504
-checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
6741
+checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
2505 6742
 dependencies = [
2506
- "bitflags 2.10.0",
2507
- "errno",
2508
- "libc",
2509
- "linux-raw-sys",
2510
- "windows-sys 0.61.2",
6743
+ "thiserror-impl 1.0.69",
2511 6744
 ]
2512 6745
 
2513 6746
 [[package]]
2514
-name = "rustls"
2515
-version = "0.21.12"
6747
+name = "thiserror"
6748
+version = "2.0.18"
2516 6749
 source = "registry+https://github.com/rust-lang/crates.io-index"
2517
-checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e"
6750
+checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
2518 6751
 dependencies = [
2519
- "log",
2520
- "ring",
2521
- "rustls-webpki 0.101.7",
2522
- "sct",
6752
+ "thiserror-impl 2.0.18",
2523 6753
 ]
2524 6754
 
2525 6755
 [[package]]
2526
-name = "rustls"
2527
-version = "0.23.36"
6756
+name = "thiserror-impl"
6757
+version = "1.0.69"
2528 6758
 source = "registry+https://github.com/rust-lang/crates.io-index"
2529
-checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b"
6759
+checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
2530 6760
 dependencies = [
2531
- "aws-lc-rs",
2532
- "once_cell",
2533
- "rustls-pki-types",
2534
- "rustls-webpki 0.103.7",
2535
- "subtle",
2536
- "zeroize",
6761
+ "proc-macro2",
6762
+ "quote",
6763
+ "syn",
2537 6764
 ]
2538 6765
 
2539 6766
 [[package]]
2540
-name = "rustls-native-certs"
2541
-version = "0.8.3"
6767
+name = "thiserror-impl"
6768
+version = "2.0.18"
2542 6769
 source = "registry+https://github.com/rust-lang/crates.io-index"
2543
-checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63"
6770
+checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
2544 6771
 dependencies = [
2545
- "openssl-probe",
2546
- "rustls-pki-types",
2547
- "schannel",
2548
- "security-framework",
6772
+ "proc-macro2",
6773
+ "quote",
6774
+ "syn",
2549 6775
 ]
2550 6776
 
2551 6777
 [[package]]
2552
-name = "rustls-pemfile"
2553
-version = "1.0.4"
6778
+name = "thread_local"
6779
+version = "1.1.9"
2554 6780
 source = "registry+https://github.com/rust-lang/crates.io-index"
2555
-checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c"
6781
+checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
2556 6782
 dependencies = [
2557
- "base64 0.21.7",
6783
+ "cfg-if",
2558 6784
 ]
2559 6785
 
2560 6786
 [[package]]
2561
-name = "rustls-pki-types"
2562
-version = "1.12.0"
6787
+name = "tiff"
6788
+version = "0.11.3"
2563 6789
 source = "registry+https://github.com/rust-lang/crates.io-index"
2564
-checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79"
6790
+checksum = "b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52"
2565 6791
 dependencies = [
2566
- "web-time",
2567
- "zeroize",
6792
+ "fax",
6793
+ "flate2",
6794
+ "half",
6795
+ "quick-error",
6796
+ "weezl",
6797
+ "zune-jpeg 0.5.15",
2568 6798
 ]
2569 6799
 
2570 6800
 [[package]]
2571
-name = "rustls-platform-verifier"
2572
-version = "0.6.2"
6801
+name = "time"
6802
+version = "0.3.53"
2573 6803
 source = "registry+https://github.com/rust-lang/crates.io-index"
2574
-checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784"
6804
+checksum = "18dfaaeddcb932337b5e7866ee7d0ce9b76d2fd092997146f187ec09b4558a50"
2575 6805
 dependencies = [
2576
- "core-foundation 0.10.1",
2577
- "core-foundation-sys",
2578
- "jni",
2579
- "log",
2580
- "once_cell",
2581
- "rustls 0.23.36",
2582
- "rustls-native-certs",
2583
- "rustls-platform-verifier-android",
2584
- "rustls-webpki 0.103.7",
2585
- "security-framework",
2586
- "security-framework-sys",
2587
- "webpki-root-certs",
2588
- "windows-sys 0.61.2",
6806
+ "deranged",
6807
+ "num-conv",
6808
+ "powerfmt",
6809
+ "serde_core",
6810
+ "time-core",
6811
+ "time-macros",
2589 6812
 ]
2590 6813
 
2591 6814
 [[package]]
2592
-name = "rustls-platform-verifier-android"
2593
-version = "0.1.1"
6815
+name = "time-core"
6816
+version = "0.1.9"
2594 6817
 source = "registry+https://github.com/rust-lang/crates.io-index"
2595
-checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f"
6818
+checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109"
2596 6819
 
2597 6820
 [[package]]
2598
-name = "rustls-webpki"
2599
-version = "0.101.7"
6821
+name = "time-macros"
6822
+version = "0.2.31"
2600 6823
 source = "registry+https://github.com/rust-lang/crates.io-index"
2601
-checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765"
6824
+checksum = "c431b87111666e491a90baa837f914fb45cd5dc3c268591b0220ff5057f2085f"
2602 6825
 dependencies = [
2603
- "ring",
2604
- "untrusted",
6826
+ "num-conv",
6827
+ "time-core",
2605 6828
 ]
2606 6829
 
2607 6830
 [[package]]
2608
-name = "rustls-webpki"
2609
-version = "0.103.7"
6831
+name = "tiny-keccak"
6832
+version = "2.0.2"
2610 6833
 source = "registry+https://github.com/rust-lang/crates.io-index"
2611
-checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf"
6834
+checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237"
2612 6835
 dependencies = [
2613
- "aws-lc-rs",
2614
- "ring",
2615
- "rustls-pki-types",
2616
- "untrusted",
6836
+ "crunchy",
2617 6837
 ]
2618 6838
 
2619 6839
 [[package]]
2620
-name = "rustversion"
2621
-version = "1.0.22"
6840
+name = "tiny-skia"
6841
+version = "0.11.4"
2622 6842
 source = "registry+https://github.com/rust-lang/crates.io-index"
2623
-checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
6843
+checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab"
6844
+dependencies = [
6845
+ "arrayref",
6846
+ "arrayvec",
6847
+ "bytemuck",
6848
+ "cfg-if",
6849
+ "log",
6850
+ "png 0.17.16",
6851
+ "tiny-skia-path",
6852
+]
2624 6853
 
2625 6854
 [[package]]
2626
-name = "ryu"
2627
-version = "1.0.20"
6855
+name = "tiny-skia-path"
6856
+version = "0.11.4"
2628 6857
 source = "registry+https://github.com/rust-lang/crates.io-index"
2629
-checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
6858
+checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93"
6859
+dependencies = [
6860
+ "arrayref",
6861
+ "bytemuck",
6862
+ "strict-num",
6863
+]
2630 6864
 
2631 6865
 [[package]]
2632
-name = "same-file"
2633
-version = "1.0.6"
6866
+name = "tinystr"
6867
+version = "0.8.3"
2634 6868
 source = "registry+https://github.com/rust-lang/crates.io-index"
2635
-checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
6869
+checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d"
2636 6870
 dependencies = [
2637
- "winapi-util",
6871
+ "displaydoc",
6872
+ "zerovec",
2638 6873
 ]
2639 6874
 
2640 6875
 [[package]]
2641
-name = "schannel"
2642
-version = "0.1.28"
6876
+name = "tinyvec"
6877
+version = "1.11.0"
2643 6878
 source = "registry+https://github.com/rust-lang/crates.io-index"
2644
-checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1"
6879
+checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3"
2645 6880
 dependencies = [
2646
- "windows-sys 0.61.2",
6881
+ "tinyvec_macros",
2647 6882
 ]
2648 6883
 
2649 6884
 [[package]]
2650
-name = "scroll"
2651
-version = "0.13.0"
6885
+name = "tinyvec_macros"
6886
+version = "0.1.1"
2652 6887
 source = "registry+https://github.com/rust-lang/crates.io-index"
2653
-checksum = "c1257cd4248b4132760d6524d6dda4e053bc648c9070b960929bf50cfb1e7add"
2654
-dependencies = [
2655
- "scroll_derive",
2656
-]
6888
+checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
2657 6889
 
2658 6890
 [[package]]
2659
-name = "scroll_derive"
2660
-version = "0.13.1"
6891
+name = "tls_codec"
6892
+version = "0.4.2"
2661 6893
 source = "registry+https://github.com/rust-lang/crates.io-index"
2662
-checksum = "ed76efe62313ab6610570951494bdaa81568026e0318eaa55f167de70eeea67d"
6894
+checksum = "0de2e01245e2bb89d6f05801c564fa27624dbd7b1846859876c7dad82e90bf6b"
2663 6895
 dependencies = [
2664
- "proc-macro2",
2665
- "quote",
2666
- "syn 2.0.107",
6896
+ "tls_codec_derive",
6897
+ "zeroize",
2667 6898
 ]
2668 6899
 
2669 6900
 [[package]]
2670
-name = "sct"
2671
-version = "0.7.1"
6901
+name = "tls_codec_derive"
6902
+version = "0.4.2"
2672 6903
 source = "registry+https://github.com/rust-lang/crates.io-index"
2673
-checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414"
6904
+checksum = "2d2e76690929402faae40aebdda620a2c0e25dd6d3b9afe48867dfd95991f4bd"
2674 6905
 dependencies = [
2675
- "ring",
2676
- "untrusted",
6906
+ "proc-macro2",
6907
+ "quote",
6908
+ "syn",
2677 6909
 ]
2678 6910
 
2679 6911
 [[package]]
2680
-name = "security-framework"
2681
-version = "3.5.1"
6912
+name = "tokio"
6913
+version = "1.52.3"
2682 6914
 source = "registry+https://github.com/rust-lang/crates.io-index"
2683
-checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef"
6915
+checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe"
2684 6916
 dependencies = [
2685
- "bitflags 2.10.0",
2686
- "core-foundation 0.10.1",
2687
- "core-foundation-sys",
6917
+ "bytes",
2688 6918
  "libc",
2689
- "security-framework-sys",
6919
+ "mio",
6920
+ "pin-project-lite",
6921
+ "socket2",
6922
+ "windows-sys 0.61.2",
2690 6923
 ]
2691 6924
 
2692 6925
 [[package]]
2693
-name = "security-framework-sys"
2694
-version = "2.15.0"
6926
+name = "tokio-rustls"
6927
+version = "0.26.4"
2695 6928
 source = "registry+https://github.com/rust-lang/crates.io-index"
2696
-checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0"
6929
+checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
2697 6930
 dependencies = [
2698
- "core-foundation-sys",
2699
- "libc",
6931
+ "rustls",
6932
+ "tokio",
2700 6933
 ]
2701 6934
 
2702 6935
 [[package]]
2703
-name = "semver"
2704
-version = "1.0.22"
6936
+name = "tokio-util"
6937
+version = "0.7.18"
2705 6938
 source = "registry+https://github.com/rust-lang/crates.io-index"
2706
-checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca"
6939
+checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098"
6940
+dependencies = [
6941
+ "bytes",
6942
+ "futures-core",
6943
+ "futures-sink",
6944
+ "pin-project-lite",
6945
+ "tokio",
6946
+]
2707 6947
 
2708 6948
 [[package]]
2709
-name = "serde"
2710
-version = "1.0.228"
6949
+name = "toml"
6950
+version = "0.8.23"
2711 6951
 source = "registry+https://github.com/rust-lang/crates.io-index"
2712
-checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
6952
+checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362"
2713 6953
 dependencies = [
2714
- "serde_core",
2715
- "serde_derive",
6954
+ "serde",
6955
+ "serde_spanned 0.6.9",
6956
+ "toml_datetime 0.6.11",
6957
+ "toml_edit 0.22.27",
2716 6958
 ]
2717 6959
 
2718 6960
 [[package]]
2719
-name = "serde_core"
2720
-version = "1.0.228"
6961
+name = "toml"
6962
+version = "1.1.2+spec-1.1.0"
2721 6963
 source = "registry+https://github.com/rust-lang/crates.io-index"
2722
-checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
6964
+checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee"
2723 6965
 dependencies = [
2724
- "serde_derive",
6966
+ "indexmap",
6967
+ "serde_core",
6968
+ "serde_spanned 1.1.1",
6969
+ "toml_datetime 1.1.1+spec-1.1.0",
6970
+ "toml_parser",
6971
+ "toml_writer",
6972
+ "winnow 1.0.3",
2725 6973
 ]
2726 6974
 
2727 6975
 [[package]]
2728
-name = "serde_derive"
2729
-version = "1.0.228"
6976
+name = "toml_datetime"
6977
+version = "0.6.11"
2730 6978
 source = "registry+https://github.com/rust-lang/crates.io-index"
2731
-checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
6979
+checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c"
2732 6980
 dependencies = [
2733
- "proc-macro2",
2734
- "quote",
2735
- "syn 2.0.107",
6981
+ "serde",
2736 6982
 ]
2737 6983
 
2738 6984
 [[package]]
2739
-name = "serde_json"
2740
-version = "1.0.145"
6985
+name = "toml_datetime"
6986
+version = "1.1.1+spec-1.1.0"
2741 6987
 source = "registry+https://github.com/rust-lang/crates.io-index"
2742
-checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
6988
+checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7"
2743 6989
 dependencies = [
2744
- "itoa",
2745
- "memchr",
2746
- "ryu",
2747
- "serde",
2748 6990
  "serde_core",
2749 6991
 ]
2750 6992
 
2751 6993
 [[package]]
2752
-name = "serde_urlencoded"
2753
-version = "0.7.1"
6994
+name = "toml_edit"
6995
+version = "0.22.27"
2754 6996
 source = "registry+https://github.com/rust-lang/crates.io-index"
2755
-checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd"
6997
+checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a"
2756 6998
 dependencies = [
2757
- "form_urlencoded",
2758
- "itoa",
2759
- "ryu",
6999
+ "indexmap",
2760 7000
  "serde",
7001
+ "serde_spanned 0.6.9",
7002
+ "toml_datetime 0.6.11",
7003
+ "toml_write",
7004
+ "winnow 0.7.15",
2761 7005
 ]
2762 7006
 
2763 7007
 [[package]]
2764
-name = "serdect"
2765
-version = "0.4.2"
7008
+name = "toml_edit"
7009
+version = "0.25.12+spec-1.1.0"
2766 7010
 source = "registry+https://github.com/rust-lang/crates.io-index"
2767
-checksum = "9af4a3e75ebd5599b30d4de5768e00b5095d518a79fefc3ecbaf77e665d1ec06"
7011
+checksum = "d2153edc6955a6c354fad8f5efd38b6a8769bdccf9fe50f8e1329f81b0baa5d7"
2768 7012
 dependencies = [
2769
- "base16ct",
2770
- "serde",
7013
+ "indexmap",
7014
+ "toml_datetime 1.1.1+spec-1.1.0",
7015
+ "toml_parser",
7016
+ "winnow 1.0.3",
2771 7017
 ]
2772 7018
 
2773 7019
 [[package]]
2774
-name = "sha1"
2775
-version = "0.11.0-rc.5"
7020
+name = "toml_parser"
7021
+version = "1.1.2+spec-1.1.0"
2776 7022
 source = "registry+https://github.com/rust-lang/crates.io-index"
2777
-checksum = "3b167252f3c126be0d8926639c4c4706950f01445900c4b3db0fd7e89fcb750a"
7023
+checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526"
2778 7024
 dependencies = [
2779
- "cfg-if 1.0.4",
2780
- "cpufeatures 0.2.17",
2781
- "digest",
7025
+ "winnow 1.0.3",
2782 7026
 ]
2783 7027
 
2784 7028
 [[package]]
2785
-name = "sha2"
2786
-version = "0.11.0-rc.5"
7029
+name = "toml_write"
7030
+version = "0.1.2"
2787 7031
 source = "registry+https://github.com/rust-lang/crates.io-index"
2788
-checksum = "7c5f3b1e2dc8aad28310d8410bd4d7e180eca65fca176c52ab00d364475d0024"
2789
-dependencies = [
2790
- "cfg-if 1.0.4",
2791
- "cpufeatures 0.2.17",
2792
- "digest",
2793
-]
7032
+checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801"
2794 7033
 
2795 7034
 [[package]]
2796
-name = "shlex"
2797
-version = "0.1.1"
7035
+name = "toml_writer"
7036
+version = "1.1.1+spec-1.1.0"
2798 7037
 source = "registry+https://github.com/rust-lang/crates.io-index"
2799
-checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2"
7038
+checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db"
2800 7039
 
2801 7040
 [[package]]
2802
-name = "shlex"
2803
-version = "1.3.0"
7041
+name = "tower"
7042
+version = "0.5.3"
2804 7043
 source = "registry+https://github.com/rust-lang/crates.io-index"
2805
-checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
7044
+checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4"
7045
+dependencies = [
7046
+ "futures-core",
7047
+ "futures-util",
7048
+ "pin-project-lite",
7049
+ "sync_wrapper",
7050
+ "tokio",
7051
+ "tower-layer",
7052
+ "tower-service",
7053
+]
2806 7054
 
2807 7055
 [[package]]
2808
-name = "simd-adler32"
2809
-version = "0.3.7"
7056
+name = "tower-http"
7057
+version = "0.6.11"
2810 7058
 source = "registry+https://github.com/rust-lang/crates.io-index"
2811
-checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
7059
+checksum = "4cfcf7e2740e6fc6d4d688b4ef00650406bb94adf4731e43c096c3a19fe40840"
7060
+dependencies = [
7061
+ "async-compression",
7062
+ "bitflags 2.13.0",
7063
+ "bytes",
7064
+ "futures-core",
7065
+ "futures-util",
7066
+ "http",
7067
+ "http-body",
7068
+ "http-body-util",
7069
+ "pin-project-lite",
7070
+ "tokio",
7071
+ "tokio-util",
7072
+ "tower",
7073
+ "tower-layer",
7074
+ "tower-service",
7075
+ "url",
7076
+]
2812 7077
 
2813 7078
 [[package]]
2814
-name = "slab"
2815
-version = "0.4.11"
7079
+name = "tower-layer"
7080
+version = "0.3.3"
2816 7081
 source = "registry+https://github.com/rust-lang/crates.io-index"
2817
-checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
7082
+checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
2818 7083
 
2819 7084
 [[package]]
2820
-name = "smallvec"
2821
-version = "1.15.1"
7085
+name = "tower-service"
7086
+version = "0.3.3"
2822 7087
 source = "registry+https://github.com/rust-lang/crates.io-index"
2823
-checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
7088
+checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
2824 7089
 
2825 7090
 [[package]]
2826
-name = "smawk"
2827
-version = "0.3.2"
7091
+name = "tracing"
7092
+version = "0.1.44"
2828 7093
 source = "registry+https://github.com/rust-lang/crates.io-index"
2829
-checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c"
7094
+checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
7095
+dependencies = [
7096
+ "log",
7097
+ "pin-project-lite",
7098
+ "tracing-attributes",
7099
+ "tracing-core",
7100
+]
2830 7101
 
2831 7102
 [[package]]
2832
-name = "socket2"
2833
-version = "0.5.10"
7103
+name = "tracing-attributes"
7104
+version = "0.1.31"
2834 7105
 source = "registry+https://github.com/rust-lang/crates.io-index"
2835
-checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678"
7106
+checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
2836 7107
 dependencies = [
2837
- "libc",
2838
- "windows-sys 0.52.0",
7108
+ "proc-macro2",
7109
+ "quote",
7110
+ "syn",
2839 7111
 ]
2840 7112
 
2841 7113
 [[package]]
2842
-name = "socket2"
2843
-version = "0.6.1"
7114
+name = "tracing-core"
7115
+version = "0.1.36"
2844 7116
 source = "registry+https://github.com/rust-lang/crates.io-index"
2845
-checksum = "17129e116933cf371d018bb80ae557e889637989d8638274fb25622827b03881"
7117
+checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
2846 7118
 dependencies = [
2847
- "libc",
2848
- "windows-sys 0.60.2",
7119
+ "once_cell",
7120
+ "valuable",
2849 7121
 ]
2850 7122
 
2851 7123
 [[package]]
2852
-name = "srp"
2853
-version = "0.7.0-rc.1"
7124
+name = "tracing-log"
7125
+version = "0.2.0"
2854 7126
 source = "registry+https://github.com/rust-lang/crates.io-index"
2855
-checksum = "a0b7d0b0d27b2475e779315c09af698ac9f6d40016bc011bf3fa0f0054ce38ed"
7127
+checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
2856 7128
 dependencies = [
2857
- "crypto-bigint",
2858
- "crypto-common",
2859
- "digest",
2860
- "subtle",
7129
+ "log",
7130
+ "once_cell",
7131
+ "tracing-core",
2861 7132
 ]
2862 7133
 
2863 7134
 [[package]]
2864
-name = "stable_deref_trait"
2865
-version = "1.2.1"
7135
+name = "tracing-subscriber"
7136
+version = "0.3.23"
2866 7137
 source = "registry+https://github.com/rust-lang/crates.io-index"
2867
-checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
7138
+checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319"
7139
+dependencies = [
7140
+ "nu-ansi-term",
7141
+ "sharded-slab",
7142
+ "smallvec",
7143
+ "thread_local",
7144
+ "tracing-core",
7145
+ "tracing-log",
7146
+]
2868 7147
 
2869 7148
 [[package]]
2870
-name = "static_assertions"
2871
-version = "1.1.0"
7149
+name = "try-lock"
7150
+version = "0.2.5"
2872 7151
 source = "registry+https://github.com/rust-lang/crates.io-index"
2873
-checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
7152
+checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
2874 7153
 
2875 7154
 [[package]]
2876
-name = "strsim"
2877
-version = "0.8.0"
7155
+name = "ttf-parser"
7156
+version = "0.25.1"
2878 7157
 source = "registry+https://github.com/rust-lang/crates.io-index"
2879
-checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
7158
+checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31"
7159
+dependencies = [
7160
+ "core_maths",
7161
+]
2880 7162
 
2881 7163
 [[package]]
2882
-name = "subtle"
2883
-version = "2.6.1"
7164
+name = "typeid"
7165
+version = "1.0.3"
2884 7166
 source = "registry+https://github.com/rust-lang/crates.io-index"
2885
-checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
7167
+checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c"
2886 7168
 
2887 7169
 [[package]]
2888
-name = "super-sideloader"
2889
-version = "0.1.0"
2890
-dependencies = [
2891
- "adi",
2892
- "adid-proxy",
2893
- "android-coreadi",
2894
- "base64 0.22.1",
2895
- "dlopen2",
2896
- "elf-loader",
2897
- "env_logger 0.11.8",
2898
- "grandslam",
2899
- "itunes",
2900
- "libc",
2901
- "library-coreadi",
2902
- "reqwest 0.13.1",
2903
- "serde",
2904
- "tokio",
2905
- "xcode",
2906
-]
7170
+name = "typenum"
7171
+version = "1.20.1"
7172
+source = "registry+https://github.com/rust-lang/crates.io-index"
7173
+checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
2907 7174
 
2908 7175
 [[package]]
2909
-name = "supports-color"
2910
-version = "2.1.0"
7176
+name = "uds_windows"
7177
+version = "1.2.1"
2911 7178
 source = "registry+https://github.com/rust-lang/crates.io-index"
2912
-checksum = "d6398cde53adc3c4557306a96ce67b302968513830a77a95b2b17305d9719a89"
7179
+checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e"
2913 7180
 dependencies = [
2914
- "is-terminal",
2915
- "is_ci",
7181
+ "memoffset",
7182
+ "tempfile",
7183
+ "windows-sys 0.61.2",
2916 7184
 ]
2917 7185
 
2918 7186
 [[package]]
2919
-name = "supports-hyperlinks"
2920
-version = "2.1.0"
7187
+name = "unicase"
7188
+version = "2.9.0"
2921 7189
 source = "registry+https://github.com/rust-lang/crates.io-index"
2922
-checksum = "f84231692eb0d4d41e4cdd0cabfdd2e6cd9e255e65f80c9aa7c98dd502b4233d"
2923
-dependencies = [
2924
- "is-terminal",
2925
-]
7190
+checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142"
2926 7191
 
2927 7192
 [[package]]
2928
-name = "supports-unicode"
2929
-version = "2.1.0"
7193
+name = "unicode-bidi"
7194
+version = "0.3.18"
2930 7195
 source = "registry+https://github.com/rust-lang/crates.io-index"
2931
-checksum = "f850c19edd184a205e883199a261ed44471c81e39bd95b1357f5febbef00e77a"
2932
-dependencies = [
2933
- "is-terminal",
2934
-]
7196
+checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5"
2935 7197
 
2936 7198
 [[package]]
2937
-name = "syn"
2938
-version = "1.0.109"
7199
+name = "unicode-bidi-mirroring"
7200
+version = "0.4.0"
2939 7201
 source = "registry+https://github.com/rust-lang/crates.io-index"
2940
-checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
2941
-dependencies = [
2942
- "proc-macro2",
2943
- "quote",
2944
- "unicode-ident",
2945
-]
7202
+checksum = "5dfa6e8c60bb66d49db113e0125ee8711b7647b5579dc7f5f19c42357ed039fe"
2946 7203
 
2947 7204
 [[package]]
2948
-name = "syn"
2949
-version = "2.0.107"
7205
+name = "unicode-ccc"
7206
+version = "0.4.0"
2950 7207
 source = "registry+https://github.com/rust-lang/crates.io-index"
2951
-checksum = "2a26dbd934e5451d21ef060c018dae56fc073894c5a7896f882928a76e6d081b"
2952
-dependencies = [
2953
- "proc-macro2",
2954
- "quote",
2955
- "unicode-ident",
2956
-]
7208
+checksum = "ce61d488bcdc9bc8b5d1772c404828b17fc481c0a582b5581e95fb233aef503e"
2957 7209
 
2958 7210
 [[package]]
2959
-name = "sync_wrapper"
2960
-version = "0.1.2"
7211
+name = "unicode-ident"
7212
+version = "1.0.24"
2961 7213
 source = "registry+https://github.com/rust-lang/crates.io-index"
2962
-checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
7214
+checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
2963 7215
 
2964 7216
 [[package]]
2965
-name = "sync_wrapper"
2966
-version = "1.0.2"
7217
+name = "unicode-linebreak"
7218
+version = "0.1.5"
2967 7219
 source = "registry+https://github.com/rust-lang/crates.io-index"
2968
-checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263"
2969
-dependencies = [
2970
- "futures-core",
2971
-]
7220
+checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
2972 7221
 
2973 7222
 [[package]]
2974
-name = "synstructure"
2975
-version = "0.13.2"
7223
+name = "unicode-properties"
7224
+version = "0.1.4"
2976 7225
 source = "registry+https://github.com/rust-lang/crates.io-index"
2977
-checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
2978
-dependencies = [
2979
- "proc-macro2",
2980
- "quote",
2981
- "syn 2.0.107",
2982
-]
7226
+checksum = "7df058c713841ad818f1dc5d3fd88063241cc61f49f5fbea4b951e8cf5a8d71d"
2983 7227
 
2984 7228
 [[package]]
2985
-name = "sys-locale"
2986
-version = "0.3.2"
7229
+name = "unicode-script"
7230
+version = "0.5.8"
2987 7231
 source = "registry+https://github.com/rust-lang/crates.io-index"
2988
-checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4"
2989
-dependencies = [
2990
- "libc",
2991
-]
7232
+checksum = "383ad40bb927465ec0ce7720e033cb4ca06912855fc35db31b5755d0de75b1ee"
2992 7233
 
2993 7234
 [[package]]
2994
-name = "system-configuration"
2995
-version = "0.5.1"
7235
+name = "unicode-segmentation"
7236
+version = "1.13.3"
2996 7237
 source = "registry+https://github.com/rust-lang/crates.io-index"
2997
-checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7"
2998
-dependencies = [
2999
- "bitflags 1.3.2",
3000
- "core-foundation 0.9.4",
3001
- "system-configuration-sys 0.5.0",
3002
-]
7238
+checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8"
3003 7239
 
3004 7240
 [[package]]
3005
-name = "system-configuration"
3006
-version = "0.6.1"
7241
+name = "unicode-vo"
7242
+version = "0.1.0"
3007 7243
 source = "registry+https://github.com/rust-lang/crates.io-index"
3008
-checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b"
3009
-dependencies = [
3010
- "bitflags 2.10.0",
3011
- "core-foundation 0.9.4",
3012
- "system-configuration-sys 0.6.0",
3013
-]
7244
+checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94"
3014 7245
 
3015 7246
 [[package]]
3016
-name = "system-configuration-sys"
3017
-version = "0.5.0"
7247
+name = "unicode-width"
7248
+version = "0.2.2"
3018 7249
 source = "registry+https://github.com/rust-lang/crates.io-index"
3019
-checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9"
3020
-dependencies = [
3021
- "core-foundation-sys",
3022
- "libc",
3023
-]
7250
+checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254"
3024 7251
 
3025 7252
 [[package]]
3026
-name = "system-configuration-sys"
3027
-version = "0.6.0"
7253
+name = "unicode-xid"
7254
+version = "0.2.6"
3028 7255
 source = "registry+https://github.com/rust-lang/crates.io-index"
3029
-checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
3030
-dependencies = [
3031
- "core-foundation-sys",
3032
- "libc",
3033
-]
7256
+checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
3034 7257
 
3035 7258
 [[package]]
3036
-name = "sysv64"
3037
-version = "0.1.0"
7259
+name = "universal-hash"
7260
+version = "0.6.1"
7261
+source = "registry+https://github.com/rust-lang/crates.io-index"
7262
+checksum = "f4987bdc12753382e0bec4a65c50738ffaabc998b9cdd1f952fb5f39b0048a96"
3038 7263
 dependencies = [
3039
- "proc-macro2",
3040
- "quote",
3041
- "syn 2.0.107",
7264
+ "crypto-common 0.2.2",
7265
+ "ctutils",
3042 7266
 ]
3043 7267
 
3044 7268
 [[package]]
3045
-name = "tempfile"
3046
-version = "3.23.0"
7269
+name = "untrusted"
7270
+version = "0.9.0"
3047 7271
 source = "registry+https://github.com/rust-lang/crates.io-index"
3048
-checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"
3049
-dependencies = [
3050
- "fastrand",
3051
- "getrandom 0.3.4",
3052
- "once_cell",
3053
- "rustix",
3054
- "windows-sys 0.61.2",
3055
-]
7272
+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
3056 7273
 
3057 7274
 [[package]]
3058
-name = "termcolor"
3059
-version = "1.4.1"
7275
+name = "unty"
7276
+version = "0.0.4"
3060 7277
 source = "registry+https://github.com/rust-lang/crates.io-index"
3061
-checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
3062
-dependencies = [
3063
- "winapi-util",
3064
-]
7278
+checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae"
3065 7279
 
3066 7280
 [[package]]
3067
-name = "terminal_size"
3068
-version = "0.1.17"
7281
+name = "url"
7282
+version = "2.5.8"
3069 7283
 source = "registry+https://github.com/rust-lang/crates.io-index"
3070
-checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df"
7284
+checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed"
3071 7285
 dependencies = [
3072
- "libc",
3073
- "winapi",
7286
+ "form_urlencoded",
7287
+ "idna",
7288
+ "percent-encoding",
7289
+ "serde",
3074 7290
 ]
3075 7291
 
3076 7292
 [[package]]
3077
-name = "textwrap"
3078
-version = "0.11.0"
7293
+name = "usvg"
7294
+version = "0.45.1"
3079 7295
 source = "registry+https://github.com/rust-lang/crates.io-index"
3080
-checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
7296
+checksum = "80be9b06fbae3b8b303400ab20778c80bbaf338f563afe567cf3c9eea17b47ef"
3081 7297
 dependencies = [
3082
- "unicode-width",
7298
+ "base64",
7299
+ "data-url",
7300
+ "flate2",
7301
+ "fontdb",
7302
+ "imagesize",
7303
+ "kurbo",
7304
+ "log",
7305
+ "pico-args",
7306
+ "roxmltree",
7307
+ "rustybuzz",
7308
+ "simplecss",
7309
+ "siphasher",
7310
+ "strict-num",
7311
+ "svgtypes",
7312
+ "tiny-skia-path",
7313
+ "unicode-bidi",
7314
+ "unicode-script",
7315
+ "unicode-vo",
7316
+ "xmlwriter",
3083 7317
 ]
3084 7318
 
3085 7319
 [[package]]
3086
-name = "textwrap"
3087
-version = "0.15.2"
7320
+name = "utf-8"
7321
+version = "0.7.6"
3088 7322
 source = "registry+https://github.com/rust-lang/crates.io-index"
3089
-checksum = "b7b3e525a49ec206798b40326a44121291b530c963cfb01018f63e135bac543d"
3090
-dependencies = [
3091
- "smawk",
3092
- "unicode-linebreak",
3093
- "unicode-width",
3094
-]
7323
+checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
3095 7324
 
3096 7325
 [[package]]
3097
-name = "thiserror"
3098
-version = "1.0.69"
7326
+name = "utf8_iter"
7327
+version = "1.0.4"
3099 7328
 source = "registry+https://github.com/rust-lang/crates.io-index"
3100
-checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
3101
-dependencies = [
3102
- "thiserror-impl 1.0.69",
3103
-]
7329
+checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
3104 7330
 
3105 7331
 [[package]]
3106
-name = "thiserror"
3107
-version = "2.0.17"
7332
+name = "utf8parse"
7333
+version = "0.2.2"
3108 7334
 source = "registry+https://github.com/rust-lang/crates.io-index"
3109
-checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
7335
+checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
7336
+
7337
+[[package]]
7338
+name = "util"
7339
+version = "0.1.0"
7340
+source = "git+https://github.com/zed-industries/zed?rev=876ec5a8a074ba83cce2129ed4d76b59c05a37e9#876ec5a8a074ba83cce2129ed4d76b59c05a37e9"
3110 7341
 dependencies = [
3111
- "thiserror-impl 2.0.17",
7342
+ "anyhow",
7343
+ "async-fs",
7344
+ "async_zip",
7345
+ "collections",
7346
+ "command-fds",
7347
+ "dirs",
7348
+ "dunce",
7349
+ "futures",
7350
+ "futures-lite 1.13.0",
7351
+ "globset",
7352
+ "gpui_util",
7353
+ "itertools 0.14.0",
7354
+ "libc",
7355
+ "log",
7356
+ "mach2 0.5.0",
7357
+ "nix 0.29.0",
7358
+ "percent-encoding",
7359
+ "regex",
7360
+ "rust-embed",
7361
+ "schemars",
7362
+ "serde",
7363
+ "serde_json",
7364
+ "serde_json_lenient",
7365
+ "shlex 1.3.0",
7366
+ "smol",
7367
+ "take-until",
7368
+ "tempfile",
7369
+ "tendril",
7370
+ "unicase",
7371
+ "url",
7372
+ "walkdir",
7373
+ "which",
3112 7374
 ]
3113 7375
 
3114 7376
 [[package]]
3115
-name = "thiserror-impl"
3116
-version = "1.0.69"
3117
-source = "registry+https://github.com/rust-lang/crates.io-index"
3118
-checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
7377
+name = "util_macros"
7378
+version = "0.1.0"
7379
+source = "git+https://github.com/zed-industries/zed?rev=876ec5a8a074ba83cce2129ed4d76b59c05a37e9#876ec5a8a074ba83cce2129ed4d76b59c05a37e9"
3119 7380
 dependencies = [
3120
- "proc-macro2",
7381
+ "perf",
3121 7382
  "quote",
3122
- "syn 2.0.107",
7383
+ "syn",
3123 7384
 ]
3124 7385
 
3125 7386
 [[package]]
3126
-name = "thiserror-impl"
3127
-version = "2.0.17"
7387
+name = "uuid"
7388
+version = "1.23.4"
3128 7389
 source = "registry+https://github.com/rust-lang/crates.io-index"
3129
-checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
7390
+checksum = "bf80a72845275afea99e7f2b434723d3bc7e38470fcd1c7ed39a599c73319a53"
3130 7391
 dependencies = [
3131
- "proc-macro2",
3132
- "quote",
3133
- "syn 2.0.107",
7392
+ "getrandom 0.4.3",
7393
+ "js-sys",
7394
+ "serde_core",
7395
+ "sha1_smol",
7396
+ "wasm-bindgen",
3134 7397
 ]
3135 7398
 
3136 7399
 [[package]]
3137
-name = "time"
3138
-version = "0.3.44"
7400
+name = "v_frame"
7401
+version = "0.3.9"
3139 7402
 source = "registry+https://github.com/rust-lang/crates.io-index"
3140
-checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d"
7403
+checksum = "666b7727c8875d6ab5db9533418d7c764233ac9c0cff1d469aec8fa127597be2"
3141 7404
 dependencies = [
3142
- "deranged",
3143
- "itoa",
3144
- "num-conv",
3145
- "powerfmt",
3146
- "serde",
3147
- "time-core",
3148
- "time-macros",
7405
+ "aligned-vec",
7406
+ "num-traits",
7407
+ "wasm-bindgen",
3149 7408
 ]
3150 7409
 
3151 7410
 [[package]]
3152
-name = "time-core"
3153
-version = "0.1.6"
7411
+name = "valuable"
7412
+version = "0.1.1"
3154 7413
 source = "registry+https://github.com/rust-lang/crates.io-index"
3155
-checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b"
7414
+checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
3156 7415
 
3157 7416
 [[package]]
3158
-name = "time-macros"
3159
-version = "0.2.24"
7417
+name = "value-bag"
7418
+version = "1.12.0"
3160 7419
 source = "registry+https://github.com/rust-lang/crates.io-index"
3161
-checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3"
7420
+checksum = "7ba6f5989077681266825251a52748b8c1d8a4ad098cc37e440103d0ea717fc0"
3162 7421
 dependencies = [
3163
- "num-conv",
3164
- "time-core",
7422
+ "value-bag-serde1",
7423
+ "value-bag-sval2",
3165 7424
 ]
3166 7425
 
3167 7426
 [[package]]
3168
-name = "tinystr"
3169
-version = "0.8.1"
7427
+name = "value-bag-serde1"
7428
+version = "1.12.0"
3170 7429
 source = "registry+https://github.com/rust-lang/crates.io-index"
3171
-checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b"
7430
+checksum = "16530907bfe2999a1773ca5900a65101e092c70f642f25cc23ca0c43573262c5"
3172 7431
 dependencies = [
3173
- "displaydoc",
3174
- "zerovec",
7432
+ "erased-serde",
7433
+ "serde_core",
7434
+ "serde_fmt",
3175 7435
 ]
3176 7436
 
3177 7437
 [[package]]
3178
-name = "tinyvec"
3179
-version = "1.10.0"
7438
+name = "value-bag-sval2"
7439
+version = "1.12.0"
3180 7440
 source = "registry+https://github.com/rust-lang/crates.io-index"
3181
-checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa"
7441
+checksum = "d00ae130edd690eaa877e4f40605d534790d1cf1d651e7685bd6a144521b251f"
3182 7442
 dependencies = [
3183
- "tinyvec_macros",
7443
+ "sval",
7444
+ "sval_buffer",
7445
+ "sval_dynamic",
7446
+ "sval_fmt",
7447
+ "sval_json",
7448
+ "sval_ref",
7449
+ "sval_serde",
3184 7450
 ]
3185 7451
 
3186 7452
 [[package]]
3187
-name = "tinyvec_macros"
3188
-version = "0.1.1"
7453
+name = "version_check"
7454
+version = "0.9.5"
3189 7455
 source = "registry+https://github.com/rust-lang/crates.io-index"
3190
-checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
7456
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
3191 7457
 
3192 7458
 [[package]]
3193
-name = "tokio"
3194
-version = "1.48.0"
7459
+name = "vswhom"
7460
+version = "0.1.0"
3195 7461
 source = "registry+https://github.com/rust-lang/crates.io-index"
3196
-checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408"
7462
+checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b"
3197 7463
 dependencies = [
3198
- "bytes",
3199 7464
  "libc",
3200
- "mio",
3201
- "pin-project-lite",
3202
- "socket2 0.6.1",
3203
- "tokio-macros",
3204
- "windows-sys 0.61.2",
7465
+ "vswhom-sys",
3205 7466
 ]
3206 7467
 
3207 7468
 [[package]]
3208
-name = "tokio-macros"
3209
-version = "2.6.0"
7469
+name = "vswhom-sys"
7470
+version = "0.1.3"
3210 7471
 source = "registry+https://github.com/rust-lang/crates.io-index"
3211
-checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5"
7472
+checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150"
3212 7473
 dependencies = [
3213
- "proc-macro2",
3214
- "quote",
3215
- "syn 2.0.107",
7474
+ "cc",
7475
+ "libc",
3216 7476
 ]
3217 7477
 
3218 7478
 [[package]]
3219
-name = "tokio-rustls"
3220
-version = "0.24.1"
7479
+name = "waker-fn"
7480
+version = "1.2.0"
3221 7481
 source = "registry+https://github.com/rust-lang/crates.io-index"
3222
-checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
3223
-dependencies = [
3224
- "rustls 0.21.12",
3225
- "tokio",
3226
-]
7482
+checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7"
3227 7483
 
3228 7484
 [[package]]
3229
-name = "tokio-rustls"
3230
-version = "0.26.4"
7485
+name = "walkdir"
7486
+version = "2.5.0"
3231 7487
 source = "registry+https://github.com/rust-lang/crates.io-index"
3232
-checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61"
7488
+checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
3233 7489
 dependencies = [
3234
- "rustls 0.23.36",
3235
- "tokio",
7490
+ "same-file",
7491
+ "winapi-util",
3236 7492
 ]
3237 7493
 
3238 7494
 [[package]]
3239
-name = "tokio-util"
3240
-version = "0.7.16"
7495
+name = "want"
7496
+version = "0.3.1"
3241 7497
 source = "registry+https://github.com/rust-lang/crates.io-index"
3242
-checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5"
7498
+checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
3243 7499
 dependencies = [
3244
- "bytes",
3245
- "futures-core",
3246
- "futures-sink",
3247
- "pin-project-lite",
3248
- "tokio",
7500
+ "try-lock",
3249 7501
 ]
3250 7502
 
3251 7503
 [[package]]
3252
-name = "tower"
3253
-version = "0.5.2"
7504
+name = "wasi"
7505
+version = "0.11.1+wasi-snapshot-preview1"
3254 7506
 source = "registry+https://github.com/rust-lang/crates.io-index"
3255
-checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
3256
-dependencies = [
3257
- "futures-core",
3258
- "futures-util",
3259
- "pin-project-lite",
3260
- "sync_wrapper 1.0.2",
3261
- "tokio",
3262
- "tower-layer",
3263
- "tower-service",
3264
-]
7507
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
3265 7508
 
3266 7509
 [[package]]
3267
-name = "tower-http"
3268
-version = "0.6.8"
7510
+name = "wasip2"
7511
+version = "1.0.4+wasi-0.2.12"
3269 7512
 source = "registry+https://github.com/rust-lang/crates.io-index"
3270
-checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8"
7513
+checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487"
3271 7514
 dependencies = [
3272
- "async-compression",
3273
- "bitflags 2.10.0",
3274
- "bytes",
3275
- "futures-core",
3276
- "futures-util",
3277
- "http 1.3.1",
3278
- "http-body 1.0.1",
3279
- "http-body-util",
3280
- "iri-string",
3281
- "pin-project-lite",
3282
- "tokio",
3283
- "tokio-util",
3284
- "tower",
3285
- "tower-layer",
3286
- "tower-service",
7515
+ "wit-bindgen",
3287 7516
 ]
3288 7517
 
3289 7518
 [[package]]
3290
-name = "tower-layer"
3291
-version = "0.3.3"
3292
-source = "registry+https://github.com/rust-lang/crates.io-index"
3293
-checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e"
3294
-
3295
-[[package]]
3296
-name = "tower-service"
3297
-version = "0.3.3"
3298
-source = "registry+https://github.com/rust-lang/crates.io-index"
3299
-checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3"
3300
-
3301
-[[package]]
3302
-name = "tracing"
3303
-version = "0.1.41"
7519
+name = "wasm-bindgen"
7520
+version = "0.2.126"
3304 7521
 source = "registry+https://github.com/rust-lang/crates.io-index"
3305
-checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0"
7522
+checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4"
3306 7523
 dependencies = [
3307
- "pin-project-lite",
3308
- "tracing-core",
7524
+ "cfg-if",
7525
+ "once_cell",
7526
+ "rustversion",
7527
+ "wasm-bindgen-macro",
7528
+ "wasm-bindgen-shared",
3309 7529
 ]
3310 7530
 
3311 7531
 [[package]]
3312
-name = "tracing-core"
3313
-version = "0.1.34"
7532
+name = "wasm-bindgen-futures"
7533
+version = "0.4.76"
3314 7534
 source = "registry+https://github.com/rust-lang/crates.io-index"
3315
-checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678"
7535
+checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d"
3316 7536
 dependencies = [
3317
- "once_cell",
7537
+ "js-sys",
7538
+ "wasm-bindgen",
3318 7539
 ]
3319 7540
 
3320 7541
 [[package]]
3321
-name = "try-lock"
3322
-version = "0.2.5"
7542
+name = "wasm-bindgen-macro"
7543
+version = "0.2.126"
3323 7544
 source = "registry+https://github.com/rust-lang/crates.io-index"
3324
-checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
7545
+checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1"
7546
+dependencies = [
7547
+ "quote",
7548
+ "wasm-bindgen-macro-support",
7549
+]
3325 7550
 
3326 7551
 [[package]]
3327
-name = "typenum"
3328
-version = "1.19.0"
7552
+name = "wasm-bindgen-macro-support"
7553
+version = "0.2.126"
3329 7554
 source = "registry+https://github.com/rust-lang/crates.io-index"
3330
-checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
7555
+checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e"
7556
+dependencies = [
7557
+ "bumpalo",
7558
+ "proc-macro2",
7559
+ "quote",
7560
+ "syn",
7561
+ "wasm-bindgen-shared",
7562
+]
3331 7563
 
3332 7564
 [[package]]
3333
-name = "unicode-ident"
3334
-version = "1.0.19"
7565
+name = "wasm-bindgen-shared"
7566
+version = "0.2.126"
3335 7567
 source = "registry+https://github.com/rust-lang/crates.io-index"
3336
-checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d"
7568
+checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24"
7569
+dependencies = [
7570
+ "unicode-ident",
7571
+]
3337 7572
 
3338 7573
 [[package]]
3339
-name = "unicode-linebreak"
3340
-version = "0.1.5"
7574
+name = "wayland-backend"
7575
+version = "0.3.15"
3341 7576
 source = "registry+https://github.com/rust-lang/crates.io-index"
3342
-checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f"
7577
+checksum = "2857dd20b54e916ec7253b3d6b4d5c4d7d4ca2c33c2e11c6c76a99bd8744755d"
7578
+dependencies = [
7579
+ "cc",
7580
+ "downcast-rs",
7581
+ "rustix 1.1.4",
7582
+ "scoped-tls",
7583
+ "smallvec",
7584
+ "wayland-sys",
7585
+]
3343 7586
 
3344 7587
 [[package]]
3345
-name = "unicode-width"
3346
-version = "0.1.14"
7588
+name = "wayland-client"
7589
+version = "0.31.14"
3347 7590
 source = "registry+https://github.com/rust-lang/crates.io-index"
3348
-checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af"
7591
+checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144"
7592
+dependencies = [
7593
+ "bitflags 2.13.0",
7594
+ "rustix 1.1.4",
7595
+ "wayland-backend",
7596
+ "wayland-scanner",
7597
+]
3349 7598
 
3350 7599
 [[package]]
3351
-name = "unicode-xid"
3352
-version = "0.2.6"
7600
+name = "wayland-cursor"
7601
+version = "0.31.14"
3353 7602
 source = "registry+https://github.com/rust-lang/crates.io-index"
3354
-checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
7603
+checksum = "4a52d18780be9b1314328a3de5f930b73d2200112e3849ca6cb11822793fb34d"
7604
+dependencies = [
7605
+ "rustix 1.1.4",
7606
+ "wayland-client",
7607
+ "xcursor",
7608
+]
3355 7609
 
3356 7610
 [[package]]
3357
-name = "universal-hash"
3358
-version = "0.6.0-rc.10"
7611
+name = "wayland-protocols"
7612
+version = "0.32.13"
3359 7613
 source = "registry+https://github.com/rust-lang/crates.io-index"
3360
-checksum = "058482a494bb3c9c39447d8b40a3a0f38ebb3dccaf02c5a2d681e69035f8da11"
7614
+checksum = "23d0c813de3daa2ed6520af85a3bd49b0e722a3078506899aa9686fea58dc4b6"
3361 7615
 dependencies = [
3362
- "crypto-common",
3363
- "subtle",
7616
+ "bitflags 2.13.0",
7617
+ "wayland-backend",
7618
+ "wayland-client",
7619
+ "wayland-scanner",
3364 7620
 ]
3365 7621
 
3366 7622
 [[package]]
3367
-name = "untrusted"
3368
-version = "0.9.0"
7623
+name = "wayland-protocols-plasma"
7624
+version = "0.3.12"
3369 7625
 source = "registry+https://github.com/rust-lang/crates.io-index"
3370
-checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
7626
+checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91"
7627
+dependencies = [
7628
+ "bitflags 2.13.0",
7629
+ "wayland-backend",
7630
+ "wayland-client",
7631
+ "wayland-protocols",
7632
+ "wayland-scanner",
7633
+]
3371 7634
 
3372 7635
 [[package]]
3373
-name = "unty"
3374
-version = "0.0.4"
7636
+name = "wayland-protocols-wlr"
7637
+version = "0.3.12"
3375 7638
 source = "registry+https://github.com/rust-lang/crates.io-index"
3376
-checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae"
7639
+checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234"
7640
+dependencies = [
7641
+ "bitflags 2.13.0",
7642
+ "wayland-backend",
7643
+ "wayland-client",
7644
+ "wayland-protocols",
7645
+ "wayland-scanner",
7646
+]
3377 7647
 
3378 7648
 [[package]]
3379
-name = "url"
3380
-version = "2.5.7"
7649
+name = "wayland-scanner"
7650
+version = "0.31.10"
3381 7651
 source = "registry+https://github.com/rust-lang/crates.io-index"
3382
-checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b"
7652
+checksum = "9c324a910fd86ebdc364a3e61ec1f11737d3b1d6c273c0239ee8ff4bc0d24b4a"
3383 7653
 dependencies = [
3384
- "form_urlencoded",
3385
- "idna",
3386
- "percent-encoding",
3387
- "serde",
7654
+ "proc-macro2",
7655
+ "quick-xml 0.39.4",
7656
+ "quote",
3388 7657
 ]
3389 7658
 
3390 7659
 [[package]]
3391
-name = "utf8_iter"
3392
-version = "1.0.4"
7660
+name = "wayland-sys"
7661
+version = "0.31.11"
3393 7662
 source = "registry+https://github.com/rust-lang/crates.io-index"
3394
-checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
7663
+checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be"
7664
+dependencies = [
7665
+ "dlib",
7666
+ "log",
7667
+ "once_cell",
7668
+ "pkg-config",
7669
+]
3395 7670
 
3396 7671
 [[package]]
3397
-name = "utf8parse"
3398
-version = "0.2.2"
7672
+name = "web-sys"
7673
+version = "0.3.103"
3399 7674
 source = "registry+https://github.com/rust-lang/crates.io-index"
3400
-checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
7675
+checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141"
7676
+dependencies = [
7677
+ "js-sys",
7678
+ "wasm-bindgen",
7679
+]
3401 7680
 
3402 7681
 [[package]]
3403
-name = "uuid"
3404
-version = "1.19.0"
7682
+name = "web-time"
7683
+version = "1.1.0"
3405 7684
 source = "registry+https://github.com/rust-lang/crates.io-index"
3406
-checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a"
7685
+checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
3407 7686
 dependencies = [
3408
- "getrandom 0.3.4",
3409 7687
  "js-sys",
3410 7688
  "wasm-bindgen",
3411 7689
 ]
3412 7690
 
3413 7691
 [[package]]
3414
-name = "vec_map"
3415
-version = "0.8.2"
7692
+name = "webpki-root-certs"
7693
+version = "1.0.8"
3416 7694
 source = "registry+https://github.com/rust-lang/crates.io-index"
3417
-checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
7695
+checksum = "0d46a5a140e6f7afeccd8eae97eff335163939eac8b929834875168b29b3d267"
7696
+dependencies = [
7697
+ "rustls-pki-types",
7698
+]
3418 7699
 
3419 7700
 [[package]]
3420
-name = "version_check"
3421
-version = "0.9.5"
7701
+name = "weezl"
7702
+version = "0.1.12"
3422 7703
 source = "registry+https://github.com/rust-lang/crates.io-index"
3423
-checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
7704
+checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88"
3424 7705
 
3425 7706
 [[package]]
3426
-name = "walkdir"
3427
-version = "2.5.0"
3428
-source = "registry+https://github.com/rust-lang/crates.io-index"
3429
-checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
7707
+name = "wgpu"
7708
+version = "29.0.3"
7709
+source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88"
3430 7710
 dependencies = [
3431
- "same-file",
3432
- "winapi-util",
7711
+ "arrayvec",
7712
+ "bitflags 2.13.0",
7713
+ "bytemuck",
7714
+ "cfg-if",
7715
+ "cfg_aliases",
7716
+ "document-features",
7717
+ "hashbrown 0.16.1",
7718
+ "js-sys",
7719
+ "log",
7720
+ "naga",
7721
+ "parking_lot",
7722
+ "portable-atomic",
7723
+ "profiling",
7724
+ "raw-window-handle",
7725
+ "smallvec",
7726
+ "static_assertions",
7727
+ "wasm-bindgen",
7728
+ "wasm-bindgen-futures",
7729
+ "web-sys",
7730
+ "wgpu-core",
7731
+ "wgpu-hal",
7732
+ "wgpu-types",
3433 7733
 ]
3434 7734
 
3435 7735
 [[package]]
3436
-name = "want"
3437
-version = "0.3.1"
3438
-source = "registry+https://github.com/rust-lang/crates.io-index"
3439
-checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
7736
+name = "wgpu-core"
7737
+version = "29.0.3"
7738
+source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88"
3440 7739
 dependencies = [
3441
- "try-lock",
7740
+ "arrayvec",
7741
+ "bit-set",
7742
+ "bit-vec",
7743
+ "bitflags 2.13.0",
7744
+ "bytemuck",
7745
+ "cfg_aliases",
7746
+ "document-features",
7747
+ "hashbrown 0.16.1",
7748
+ "indexmap",
7749
+ "log",
7750
+ "naga",
7751
+ "once_cell",
7752
+ "parking_lot",
7753
+ "portable-atomic",
7754
+ "profiling",
7755
+ "raw-window-handle",
7756
+ "rustc-hash 1.1.0",
7757
+ "smallvec",
7758
+ "thiserror 2.0.18",
7759
+ "wgpu-core-deps-apple",
7760
+ "wgpu-core-deps-emscripten",
7761
+ "wgpu-core-deps-windows-linux-android",
7762
+ "wgpu-hal",
7763
+ "wgpu-naga-bridge",
7764
+ "wgpu-types",
3442 7765
 ]
3443 7766
 
3444 7767
 [[package]]
3445
-name = "wasi"
3446
-version = "0.11.1+wasi-snapshot-preview1"
3447
-source = "registry+https://github.com/rust-lang/crates.io-index"
3448
-checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
7768
+name = "wgpu-core-deps-apple"
7769
+version = "29.0.3"
7770
+source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88"
7771
+dependencies = [
7772
+ "wgpu-hal",
7773
+]
3449 7774
 
3450 7775
 [[package]]
3451
-name = "wasip2"
3452
-version = "1.0.1+wasi-0.2.4"
3453
-source = "registry+https://github.com/rust-lang/crates.io-index"
3454
-checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7"
7776
+name = "wgpu-core-deps-emscripten"
7777
+version = "29.0.3"
7778
+source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88"
3455 7779
 dependencies = [
3456
- "wit-bindgen 0.46.0",
7780
+ "wgpu-hal",
3457 7781
 ]
3458 7782
 
3459 7783
 [[package]]
3460
-name = "wasip3"
3461
-version = "0.4.0+wasi-0.3.0-rc-2026-01-06"
3462
-source = "registry+https://github.com/rust-lang/crates.io-index"
3463
-checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5"
7784
+name = "wgpu-core-deps-windows-linux-android"
7785
+version = "29.0.3"
7786
+source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88"
3464 7787
 dependencies = [
3465
- "wit-bindgen 0.51.0",
7788
+ "wgpu-hal",
3466 7789
 ]
3467 7790
 
3468 7791
 [[package]]
3469
-name = "wasm-bindgen"
3470
-version = "0.2.104"
3471
-source = "registry+https://github.com/rust-lang/crates.io-index"
3472
-checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d"
7792
+name = "wgpu-hal"
7793
+version = "29.0.3"
7794
+source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88"
3473 7795
 dependencies = [
3474
- "cfg-if 1.0.4",
7796
+ "android_system_properties",
7797
+ "arrayvec",
7798
+ "ash",
7799
+ "bit-set",
7800
+ "bitflags 2.13.0",
7801
+ "block2 0.6.2",
7802
+ "bytemuck",
7803
+ "cfg-if",
7804
+ "cfg_aliases",
7805
+ "glow",
7806
+ "glutin_wgl_sys",
7807
+ "gpu-allocator",
7808
+ "gpu-descriptor",
7809
+ "hashbrown 0.16.1",
7810
+ "js-sys",
7811
+ "khronos-egl",
7812
+ "libc",
7813
+ "libloading",
7814
+ "log",
7815
+ "naga",
7816
+ "ndk-sys",
7817
+ "objc2 0.6.4",
7818
+ "objc2-core-foundation",
7819
+ "objc2-foundation 0.3.2",
7820
+ "objc2-metal 0.3.2",
7821
+ "objc2-quartz-core 0.3.2",
3475 7822
  "once_cell",
3476
- "rustversion",
3477
- "wasm-bindgen-macro",
3478
- "wasm-bindgen-shared",
7823
+ "ordered-float",
7824
+ "parking_lot",
7825
+ "portable-atomic",
7826
+ "portable-atomic-util",
7827
+ "profiling",
7828
+ "range-alloc",
7829
+ "raw-window-handle",
7830
+ "raw-window-metal",
7831
+ "renderdoc-sys",
7832
+ "smallvec",
7833
+ "thiserror 2.0.18",
7834
+ "wasm-bindgen",
7835
+ "wayland-sys",
7836
+ "web-sys",
7837
+ "wgpu-naga-bridge",
7838
+ "wgpu-types",
7839
+ "windows 0.62.2",
7840
+ "windows-core 0.62.2",
7841
+ "windows-result 0.4.1",
3479 7842
 ]
3480 7843
 
3481 7844
 [[package]]
3482
-name = "wasm-bindgen-backend"
3483
-version = "0.2.104"
3484
-source = "registry+https://github.com/rust-lang/crates.io-index"
3485
-checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19"
7845
+name = "wgpu-naga-bridge"
7846
+version = "29.0.3"
7847
+source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88"
3486 7848
 dependencies = [
3487
- "bumpalo",
3488
- "log",
3489
- "proc-macro2",
3490
- "quote",
3491
- "syn 2.0.107",
3492
- "wasm-bindgen-shared",
7849
+ "naga",
7850
+ "wgpu-types",
3493 7851
 ]
3494 7852
 
3495 7853
 [[package]]
3496
-name = "wasm-bindgen-futures"
3497
-version = "0.4.54"
3498
-source = "registry+https://github.com/rust-lang/crates.io-index"
3499
-checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c"
7854
+name = "wgpu-types"
7855
+version = "29.0.3"
7856
+source = "git+https://github.com/zed-industries/wgpu.git?rev=357a0c56e0070480ad9daea5d2eaa83150b79e88#357a0c56e0070480ad9daea5d2eaa83150b79e88"
3500 7857
 dependencies = [
3501
- "cfg-if 1.0.4",
7858
+ "bitflags 2.13.0",
7859
+ "bytemuck",
3502 7860
  "js-sys",
3503
- "once_cell",
3504
- "wasm-bindgen",
7861
+ "log",
7862
+ "raw-window-handle",
3505 7863
  "web-sys",
3506 7864
 ]
3507 7865
 
3508 7866
 [[package]]
3509
-name = "wasm-bindgen-macro"
3510
-version = "0.2.104"
7867
+name = "which"
7868
+version = "6.0.3"
3511 7869
 source = "registry+https://github.com/rust-lang/crates.io-index"
3512
-checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119"
7870
+checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f"
3513 7871
 dependencies = [
3514
- "quote",
3515
- "wasm-bindgen-macro-support",
7872
+ "either",
7873
+ "home",
7874
+ "rustix 0.38.44",
7875
+ "winsafe",
3516 7876
 ]
3517 7877
 
3518 7878
 [[package]]
3519
-name = "wasm-bindgen-macro-support"
3520
-version = "0.2.104"
7879
+name = "winapi"
7880
+version = "0.3.9"
3521 7881
 source = "registry+https://github.com/rust-lang/crates.io-index"
3522
-checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7"
7882
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
3523 7883
 dependencies = [
3524
- "proc-macro2",
3525
- "quote",
3526
- "syn 2.0.107",
3527
- "wasm-bindgen-backend",
3528
- "wasm-bindgen-shared",
7884
+ "winapi-i686-pc-windows-gnu",
7885
+ "winapi-x86_64-pc-windows-gnu",
3529 7886
 ]
3530 7887
 
3531 7888
 [[package]]
3532
-name = "wasm-bindgen-shared"
3533
-version = "0.2.104"
7889
+name = "winapi-i686-pc-windows-gnu"
7890
+version = "0.4.0"
3534 7891
 source = "registry+https://github.com/rust-lang/crates.io-index"
3535
-checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1"
3536
-dependencies = [
3537
- "unicode-ident",
3538
-]
7892
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
3539 7893
 
3540 7894
 [[package]]
3541
-name = "wasm-encoder"
3542
-version = "0.244.0"
7895
+name = "winapi-util"
7896
+version = "0.1.11"
3543 7897
 source = "registry+https://github.com/rust-lang/crates.io-index"
3544
-checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319"
7898
+checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
3545 7899
 dependencies = [
3546
- "leb128fmt",
3547
- "wasmparser",
7900
+ "windows-sys 0.61.2",
3548 7901
 ]
3549 7902
 
3550 7903
 [[package]]
3551
-name = "wasm-metadata"
3552
-version = "0.244.0"
7904
+name = "winapi-x86_64-pc-windows-gnu"
7905
+version = "0.4.0"
7906
+source = "registry+https://github.com/rust-lang/crates.io-index"
7907
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
7908
+
7909
+[[package]]
7910
+name = "windows"
7911
+version = "0.57.0"
3553 7912
 source = "registry+https://github.com/rust-lang/crates.io-index"
3554
-checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909"
7913
+checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143"
3555 7914
 dependencies = [
3556
- "anyhow",
3557
- "indexmap 2.12.0",
3558
- "wasm-encoder",
3559
- "wasmparser",
7915
+ "windows-core 0.57.0",
7916
+ "windows-targets",
3560 7917
 ]
3561 7918
 
3562 7919
 [[package]]
3563
-name = "wasmparser"
3564
-version = "0.244.0"
7920
+name = "windows"
7921
+version = "0.61.3"
3565 7922
 source = "registry+https://github.com/rust-lang/crates.io-index"
3566
-checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
7923
+checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893"
3567 7924
 dependencies = [
3568
- "bitflags 2.10.0",
3569
- "hashbrown 0.15.5",
3570
- "indexmap 2.12.0",
3571
- "semver",
7925
+ "windows-collections 0.2.0",
7926
+ "windows-core 0.61.2",
7927
+ "windows-future 0.2.1",
7928
+ "windows-link 0.1.3",
7929
+ "windows-numerics 0.2.0",
3572 7930
 ]
3573 7931
 
3574 7932
 [[package]]
3575
-name = "web-sys"
3576
-version = "0.3.81"
7933
+name = "windows"
7934
+version = "0.62.2"
3577 7935
 source = "registry+https://github.com/rust-lang/crates.io-index"
3578
-checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120"
7936
+checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580"
3579 7937
 dependencies = [
3580
- "js-sys",
3581
- "wasm-bindgen",
7938
+ "windows-collections 0.3.2",
7939
+ "windows-core 0.62.2",
7940
+ "windows-future 0.3.2",
7941
+ "windows-numerics 0.3.1",
3582 7942
 ]
3583 7943
 
3584 7944
 [[package]]
3585
-name = "web-time"
3586
-version = "1.1.0"
7945
+name = "windows-capture"
7946
+version = "1.5.0"
3587 7947
 source = "registry+https://github.com/rust-lang/crates.io-index"
3588
-checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
7948
+checksum = "3a4df73e95feddb9ec1a7e9c2ca6323b8c97d5eeeff78d28f1eccdf19c882b24"
3589 7949
 dependencies = [
3590
- "js-sys",
3591
- "wasm-bindgen",
7950
+ "parking_lot",
7951
+ "rayon",
7952
+ "thiserror 2.0.18",
7953
+ "windows 0.61.3",
7954
+ "windows-future 0.2.1",
3592 7955
 ]
3593 7956
 
3594 7957
 [[package]]
3595
-name = "webpki-root-certs"
3596
-version = "1.0.4"
7958
+name = "windows-collections"
7959
+version = "0.2.0"
3597 7960
 source = "registry+https://github.com/rust-lang/crates.io-index"
3598
-checksum = "ee3e3b5f5e80bc89f30ce8d0343bf4e5f12341c51f3e26cbeecbc7c85443e85b"
7961
+checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8"
3599 7962
 dependencies = [
3600
- "rustls-pki-types",
7963
+ "windows-core 0.61.2",
3601 7964
 ]
3602 7965
 
3603 7966
 [[package]]
3604
-name = "webpki-roots"
3605
-version = "0.25.4"
7967
+name = "windows-collections"
7968
+version = "0.3.2"
3606 7969
 source = "registry+https://github.com/rust-lang/crates.io-index"
3607
-checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1"
7970
+checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610"
7971
+dependencies = [
7972
+ "windows-core 0.62.2",
7973
+]
3608 7974
 
3609 7975
 [[package]]
3610
-name = "which"
3611
-version = "3.1.1"
7976
+name = "windows-core"
7977
+version = "0.57.0"
3612 7978
 source = "registry+https://github.com/rust-lang/crates.io-index"
3613
-checksum = "d011071ae14a2f6671d0b74080ae0cd8ebf3a6f8c9589a2cd45f23126fe29724"
7979
+checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d"
3614 7980
 dependencies = [
3615
- "libc",
7981
+ "windows-implement 0.57.0",
7982
+ "windows-interface 0.57.0",
7983
+ "windows-result 0.1.2",
7984
+ "windows-targets",
3616 7985
 ]
3617 7986
 
3618 7987
 [[package]]
3619
-name = "winapi"
3620
-version = "0.3.9"
7988
+name = "windows-core"
7989
+version = "0.61.2"
3621 7990
 source = "registry+https://github.com/rust-lang/crates.io-index"
3622
-checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
7991
+checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
3623 7992
 dependencies = [
3624
- "winapi-i686-pc-windows-gnu",
3625
- "winapi-x86_64-pc-windows-gnu",
7993
+ "windows-implement 0.60.2",
7994
+ "windows-interface 0.59.3",
7995
+ "windows-link 0.1.3",
7996
+ "windows-result 0.3.4",
7997
+ "windows-strings 0.4.2",
3626 7998
 ]
3627 7999
 
3628 8000
 [[package]]
3629
-name = "winapi-i686-pc-windows-gnu"
3630
-version = "0.4.0"
8001
+name = "windows-core"
8002
+version = "0.62.2"
3631 8003
 source = "registry+https://github.com/rust-lang/crates.io-index"
3632
-checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
8004
+checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
8005
+dependencies = [
8006
+ "windows-implement 0.60.2",
8007
+ "windows-interface 0.59.3",
8008
+ "windows-link 0.2.1",
8009
+ "windows-result 0.4.1",
8010
+ "windows-strings 0.5.1",
8011
+]
3633 8012
 
3634 8013
 [[package]]
3635
-name = "winapi-util"
3636
-version = "0.1.11"
8014
+name = "windows-future"
8015
+version = "0.2.1"
3637 8016
 source = "registry+https://github.com/rust-lang/crates.io-index"
3638
-checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
8017
+checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
3639 8018
 dependencies = [
3640
- "windows-sys 0.61.2",
8019
+ "windows-core 0.61.2",
8020
+ "windows-link 0.1.3",
8021
+ "windows-threading 0.1.0",
3641 8022
 ]
3642 8023
 
3643 8024
 [[package]]
3644
-name = "winapi-x86_64-pc-windows-gnu"
3645
-version = "0.4.0"
8025
+name = "windows-future"
8026
+version = "0.3.2"
3646 8027
 source = "registry+https://github.com/rust-lang/crates.io-index"
3647
-checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
8028
+checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb"
8029
+dependencies = [
8030
+ "windows-core 0.62.2",
8031
+ "windows-link 0.2.1",
8032
+ "windows-threading 0.2.1",
8033
+]
3648 8034
 
3649 8035
 [[package]]
3650
-name = "windows-core"
3651
-version = "0.61.2"
8036
+name = "windows-implement"
8037
+version = "0.57.0"
3652 8038
 source = "registry+https://github.com/rust-lang/crates.io-index"
3653
-checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
8039
+checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7"
3654 8040
 dependencies = [
3655
- "windows-implement",
3656
- "windows-interface",
3657
- "windows-link 0.1.3",
3658
- "windows-result",
3659
- "windows-strings",
8041
+ "proc-macro2",
8042
+ "quote",
8043
+ "syn",
3660 8044
 ]
3661 8045
 
3662 8046
 [[package]]
... ...
@@ -3667,7 +8051,18 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
3667 8051
 dependencies = [
3668 8052
  "proc-macro2",
3669 8053
  "quote",
3670
- "syn 2.0.107",
8054
+ "syn",
8055
+]
8056
+
8057
+[[package]]
8058
+name = "windows-interface"
8059
+version = "0.57.0"
8060
+source = "registry+https://github.com/rust-lang/crates.io-index"
8061
+checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7"
8062
+dependencies = [
8063
+ "proc-macro2",
8064
+ "quote",
8065
+ "syn",
3671 8066
 ]
3672 8067
 
3673 8068
 [[package]]
... ...
@@ -3678,7 +8073,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
3678 8073
 dependencies = [
3679 8074
  "proc-macro2",
3680 8075
  "quote",
3681
- "syn 2.0.107",
8076
+ "syn",
3682 8077
 ]
3683 8078
 
3684 8079
 [[package]]
... ...
@@ -3693,6 +8088,26 @@ version = "0.2.1"
3693 8088
 source = "registry+https://github.com/rust-lang/crates.io-index"
3694 8089
 checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
3695 8090
 
8091
+[[package]]
8092
+name = "windows-numerics"
8093
+version = "0.2.0"
8094
+source = "registry+https://github.com/rust-lang/crates.io-index"
8095
+checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
8096
+dependencies = [
8097
+ "windows-core 0.61.2",
8098
+ "windows-link 0.1.3",
8099
+]
8100
+
8101
+[[package]]
8102
+name = "windows-numerics"
8103
+version = "0.3.1"
8104
+source = "registry+https://github.com/rust-lang/crates.io-index"
8105
+checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26"
8106
+dependencies = [
8107
+ "windows-core 0.62.2",
8108
+ "windows-link 0.2.1",
8109
+]
8110
+
3696 8111
 [[package]]
3697 8112
 name = "windows-registry"
3698 8113
 version = "0.5.3"
... ...
@@ -3700,8 +8115,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
3700 8115
 checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e"
3701 8116
 dependencies = [
3702 8117
  "windows-link 0.1.3",
3703
- "windows-result",
3704
- "windows-strings",
8118
+ "windows-result 0.3.4",
8119
+ "windows-strings 0.4.2",
8120
+]
8121
+
8122
+[[package]]
8123
+name = "windows-registry"
8124
+version = "0.6.1"
8125
+source = "registry+https://github.com/rust-lang/crates.io-index"
8126
+checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720"
8127
+dependencies = [
8128
+ "windows-link 0.2.1",
8129
+ "windows-result 0.4.1",
8130
+ "windows-strings 0.5.1",
8131
+]
8132
+
8133
+[[package]]
8134
+name = "windows-result"
8135
+version = "0.1.2"
8136
+source = "registry+https://github.com/rust-lang/crates.io-index"
8137
+checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8"
8138
+dependencies = [
8139
+ "windows-targets",
3705 8140
 ]
3706 8141
 
3707 8142
 [[package]]
... ...
@@ -3714,30 +8149,30 @@ dependencies = [
3714 8149
 ]
3715 8150
 
3716 8151
 [[package]]
3717
-name = "windows-strings"
3718
-version = "0.4.2"
8152
+name = "windows-result"
8153
+version = "0.4.1"
3719 8154
 source = "registry+https://github.com/rust-lang/crates.io-index"
3720
-checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
8155
+checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
3721 8156
 dependencies = [
3722
- "windows-link 0.1.3",
8157
+ "windows-link 0.2.1",
3723 8158
 ]
3724 8159
 
3725 8160
 [[package]]
3726
-name = "windows-sys"
3727
-version = "0.45.0"
8161
+name = "windows-strings"
8162
+version = "0.4.2"
3728 8163
 source = "registry+https://github.com/rust-lang/crates.io-index"
3729
-checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
8164
+checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57"
3730 8165
 dependencies = [
3731
- "windows-targets 0.42.2",
8166
+ "windows-link 0.1.3",
3732 8167
 ]
3733 8168
 
3734 8169
 [[package]]
3735
-name = "windows-sys"
3736
-version = "0.48.0"
8170
+name = "windows-strings"
8171
+version = "0.5.1"
3737 8172
 source = "registry+https://github.com/rust-lang/crates.io-index"
3738
-checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
8173
+checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
3739 8174
 dependencies = [
3740
- "windows-targets 0.48.5",
8175
+ "windows-link 0.2.1",
3741 8176
 ]
3742 8177
 
3743 8178
 [[package]]
... ...
@@ -3746,16 +8181,16 @@ version = "0.52.0"
3746 8181
 source = "registry+https://github.com/rust-lang/crates.io-index"
3747 8182
 checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
3748 8183
 dependencies = [
3749
- "windows-targets 0.52.6",
8184
+ "windows-targets",
3750 8185
 ]
3751 8186
 
3752 8187
 [[package]]
3753 8188
 name = "windows-sys"
3754
-version = "0.60.2"
8189
+version = "0.59.0"
3755 8190
 source = "registry+https://github.com/rust-lang/crates.io-index"
3756
-checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
8191
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
3757 8192
 dependencies = [
3758
- "windows-targets 0.53.5",
8193
+ "windows-targets",
3759 8194
 ]
3760 8195
 
3761 8196
 [[package]]
... ...
@@ -3769,463 +8204,561 @@ dependencies = [
3769 8204
 
3770 8205
 [[package]]
3771 8206
 name = "windows-targets"
3772
-version = "0.42.2"
8207
+version = "0.52.6"
3773 8208
 source = "registry+https://github.com/rust-lang/crates.io-index"
3774
-checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
8209
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
3775 8210
 dependencies = [
3776
- "windows_aarch64_gnullvm 0.42.2",
3777
- "windows_aarch64_msvc 0.42.2",
3778
- "windows_i686_gnu 0.42.2",
3779
- "windows_i686_msvc 0.42.2",
3780
- "windows_x86_64_gnu 0.42.2",
3781
- "windows_x86_64_gnullvm 0.42.2",
3782
- "windows_x86_64_msvc 0.42.2",
8211
+ "windows_aarch64_gnullvm",
8212
+ "windows_aarch64_msvc",
8213
+ "windows_i686_gnu",
8214
+ "windows_i686_gnullvm",
8215
+ "windows_i686_msvc",
8216
+ "windows_x86_64_gnu",
8217
+ "windows_x86_64_gnullvm",
8218
+ "windows_x86_64_msvc",
3783 8219
 ]
3784 8220
 
3785 8221
 [[package]]
3786
-name = "windows-targets"
3787
-version = "0.48.5"
8222
+name = "windows-threading"
8223
+version = "0.1.0"
3788 8224
 source = "registry+https://github.com/rust-lang/crates.io-index"
3789
-checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
8225
+checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
3790 8226
 dependencies = [
3791
- "windows_aarch64_gnullvm 0.48.5",
3792
- "windows_aarch64_msvc 0.48.5",
3793
- "windows_i686_gnu 0.48.5",
3794
- "windows_i686_msvc 0.48.5",
3795
- "windows_x86_64_gnu 0.48.5",
3796
- "windows_x86_64_gnullvm 0.48.5",
3797
- "windows_x86_64_msvc 0.48.5",
8227
+ "windows-link 0.1.3",
3798 8228
 ]
3799 8229
 
3800 8230
 [[package]]
3801
-name = "windows-targets"
3802
-version = "0.52.6"
8231
+name = "windows-threading"
8232
+version = "0.2.1"
3803 8233
 source = "registry+https://github.com/rust-lang/crates.io-index"
3804
-checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
8234
+checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37"
3805 8235
 dependencies = [
3806
- "windows_aarch64_gnullvm 0.52.6",
3807
- "windows_aarch64_msvc 0.52.6",
3808
- "windows_i686_gnu 0.52.6",
3809
- "windows_i686_gnullvm 0.52.6",
3810
- "windows_i686_msvc 0.52.6",
3811
- "windows_x86_64_gnu 0.52.6",
3812
- "windows_x86_64_gnullvm 0.52.6",
3813
- "windows_x86_64_msvc 0.52.6",
8236
+ "windows-link 0.2.1",
3814 8237
 ]
3815 8238
 
3816 8239
 [[package]]
3817
-name = "windows-targets"
3818
-version = "0.53.5"
8240
+name = "windows_aarch64_gnullvm"
8241
+version = "0.52.6"
3819 8242
 source = "registry+https://github.com/rust-lang/crates.io-index"
3820
-checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
3821
-dependencies = [
3822
- "windows-link 0.2.1",
3823
- "windows_aarch64_gnullvm 0.53.1",
3824
- "windows_aarch64_msvc 0.53.1",
3825
- "windows_i686_gnu 0.53.1",
3826
- "windows_i686_gnullvm 0.53.1",
3827
- "windows_i686_msvc 0.53.1",
3828
- "windows_x86_64_gnu 0.53.1",
3829
- "windows_x86_64_gnullvm 0.53.1",
3830
- "windows_x86_64_msvc 0.53.1",
3831
-]
8243
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
3832 8244
 
3833 8245
 [[package]]
3834
-name = "windows_aarch64_gnullvm"
3835
-version = "0.42.2"
8246
+name = "windows_aarch64_msvc"
8247
+version = "0.52.6"
3836 8248
 source = "registry+https://github.com/rust-lang/crates.io-index"
3837
-checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
8249
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
3838 8250
 
3839 8251
 [[package]]
3840
-name = "windows_aarch64_gnullvm"
3841
-version = "0.48.5"
8252
+name = "windows_i686_gnu"
8253
+version = "0.52.6"
3842 8254
 source = "registry+https://github.com/rust-lang/crates.io-index"
3843
-checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
8255
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
3844 8256
 
3845 8257
 [[package]]
3846
-name = "windows_aarch64_gnullvm"
8258
+name = "windows_i686_gnullvm"
3847 8259
 version = "0.52.6"
3848 8260
 source = "registry+https://github.com/rust-lang/crates.io-index"
3849
-checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
8261
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
3850 8262
 
3851 8263
 [[package]]
3852
-name = "windows_aarch64_gnullvm"
3853
-version = "0.53.1"
8264
+name = "windows_i686_msvc"
8265
+version = "0.52.6"
3854 8266
 source = "registry+https://github.com/rust-lang/crates.io-index"
3855
-checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
8267
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
3856 8268
 
3857 8269
 [[package]]
3858
-name = "windows_aarch64_msvc"
3859
-version = "0.42.2"
8270
+name = "windows_x86_64_gnu"
8271
+version = "0.52.6"
3860 8272
 source = "registry+https://github.com/rust-lang/crates.io-index"
3861
-checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
8273
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
3862 8274
 
3863 8275
 [[package]]
3864
-name = "windows_aarch64_msvc"
3865
-version = "0.48.5"
8276
+name = "windows_x86_64_gnullvm"
8277
+version = "0.52.6"
3866 8278
 source = "registry+https://github.com/rust-lang/crates.io-index"
3867
-checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
8279
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
3868 8280
 
3869 8281
 [[package]]
3870
-name = "windows_aarch64_msvc"
8282
+name = "windows_x86_64_msvc"
3871 8283
 version = "0.52.6"
3872 8284
 source = "registry+https://github.com/rust-lang/crates.io-index"
3873
-checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
8285
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
3874 8286
 
3875 8287
 [[package]]
3876
-name = "windows_aarch64_msvc"
3877
-version = "0.53.1"
8288
+name = "winnow"
8289
+version = "0.7.15"
3878 8290
 source = "registry+https://github.com/rust-lang/crates.io-index"
3879
-checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
8291
+checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
8292
+dependencies = [
8293
+ "memchr",
8294
+]
3880 8295
 
3881 8296
 [[package]]
3882
-name = "windows_i686_gnu"
3883
-version = "0.42.2"
8297
+name = "winnow"
8298
+version = "1.0.3"
3884 8299
 source = "registry+https://github.com/rust-lang/crates.io-index"
3885
-checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
8300
+checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1"
8301
+dependencies = [
8302
+ "memchr",
8303
+]
3886 8304
 
3887 8305
 [[package]]
3888
-name = "windows_i686_gnu"
3889
-version = "0.48.5"
8306
+name = "winreg"
8307
+version = "0.55.0"
8308
+source = "registry+https://github.com/rust-lang/crates.io-index"
8309
+checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97"
8310
+dependencies = [
8311
+ "cfg-if",
8312
+ "windows-sys 0.59.0",
8313
+]
8314
+
8315
+[[package]]
8316
+name = "winsafe"
8317
+version = "0.0.19"
3890 8318
 source = "registry+https://github.com/rust-lang/crates.io-index"
3891
-checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
8319
+checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904"
3892 8320
 
3893 8321
 [[package]]
3894
-name = "windows_i686_gnu"
3895
-version = "0.52.6"
8322
+name = "wio"
8323
+version = "0.2.2"
3896 8324
 source = "registry+https://github.com/rust-lang/crates.io-index"
3897
-checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
8325
+checksum = "5d129932f4644ac2396cb456385cbf9e63b5b30c6e8dc4820bdca4eb082037a5"
8326
+dependencies = [
8327
+ "winapi",
8328
+]
3898 8329
 
3899 8330
 [[package]]
3900
-name = "windows_i686_gnu"
3901
-version = "0.53.1"
8331
+name = "wit-bindgen"
8332
+version = "0.57.1"
3902 8333
 source = "registry+https://github.com/rust-lang/crates.io-index"
3903
-checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
8334
+checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e"
3904 8335
 
3905 8336
 [[package]]
3906
-name = "windows_i686_gnullvm"
3907
-version = "0.52.6"
8337
+name = "writeable"
8338
+version = "0.6.3"
3908 8339
 source = "registry+https://github.com/rust-lang/crates.io-index"
3909
-checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
8340
+checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4"
3910 8341
 
3911 8342
 [[package]]
3912
-name = "windows_i686_gnullvm"
3913
-version = "0.53.1"
8343
+name = "x11"
8344
+version = "2.21.0"
3914 8345
 source = "registry+https://github.com/rust-lang/crates.io-index"
3915
-checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
8346
+checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e"
8347
+dependencies = [
8348
+ "libc",
8349
+ "pkg-config",
8350
+]
3916 8351
 
3917 8352
 [[package]]
3918
-name = "windows_i686_msvc"
3919
-version = "0.42.2"
8353
+name = "x11-clipboard"
8354
+version = "0.9.3"
3920 8355
 source = "registry+https://github.com/rust-lang/crates.io-index"
3921
-checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
8356
+checksum = "662d74b3d77e396b8e5beb00b9cad6a9eccf40b2ef68cc858784b14c41d535a3"
8357
+dependencies = [
8358
+ "libc",
8359
+ "x11rb",
8360
+]
3922 8361
 
3923 8362
 [[package]]
3924
-name = "windows_i686_msvc"
3925
-version = "0.48.5"
8363
+name = "x11rb"
8364
+version = "0.13.2"
3926 8365
 source = "registry+https://github.com/rust-lang/crates.io-index"
3927
-checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
8366
+checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414"
8367
+dependencies = [
8368
+ "as-raw-xcb-connection",
8369
+ "gethostname",
8370
+ "libc",
8371
+ "rustix 1.1.4",
8372
+ "x11rb-protocol",
8373
+ "xcursor",
8374
+]
3928 8375
 
3929 8376
 [[package]]
3930
-name = "windows_i686_msvc"
3931
-version = "0.52.6"
8377
+name = "x11rb-protocol"
8378
+version = "0.13.2"
3932 8379
 source = "registry+https://github.com/rust-lang/crates.io-index"
3933
-checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
8380
+checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd"
3934 8381
 
3935 8382
 [[package]]
3936
-name = "windows_i686_msvc"
3937
-version = "0.53.1"
8383
+name = "x509-cert"
8384
+version = "0.2.5"
3938 8385
 source = "registry+https://github.com/rust-lang/crates.io-index"
3939
-checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
8386
+checksum = "1301e935010a701ae5f8655edc0ad17c44bad3ac5ce8c39185f75453b720ae94"
8387
+dependencies = [
8388
+ "const-oid 0.9.6",
8389
+ "der",
8390
+ "sha1 0.10.6",
8391
+ "signature",
8392
+ "spki",
8393
+ "tls_codec",
8394
+]
3940 8395
 
3941 8396
 [[package]]
3942
-name = "windows_x86_64_gnu"
3943
-version = "0.42.2"
8397
+name = "xcb"
8398
+version = "1.7.0"
3944 8399
 source = "registry+https://github.com/rust-lang/crates.io-index"
3945
-checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
8400
+checksum = "ee4c580d8205abb0a5cf4eb7e927bd664e425b6c3263f9c5310583da96970cf6"
8401
+dependencies = [
8402
+ "bitflags 1.3.2",
8403
+ "libc",
8404
+ "quick-xml 0.30.0",
8405
+ "x11",
8406
+]
3946 8407
 
3947 8408
 [[package]]
3948
-name = "windows_x86_64_gnu"
3949
-version = "0.48.5"
3950
-source = "registry+https://github.com/rust-lang/crates.io-index"
3951
-checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
8409
+name = "xcode"
8410
+version = "0.1.0"
8411
+dependencies = [
8412
+ "adi",
8413
+ "grandslam",
8414
+ "plist",
8415
+ "plist-macros",
8416
+ "reqwest",
8417
+ "serde",
8418
+ "sys-locale",
8419
+ "thiserror 2.0.18",
8420
+ "uuid",
8421
+]
3952 8422
 
3953 8423
 [[package]]
3954
-name = "windows_x86_64_gnu"
3955
-version = "0.52.6"
8424
+name = "xcursor"
8425
+version = "0.3.10"
3956 8426
 source = "registry+https://github.com/rust-lang/crates.io-index"
3957
-checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
8427
+checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b"
3958 8428
 
3959 8429
 [[package]]
3960
-name = "windows_x86_64_gnu"
3961
-version = "0.53.1"
3962
-source = "registry+https://github.com/rust-lang/crates.io-index"
3963
-checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
8430
+name = "xim-ctext"
8431
+version = "0.3.0"
8432
+source = "git+https://github.com/zed-industries/xim-rs.git?rev=16f35a2c881b815a2b6cdfd6687988e84f8447d8#16f35a2c881b815a2b6cdfd6687988e84f8447d8"
8433
+dependencies = [
8434
+ "encoding_rs",
8435
+]
3964 8436
 
3965 8437
 [[package]]
3966
-name = "windows_x86_64_gnullvm"
3967
-version = "0.42.2"
3968
-source = "registry+https://github.com/rust-lang/crates.io-index"
3969
-checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
8438
+name = "xim-parser"
8439
+version = "0.2.1"
8440
+source = "git+https://github.com/zed-industries/xim-rs.git?rev=16f35a2c881b815a2b6cdfd6687988e84f8447d8#16f35a2c881b815a2b6cdfd6687988e84f8447d8"
8441
+dependencies = [
8442
+ "bitflags 2.13.0",
8443
+]
3970 8444
 
3971 8445
 [[package]]
3972
-name = "windows_x86_64_gnullvm"
3973
-version = "0.48.5"
8446
+name = "xkbcommon"
8447
+version = "0.8.0"
3974 8448
 source = "registry+https://github.com/rust-lang/crates.io-index"
3975
-checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
8449
+checksum = "8d66ca9352cbd4eecbbc40871d8a11b4ac8107cfc528a6e14d7c19c69d0e1ac9"
8450
+dependencies = [
8451
+ "as-raw-xcb-connection",
8452
+ "libc",
8453
+ "memmap2",
8454
+ "xkeysym",
8455
+]
3976 8456
 
3977 8457
 [[package]]
3978
-name = "windows_x86_64_gnullvm"
3979
-version = "0.52.6"
8458
+name = "xkeysym"
8459
+version = "0.2.1"
3980 8460
 source = "registry+https://github.com/rust-lang/crates.io-index"
3981
-checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
8461
+checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56"
3982 8462
 
3983 8463
 [[package]]
3984
-name = "windows_x86_64_gnullvm"
3985
-version = "0.53.1"
8464
+name = "xml-rs"
8465
+version = "0.8.28"
3986 8466
 source = "registry+https://github.com/rust-lang/crates.io-index"
3987
-checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
8467
+checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f"
3988 8468
 
3989 8469
 [[package]]
3990
-name = "windows_x86_64_msvc"
3991
-version = "0.42.2"
8470
+name = "xmlwriter"
8471
+version = "0.1.0"
3992 8472
 source = "registry+https://github.com/rust-lang/crates.io-index"
3993
-checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
8473
+checksum = "ec7a2a501ed189703dba8b08142f057e887dfc4b2cc4db2d343ac6376ba3e0b9"
3994 8474
 
3995 8475
 [[package]]
3996
-name = "windows_x86_64_msvc"
3997
-version = "0.48.5"
8476
+name = "xpc-connection-sys"
8477
+version = "0.1.1"
8478
+source = "git+https://github.com/Dadoum/xpc-connection-rs?branch=patch-1#d73bc344d2c5928ba1e0f2cdad115227ada3982c"
8479
+dependencies = [
8480
+ "bindgen 0.72.1",
8481
+]
8482
+
8483
+[[package]]
8484
+name = "y4m"
8485
+version = "0.8.0"
3998 8486
 source = "registry+https://github.com/rust-lang/crates.io-index"
3999
-checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
8487
+checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448"
4000 8488
 
4001 8489
 [[package]]
4002
-name = "windows_x86_64_msvc"
4003
-version = "0.52.6"
8490
+name = "yansi"
8491
+version = "1.0.1"
4004 8492
 source = "registry+https://github.com/rust-lang/crates.io-index"
4005
-checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
8493
+checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
4006 8494
 
4007 8495
 [[package]]
4008
-name = "windows_x86_64_msvc"
4009
-version = "0.53.1"
8496
+name = "yazi"
8497
+version = "0.2.1"
4010 8498
 source = "registry+https://github.com/rust-lang/crates.io-index"
4011
-checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
8499
+checksum = "e01738255b5a16e78bbb83e7fbba0a1e7dd506905cfc53f4622d89015a03fbb5"
4012 8500
 
4013 8501
 [[package]]
4014
-name = "winreg"
4015
-version = "0.50.0"
8502
+name = "yeslogic-fontconfig-sys"
8503
+version = "6.0.1"
4016 8504
 source = "registry+https://github.com/rust-lang/crates.io-index"
4017
-checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
8505
+checksum = "1d8b8abf912b9a29ff112e1671c97c33636903d13a69712037190e6805af4f76"
4018 8506
 dependencies = [
4019
- "cfg-if 1.0.4",
4020
- "windows-sys 0.48.0",
8507
+ "dlib",
8508
+ "once_cell",
8509
+ "pkg-config",
4021 8510
 ]
4022 8511
 
4023 8512
 [[package]]
4024
-name = "wit-bindgen"
4025
-version = "0.46.0"
8513
+name = "yoke"
8514
+version = "0.8.3"
4026 8515
 source = "registry+https://github.com/rust-lang/crates.io-index"
4027
-checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59"
8516
+checksum = "709fe23a0424b6a435d82152b1bd3fdfb0833487d5fa90d05d42762a9891fef5"
8517
+dependencies = [
8518
+ "stable_deref_trait",
8519
+ "yoke-derive",
8520
+ "zerofrom",
8521
+]
4028 8522
 
4029 8523
 [[package]]
4030
-name = "wit-bindgen"
4031
-version = "0.51.0"
8524
+name = "yoke-derive"
8525
+version = "0.8.2"
4032 8526
 source = "registry+https://github.com/rust-lang/crates.io-index"
4033
-checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
8527
+checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e"
4034 8528
 dependencies = [
4035
- "wit-bindgen-rust-macro",
8529
+ "proc-macro2",
8530
+ "quote",
8531
+ "syn",
8532
+ "synstructure",
4036 8533
 ]
4037 8534
 
4038 8535
 [[package]]
4039
-name = "wit-bindgen-core"
4040
-version = "0.51.0"
8536
+name = "zbus"
8537
+version = "5.16.0"
4041 8538
 source = "registry+https://github.com/rust-lang/crates.io-index"
4042
-checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc"
8539
+checksum = "eee682d202a77e4a9f3b2c2bdf48a7b28af5c08c34ddf66f98c93e5e39464285"
4043 8540
 dependencies = [
4044
- "anyhow",
4045
- "heck 0.5.0",
4046
- "wit-parser",
8541
+ "async-broadcast",
8542
+ "async-executor",
8543
+ "async-io",
8544
+ "async-lock",
8545
+ "async-process",
8546
+ "async-recursion",
8547
+ "async-task",
8548
+ "async-trait",
8549
+ "blocking",
8550
+ "enumflags2",
8551
+ "event-listener",
8552
+ "futures-core",
8553
+ "futures-lite 2.6.1",
8554
+ "hex",
8555
+ "libc",
8556
+ "ordered-stream",
8557
+ "rustix 1.1.4",
8558
+ "serde",
8559
+ "serde_repr",
8560
+ "tracing",
8561
+ "uds_windows",
8562
+ "uuid",
8563
+ "windows-sys 0.61.2",
8564
+ "winnow 1.0.3",
8565
+ "zbus_macros",
8566
+ "zbus_names",
8567
+ "zvariant",
4047 8568
 ]
4048 8569
 
4049 8570
 [[package]]
4050
-name = "wit-bindgen-rust"
4051
-version = "0.51.0"
8571
+name = "zbus-lockstep"
8572
+version = "0.5.2"
4052 8573
 source = "registry+https://github.com/rust-lang/crates.io-index"
4053
-checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
8574
+checksum = "6998de05217a084b7578728a9443d04ea4cd80f2a0839b8d78770b76ccd45863"
4054 8575
 dependencies = [
4055
- "anyhow",
4056
- "heck 0.5.0",
4057
- "indexmap 2.12.0",
4058
- "prettyplease",
4059
- "syn 2.0.107",
4060
- "wasm-metadata",
4061
- "wit-bindgen-core",
4062
- "wit-component",
8576
+ "zbus_xml",
8577
+ "zvariant",
4063 8578
 ]
4064 8579
 
4065 8580
 [[package]]
4066
-name = "wit-bindgen-rust-macro"
4067
-version = "0.51.0"
8581
+name = "zbus-lockstep-macros"
8582
+version = "0.5.2"
4068 8583
 source = "registry+https://github.com/rust-lang/crates.io-index"
4069
-checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a"
8584
+checksum = "10da05367f3a7b7553c8cdf8fa91aee6b64afebe32b51c95177957efc47ca3a0"
4070 8585
 dependencies = [
4071
- "anyhow",
4072
- "prettyplease",
4073 8586
  "proc-macro2",
4074 8587
  "quote",
4075
- "syn 2.0.107",
4076
- "wit-bindgen-core",
4077
- "wit-bindgen-rust",
8588
+ "syn",
8589
+ "zbus-lockstep",
8590
+ "zbus_xml",
8591
+ "zvariant",
4078 8592
 ]
4079 8593
 
4080 8594
 [[package]]
4081
-name = "wit-component"
4082
-version = "0.244.0"
8595
+name = "zbus_macros"
8596
+version = "5.16.0"
4083 8597
 source = "registry+https://github.com/rust-lang/crates.io-index"
4084
-checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
8598
+checksum = "adf1bd45a81a103745b1757754762a26e8cd01e4532e4d6c8ec431624b80d1d6"
4085 8599
 dependencies = [
4086
- "anyhow",
4087
- "bitflags 2.10.0",
4088
- "indexmap 2.12.0",
4089
- "log",
4090
- "serde",
4091
- "serde_derive",
4092
- "serde_json",
4093
- "wasm-encoder",
4094
- "wasm-metadata",
4095
- "wasmparser",
4096
- "wit-parser",
8600
+ "proc-macro-crate",
8601
+ "proc-macro2",
8602
+ "quote",
8603
+ "syn",
8604
+ "zbus_names",
8605
+ "zvariant",
8606
+ "zvariant_utils",
4097 8607
 ]
4098 8608
 
4099 8609
 [[package]]
4100
-name = "wit-parser"
4101
-version = "0.244.0"
8610
+name = "zbus_names"
8611
+version = "4.3.2"
4102 8612
 source = "registry+https://github.com/rust-lang/crates.io-index"
4103
-checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736"
8613
+checksum = "7074f3e50b894eac91750142016d30d0a89be8e67dbfd9704fb875825760e52d"
4104 8614
 dependencies = [
4105
- "anyhow",
4106
- "id-arena",
4107
- "indexmap 2.12.0",
4108
- "log",
4109
- "semver",
4110 8615
  "serde",
4111
- "serde_derive",
4112
- "serde_json",
4113
- "unicode-xid",
4114
- "wasmparser",
8616
+ "winnow 1.0.3",
8617
+ "zvariant",
4115 8618
 ]
4116 8619
 
4117 8620
 [[package]]
4118
-name = "writeable"
4119
-version = "0.6.1"
8621
+name = "zbus_xml"
8622
+version = "5.1.1"
4120 8623
 source = "registry+https://github.com/rust-lang/crates.io-index"
4121
-checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb"
4122
-
4123
-[[package]]
4124
-name = "xcode"
4125
-version = "0.1.0"
8624
+checksum = "a8067892e940ed1727dea64690378601603b31d62dfde019a5335fbb7c0e0ed9"
4126 8625
 dependencies = [
4127
- "adi",
4128
- "grandslam",
4129
- "plist",
4130
- "plist-macros",
4131
- "reqwest 0.13.1",
8626
+ "quick-xml 0.39.4",
4132 8627
  "serde",
4133
- "sys-locale",
4134
- "thiserror 2.0.17",
4135
- "uuid",
8628
+ "zbus_names",
8629
+ "zvariant",
4136 8630
 ]
4137 8631
 
4138 8632
 [[package]]
4139
-name = "xpc-connection-sys"
4140
-version = "0.1.1"
4141
-source = "registry+https://github.com/rust-lang/crates.io-index"
4142
-checksum = "e9e73f03a600d0244f3dce6a5c65af535e9cc9f3d19aae00359a1c44d4e14b6c"
8633
+name = "zed-font-kit"
8634
+version = "0.14.1-zed"
8635
+source = "git+https://github.com/zed-industries/font-kit?rev=94b0f28166665e8fd2f53ff6d268a14955c82269#94b0f28166665e8fd2f53ff6d268a14955c82269"
4143 8636
 dependencies = [
4144
- "bindgen",
8637
+ "bitflags 2.13.0",
8638
+ "byteorder",
8639
+ "core-foundation 0.10.0",
8640
+ "core-graphics 0.24.0",
8641
+ "core-text",
8642
+ "dirs",
8643
+ "dwrote",
8644
+ "float-ord",
8645
+ "freetype-sys",
8646
+ "lazy_static",
8647
+ "libc",
8648
+ "log",
8649
+ "pathfinder_geometry",
8650
+ "pathfinder_simd",
8651
+ "walkdir",
8652
+ "winapi",
8653
+ "yeslogic-fontconfig-sys",
4145 8654
 ]
4146 8655
 
4147 8656
 [[package]]
4148
-name = "yansi"
4149
-version = "1.0.1"
4150
-source = "registry+https://github.com/rust-lang/crates.io-index"
4151
-checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
8657
+name = "zed-scap"
8658
+version = "0.0.8-zed"
8659
+source = "git+https://github.com/zed-industries/scap?rev=4afea48c3b002197176fb19cd0f9b180dd36eaac#4afea48c3b002197176fb19cd0f9b180dd36eaac"
8660
+dependencies = [
8661
+ "anyhow",
8662
+ "cocoa 0.25.0",
8663
+ "core-graphics-helmer-fork",
8664
+ "log",
8665
+ "objc",
8666
+ "rand 0.8.6",
8667
+ "screencapturekit",
8668
+ "screencapturekit-sys",
8669
+ "sysinfo",
8670
+ "tao-core-video-sys",
8671
+ "windows 0.61.3",
8672
+ "windows-capture",
8673
+ "x11",
8674
+ "xcb",
8675
+]
4152 8676
 
4153 8677
 [[package]]
4154
-name = "yoke"
4155
-version = "0.8.0"
4156
-source = "registry+https://github.com/rust-lang/crates.io-index"
4157
-checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc"
8678
+name = "zed-xim"
8679
+version = "0.4.0-zed"
8680
+source = "git+https://github.com/zed-industries/xim-rs.git?rev=16f35a2c881b815a2b6cdfd6687988e84f8447d8#16f35a2c881b815a2b6cdfd6687988e84f8447d8"
4158 8681
 dependencies = [
4159
- "serde",
4160
- "stable_deref_trait",
4161
- "yoke-derive",
4162
- "zerofrom",
8682
+ "ahash",
8683
+ "hashbrown 0.14.5",
8684
+ "log",
8685
+ "x11rb",
8686
+ "xim-ctext",
8687
+ "xim-parser",
4163 8688
 ]
4164 8689
 
4165 8690
 [[package]]
4166
-name = "yoke-derive"
4167
-version = "0.8.0"
8691
+name = "zeno"
8692
+version = "0.3.3"
4168 8693
 source = "registry+https://github.com/rust-lang/crates.io-index"
4169
-checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6"
4170
-dependencies = [
4171
- "proc-macro2",
4172
- "quote",
4173
- "syn 2.0.107",
4174
- "synstructure",
4175
-]
8694
+checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524"
4176 8695
 
4177 8696
 [[package]]
4178 8697
 name = "zerocopy"
4179
-version = "0.8.27"
8698
+version = "0.8.53"
4180 8699
 source = "registry+https://github.com/rust-lang/crates.io-index"
4181
-checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c"
8700
+checksum = "75726053136156d419e285b9b7eddaaea9e3fea6ce32eed44a89901f0bd98de1"
4182 8701
 dependencies = [
4183 8702
  "zerocopy-derive",
4184 8703
 ]
4185 8704
 
4186 8705
 [[package]]
4187 8706
 name = "zerocopy-derive"
4188
-version = "0.8.27"
8707
+version = "0.8.53"
4189 8708
 source = "registry+https://github.com/rust-lang/crates.io-index"
4190
-checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831"
8709
+checksum = "4714fd92cf900833d49538023a9b3915155210801d1c1169eba513b2addefd71"
4191 8710
 dependencies = [
4192 8711
  "proc-macro2",
4193 8712
  "quote",
4194
- "syn 2.0.107",
8713
+ "syn",
4195 8714
 ]
4196 8715
 
4197 8716
 [[package]]
4198 8717
 name = "zerofrom"
4199
-version = "0.1.6"
8718
+version = "0.1.8"
4200 8719
 source = "registry+https://github.com/rust-lang/crates.io-index"
4201
-checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
8720
+checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272"
4202 8721
 dependencies = [
4203 8722
  "zerofrom-derive",
4204 8723
 ]
4205 8724
 
4206 8725
 [[package]]
4207 8726
 name = "zerofrom-derive"
4208
-version = "0.1.6"
8727
+version = "0.1.7"
4209 8728
 source = "registry+https://github.com/rust-lang/crates.io-index"
4210
-checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
8729
+checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1"
4211 8730
 dependencies = [
4212 8731
  "proc-macro2",
4213 8732
  "quote",
4214
- "syn 2.0.107",
8733
+ "syn",
4215 8734
  "synstructure",
4216 8735
 ]
4217 8736
 
4218 8737
 [[package]]
4219 8738
 name = "zeroize"
4220
-version = "1.8.2"
8739
+version = "1.9.0"
8740
+source = "registry+https://github.com/rust-lang/crates.io-index"
8741
+checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e"
8742
+dependencies = [
8743
+ "zeroize_derive",
8744
+]
8745
+
8746
+[[package]]
8747
+name = "zeroize_derive"
8748
+version = "1.5.0"
4221 8749
 source = "registry+https://github.com/rust-lang/crates.io-index"
4222
-checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
8750
+checksum = "3c50655cbb0fe3fc43170059e702f1ce5e19b84cec58dc87b037a09935c2f328"
8751
+dependencies = [
8752
+ "proc-macro2",
8753
+ "quote",
8754
+ "syn",
8755
+]
4223 8756
 
4224 8757
 [[package]]
4225 8758
 name = "zerotrie"
4226
-version = "0.2.2"
8759
+version = "0.2.4"
4227 8760
 source = "registry+https://github.com/rust-lang/crates.io-index"
4228
-checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595"
8761
+checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf"
4229 8762
 dependencies = [
4230 8763
  "displaydoc",
4231 8764
  "yoke",
... ...
@@ -4234,9 +8767,9 @@ dependencies = [
4234 8767
 
4235 8768
 [[package]]
4236 8769
 name = "zerovec"
4237
-version = "0.11.4"
8770
+version = "0.11.6"
4238 8771
 source = "registry+https://github.com/rust-lang/crates.io-index"
4239
-checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b"
8772
+checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239"
4240 8773
 dependencies = [
4241 8774
  "yoke",
4242 8775
  "zerofrom",
... ...
@@ -4245,24 +8778,124 @@ dependencies = [
4245 8778
 
4246 8779
 [[package]]
4247 8780
 name = "zerovec-derive"
4248
-version = "0.11.1"
8781
+version = "0.11.3"
8782
+source = "registry+https://github.com/rust-lang/crates.io-index"
8783
+checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555"
8784
+dependencies = [
8785
+ "proc-macro2",
8786
+ "quote",
8787
+ "syn",
8788
+]
8789
+
8790
+[[package]]
8791
+name = "zlog"
8792
+version = "0.1.0"
8793
+source = "git+https://github.com/zed-industries/zed?rev=876ec5a8a074ba83cce2129ed4d76b59c05a37e9#876ec5a8a074ba83cce2129ed4d76b59c05a37e9"
8794
+dependencies = [
8795
+ "anyhow",
8796
+ "chrono",
8797
+ "collections",
8798
+ "log",
8799
+]
8800
+
8801
+[[package]]
8802
+name = "zmij"
8803
+version = "1.0.21"
8804
+source = "registry+https://github.com/rust-lang/crates.io-index"
8805
+checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
8806
+
8807
+[[package]]
8808
+name = "ztracing"
8809
+version = "0.1.0"
8810
+source = "git+https://github.com/zed-industries/zed?rev=876ec5a8a074ba83cce2129ed4d76b59c05a37e9#876ec5a8a074ba83cce2129ed4d76b59c05a37e9"
8811
+dependencies = [
8812
+ "tracing",
8813
+ "tracing-subscriber",
8814
+ "zlog",
8815
+ "ztracing_macro",
8816
+]
8817
+
8818
+[[package]]
8819
+name = "ztracing_macro"
8820
+version = "0.1.0"
8821
+source = "git+https://github.com/zed-industries/zed?rev=876ec5a8a074ba83cce2129ed4d76b59c05a37e9#876ec5a8a074ba83cce2129ed4d76b59c05a37e9"
8822
+
8823
+[[package]]
8824
+name = "zune-core"
8825
+version = "0.4.12"
8826
+source = "registry+https://github.com/rust-lang/crates.io-index"
8827
+checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a"
8828
+
8829
+[[package]]
8830
+name = "zune-core"
8831
+version = "0.5.1"
8832
+source = "registry+https://github.com/rust-lang/crates.io-index"
8833
+checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9"
8834
+
8835
+[[package]]
8836
+name = "zune-inflate"
8837
+version = "0.2.54"
8838
+source = "registry+https://github.com/rust-lang/crates.io-index"
8839
+checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02"
8840
+dependencies = [
8841
+ "simd-adler32",
8842
+]
8843
+
8844
+[[package]]
8845
+name = "zune-jpeg"
8846
+version = "0.4.21"
8847
+source = "registry+https://github.com/rust-lang/crates.io-index"
8848
+checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713"
8849
+dependencies = [
8850
+ "zune-core 0.4.12",
8851
+]
8852
+
8853
+[[package]]
8854
+name = "zune-jpeg"
8855
+version = "0.5.15"
8856
+source = "registry+https://github.com/rust-lang/crates.io-index"
8857
+checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296"
8858
+dependencies = [
8859
+ "zune-core 0.5.1",
8860
+]
8861
+
8862
+[[package]]
8863
+name = "zvariant"
8864
+version = "5.12.0"
8865
+source = "registry+https://github.com/rust-lang/crates.io-index"
8866
+checksum = "a192a0bde63360d77a7523c833d4b4ce6070a927e2c53246e4c540b1a3e27be0"
8867
+dependencies = [
8868
+ "endi",
8869
+ "enumflags2",
8870
+ "serde",
8871
+ "serde_bytes",
8872
+ "winnow 1.0.3",
8873
+ "zvariant_derive",
8874
+ "zvariant_utils",
8875
+]
8876
+
8877
+[[package]]
8878
+name = "zvariant_derive"
8879
+version = "5.12.0"
4249 8880
 source = "registry+https://github.com/rust-lang/crates.io-index"
4250
-checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f"
8881
+checksum = "90bc6cde9c01c511074be97f7ccb6c19d0da89e3f8662e812e999dcfd4638737"
4251 8882
 dependencies = [
8883
+ "proc-macro-crate",
4252 8884
  "proc-macro2",
4253 8885
  "quote",
4254
- "syn 2.0.107",
8886
+ "syn",
8887
+ "zvariant_utils",
4255 8888
 ]
4256 8889
 
4257 8890
 [[package]]
4258
-name = "zip"
4259
-version = "0.6.6"
8891
+name = "zvariant_utils"
8892
+version = "3.4.0"
4260 8893
 source = "registry+https://github.com/rust-lang/crates.io-index"
4261
-checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261"
8894
+checksum = "1e8535915cfa75547e559d8c68e8139909a4aeee076831e4ef7fc59d8172c4d6"
4262 8895
 dependencies = [
4263
- "byteorder",
4264
- "crc32fast",
4265
- "crossbeam-utils",
4266
- "flate2",
4267
- "time",
8896
+ "proc-macro2",
8897
+ "quote",
8898
+ "serde",
8899
+ "syn",
8900
+ "winnow 1.0.3",
4268 8901
 ]
... ...
@@ -18,10 +18,10 @@ reqwest = { version = "0.13", features = ["rustls", "query", "gzip"] }
18 18
 thiserror = "2"
19 19
 tokio = { version = "1", features = ["rt", "rt-multi-thread", "macros"] }
20 20
 
21
-aes = "0.9.0-rc.4"
22
-aes-gcm = "0.11.0-rc.3"
21
+aes = "0.9.1"
22
+aes-gcm = "0.11.0-rc.4"
23 23
 cbc = { version = "0.2.0-rc.3", features = ["alloc"] }
24
-hmac = "0.13.0-rc.5"
25
-pbkdf2 = "0.13.0-rc.9"
26
-sha1 = "0.11.0-rc.5"
27
-sha2 = "0.11.0-rc.5"
24
+hmac = "0.13.0"
25
+pbkdf2 = "0.13.0"
26
+sha1 = "0.11.0"
27
+sha2 = "0.11.0"
... ...
@@ -0,0 +1,23 @@
1
+Lucide License
2
+
3
+ISC License
4
+
5
+Copyright (c) 2026 Lucide Icons and Contributors
6
+
7
+Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
8
+
9
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
10
+
11
+The following Lucide icons are derived from the Feather project:
12
+
13
+airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
14
+
15
+The MIT License (MIT) (for the icons listed above)
16
+
17
+Copyright (c) 2013-present Cole Bemis
18
+
19
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
20
+
21
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
22
+
23
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
... ...
@@ -68,7 +68,9 @@ A reimplementation of Xcode maybe some day? (but Rust GUI situation is not great
68 68
 
69 69
 ### super-sideloader
70 70
 
71
-That Sideloader rewrite in Rust I postponed. Currently, it's full of apple-account's testing code.
71
+That Sideloader rewrite in Rust I postponed. Work-in-progress.
72
+
73
+The icons have been taken from the Lucide icon set. See the license in [LICENSE-lucide.md].
72 74
 
73 75
 ### there should be a separate xcode api crate
74 76
 
... ...
@@ -5,5 +5,5 @@ edition = "2024"
5 5
 
6 6
 [dependencies]
7 7
 adi.workspace = true
8
-xpc-connection-sys = "0.1.1"
8
+xpc-connection-sys = { git = "https://github.com/Dadoum/xpc-connection-rs", branch="patch-1" }
9 9
 block = "0.1.6"
... ...
@@ -1 +1,3 @@
1
-pub trait FairPlayProxy {}
1
+pub trait FairPlayProxy {
2
+    
3
+}
... ...
@@ -4,23 +4,6 @@ version = "0.1.0"
4 4
 edition = "2021"
5 5
 
6 6
 [dependencies]
7
-adi.workspace = true
8
-android-coreadi.workspace = true
9
-elf-loader.workspace = true
10
-grandslam.workspace = true
11
-itunes.workspace = true
12
-xcode.workspace = true
13
-
14
-tokio.workspace = true
15
-libc = "0.2.176"
16
-reqwest = "0.13.1"
17 7
 env_logger = "0.11.8"
18
-base64 = "0.22.1"
19
-serde = { version = "1.0.228", features = ["derive"] }
20
-
21
-[target.'cfg(target_os = "macos")'.dependencies]
22
-adid-proxy.workspace = true
23
-
24
-[target.'cfg(target_os = "windows")'.dependencies]
25
-library-coreadi.workspace = true
26
-dlopen2 = "0.8.2"
8
+gpui = { package = "gpui", git = "https://github.com/gpui-ce/gpui-ce" }
9
+gpui_platform = { git = "https://github.com/gpui-ce/gpui-ce", features = ["font-kit", "x11", "wayland", "runtime_shaders"] }
... ...
@@ -0,0 +1,4 @@
1
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+  <path d="M5 12h14"/>
3
+  <path d="m12 5 7 7-7 7"/>
4
+</svg>
... ...
@@ -0,0 +1,3 @@
1
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+  <path d="m6 9 6 6 6-6"/>
3
+</svg>
... ...
@@ -0,0 +1,3 @@
1
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+  <path d="m18 15-6-6-6 6"/>
3
+</svg>
... ...
@@ -0,0 +1,3 @@
1
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+  <path d="M5 12h14"/>
3
+</svg>
... ...
@@ -0,0 +1,4 @@
1
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+  <path d="M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"/>
3
+  <path d="m15 5 4 4"/>
4
+</svg>
... ...
@@ -0,0 +1,4 @@
1
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+  <path d="M5 12h14"/>
3
+  <path d="M12 5v14"/>
4
+</svg>
... ...
@@ -0,0 +1,6 @@
1
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+  <path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"/>
3
+  <path d="M21 3v5h-5"/>
4
+  <path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"/>
5
+  <path d="M8 16H3v5"/>
6
+</svg>
... ...
@@ -0,0 +1,6 @@
1
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+  <path d="M20 7h-9"/>
3
+  <path d="M14 17H5"/>
4
+  <circle cx="17" cy="17" r="3"/>
5
+  <circle cx="7" cy="7" r="3"/>
6
+</svg>
... ...
@@ -0,0 +1,4 @@
1
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+  <path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"/>
3
+  <circle cx="12" cy="12" r="3"/>
4
+</svg>
... ...
@@ -0,0 +1,3 @@
1
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
2
+  <path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94z"/>
3
+</svg>
... ...
@@ -0,0 +1,45 @@
1
+use gpui::{AssetSource, SharedString};
2
+use std::borrow::Cow;
3
+
4
+pub(crate) struct Assets;
5
+
6
+impl AssetSource for Assets {
7
+    fn load(&self, path: &str) -> gpui::Result<Option<Cow<'static, [u8]>>> {
8
+        let bytes = match path {
9
+            "icons/chevron-down.svg" => {
10
+                include_bytes!("../assets/icons/chevron-down.svg").as_slice()
11
+            }
12
+            "icons/chevron-up.svg" => include_bytes!("../assets/icons/chevron-up.svg").as_slice(),
13
+            "icons/settings-2.svg" => include_bytes!("../assets/icons/settings-2.svg").as_slice(),
14
+            "icons/settings.svg" => include_bytes!("../assets/icons/settings.svg").as_slice(),
15
+            "icons/wrench.svg" => include_bytes!("../assets/icons/wrench.svg").as_slice(),
16
+            "icons/plus.svg" => include_bytes!("../assets/icons/plus.svg").as_slice(),
17
+            "icons/minus.svg" => include_bytes!("../assets/icons/minus.svg").as_slice(),
18
+            "icons/pencil.svg" => include_bytes!("../assets/icons/pencil.svg").as_slice(),
19
+            "icons/refresh-cw.svg" => include_bytes!("../assets/icons/refresh-cw.svg").as_slice(),
20
+            "icons/arrow-right.svg" => include_bytes!("../assets/icons/arrow-right.svg").as_slice(),
21
+            _ => return Ok(None),
22
+        };
23
+
24
+        Ok(Some(Cow::Borrowed(bytes)))
25
+    }
26
+
27
+    fn list(&self, path: &str) -> gpui::Result<Vec<SharedString>> {
28
+        if path == "icons" {
29
+            Ok(vec![
30
+                "chevron-down.svg".into(),
31
+                "chevron-up.svg".into(),
32
+                "settings-2.svg".into(),
33
+                "settings.svg".into(),
34
+                "wrench.svg".into(),
35
+                "plus.svg".into(),
36
+                "minus.svg".into(),
37
+                "pencil.svg".into(),
38
+                "refresh-cw.svg".into(),
39
+                "arrow-right.svg".into(),
40
+            ])
41
+        } else {
42
+            Ok(Vec::new())
43
+        }
44
+    }
45
+}
... ...
@@ -0,0 +1,19 @@
1
+pub(crate) const WINDOW_WIDTH: f32 = 1180.;
2
+pub(crate) const WINDOW_HEIGHT: f32 = 500.;
3
+pub(crate) const SETTINGS_WINDOW_WIDTH: f32 = 520.;
4
+pub(crate) const TEAM_SETTINGS_WINDOW_HEIGHT: f32 = 560.;
5
+pub(crate) const APP_SETTINGS_WINDOW_WIDTH: f32 = 520.;
6
+pub(crate) const APP_SETTINGS_WINDOW_HEIGHT: f32 = 560.;
7
+pub(crate) const ADI_SETTINGS_WINDOW_WIDTH: f32 = 500.;
8
+pub(crate) const ADI_SETTINGS_WINDOW_HEIGHT: f32 = 500.;
9
+pub(crate) const ADI_BACKEND_POPOVER_WIDTH: f32 = 420.;
10
+pub(crate) const ADI_BACKEND_POPOVER_MAX_HEIGHT: f32 = 240.;
11
+pub(crate) const ADI_BACKEND_COMBO_HEIGHT: f32 = 64.;
12
+pub(crate) const COMBO_POPOVER_WIDTH: f32 = 337.;
13
+pub(crate) const COMBO_POPOVER_MAX_HEIGHT: f32 = 280.;
14
+pub(crate) const COMBO_ITEM_HEIGHT: f32 = 76.;
15
+pub(crate) const COMBO_POPOVER_OFFSET_Y: f32 = COMBO_ITEM_HEIGHT + 8.;
16
+pub(crate) const PLUS_CONNECTOR_WIDTH: f32 = 36.;
17
+pub(crate) const SIDELOAD_CONNECTOR_WIDTH: f32 = 180.;
18
+pub(crate) const SIDELOAD_BUTTON_WIDTH: f32 = 112.;
19
+pub(crate) const SIDELOAD_STATUS_HEIGHT: f32 = 25.;
... ...
@@ -0,0 +1,189 @@
1
+use crate::models::{
2
+    AccountOption, AdiBackendOption, AppIdOption, AppOption, DeviceOption, MachineIdentity,
3
+    PatchOption, TeamOption,
4
+};
5
+use std::env;
6
+
7
+pub(crate) fn sample_accounts() -> Vec<AccountOption> {
8
+    let env_apple_id = env::var("APPLE_ID").unwrap_or_else(|_| "Add Apple ID".to_string());
9
+    let env_detail = if env_apple_id == "Add Apple ID" {
10
+        "No saved credentials".to_string()
11
+    } else {
12
+        "Loaded from APPLE_ID".to_string()
13
+    };
14
+
15
+    vec![
16
+        AccountOption {
17
+            label: "Primary Apple ID".into(),
18
+            apple_id: env_apple_id.into(),
19
+            detail: env_detail.into(),
20
+            status: "Available".into(),
21
+            teams: vec![
22
+                TeamOption {
23
+                    name: "Personal Team".into(),
24
+                    identifier: "LOCAL-PERSONAL".into(),
25
+                    role: "Free".into(),
26
+                    app_ids: sample_app_ids("LOCAL-PERSONAL"),
27
+                },
28
+                TeamOption {
29
+                    name: "Developer Program".into(),
30
+                    identifier: "TEAMID1234".into(),
31
+                    role: "Paid".into(),
32
+                    app_ids: sample_app_ids("TEAMID1234"),
33
+                },
34
+            ],
35
+        },
36
+        AccountOption {
37
+            label: "Work Apple ID".into(),
38
+            apple_id: "developer@example.com".into(),
39
+            detail: "Example account placeholder".into(),
40
+            status: "Demo".into(),
41
+            teams: vec![
42
+                TeamOption {
43
+                    name: "Example Apps LLC".into(),
44
+                    identifier: "EXAMPL3APP".into(),
45
+                    role: "Admin".into(),
46
+                    app_ids: sample_app_ids("EXAMPL3APP"),
47
+                },
48
+                TeamOption {
49
+                    name: "Client Signing Team".into(),
50
+                    identifier: "CL13NTTEAM".into(),
51
+                    role: "Member".into(),
52
+                    app_ids: sample_app_ids("CL13NTTEAM"),
53
+                },
54
+            ],
55
+        },
56
+    ]
57
+}
58
+
59
+fn sample_app_ids(team_id: &str) -> Vec<AppIdOption> {
60
+    vec![
61
+        AppIdOption {
62
+            name: "Sample App".into(),
63
+            identifier: format!("{team_id}.com.example.sample").into(),
64
+            kind: "Explicit App ID".into(),
65
+        },
66
+        AppIdOption {
67
+            name: "Wildcard Development".into(),
68
+            identifier: format!("{team_id}.*").into(),
69
+            kind: "Wildcard App ID".into(),
70
+        },
71
+    ]
72
+}
73
+
74
+pub(crate) fn sample_apps() -> Vec<AppOption> {
75
+    let ipa_path = env::var("IPA_PATH").unwrap_or_else(|_| "/Applications/Sample.ipa".to_string());
76
+    let bundle_id = env::var("BUNDLE_ID").unwrap_or_else(|_| "com.example.sample".to_string());
77
+
78
+    vec![
79
+        AppOption {
80
+            name: "Sample IPA".into(),
81
+            bundle_id: bundle_id.into(),
82
+            version: "1.4.2".into(),
83
+            build: "82".into(),
84
+            path: ipa_path.into(),
85
+            patches: vec![
86
+                PatchOption {
87
+                    name: "Preserve Bundle ID".into(),
88
+                    detail: "Do not rewrite CFBundleIdentifier.".into(),
89
+                },
90
+                PatchOption {
91
+                    name: "Enable Documents".into(),
92
+                    detail: "Expose the app documents directory in Files.".into(),
93
+                },
94
+                PatchOption {
95
+                    name: "Strip Watch Extension".into(),
96
+                    detail: "Remove watchOS payloads before signing.".into(),
97
+                },
98
+            ],
99
+        },
100
+        AppOption {
101
+            name: "Debug Build".into(),
102
+            bundle_id: "com.example.debug".into(),
103
+            version: "0.9.0".into(),
104
+            build: "dev-17".into(),
105
+            path: "/tmp/debug-build.ipa".into(),
106
+            patches: vec![
107
+                PatchOption {
108
+                    name: "Inject Get-Task-Allow".into(),
109
+                    detail: "Allow debugger attachment for development.".into(),
110
+                },
111
+                PatchOption {
112
+                    name: "Remove Beta Expiry".into(),
113
+                    detail: "Patch known testflight-style expiry metadata.".into(),
114
+                },
115
+            ],
116
+        },
117
+    ]
118
+}
119
+
120
+pub(crate) fn sample_devices() -> Vec<DeviceOption> {
121
+    let udid = env::var("DEVICE_UDID").unwrap_or_else(|_| "00008110-001234DEADBEEF01".to_string());
122
+
123
+    vec![
124
+        DeviceOption {
125
+            name: "Connected iPhone".into(),
126
+            model: "iPhone16,2".into(),
127
+            os: "iOS 18.6".into(),
128
+            udid: udid.into(),
129
+            connection: "USB".into(),
130
+        },
131
+        DeviceOption {
132
+            name: "Test iPad".into(),
133
+            model: "iPad14,3".into(),
134
+            os: "iPadOS 18.5".into(),
135
+            udid: "00008103-00A1B2C3D4E5F607".into(),
136
+            connection: "Wi-Fi".into(),
137
+        },
138
+    ]
139
+}
140
+
141
+pub(crate) fn sample_adi_backends() -> Vec<AdiBackendOption> {
142
+    vec![
143
+        AdiBackendOption {
144
+            name: "Native ADI".into(),
145
+            detail: "Use the platform ADI provider for this machine.".into(),
146
+            status: "Ready".into(),
147
+            information: "Uses the local machine identity and platform services for ADI requests."
148
+                .into(),
149
+            editable_identity: false,
150
+            repair_action: None,
151
+        },
152
+        AdiBackendOption {
153
+            name: "Provisioned Files".into(),
154
+            detail: "Use a portable ADI identity stored on disk.".into(),
155
+            status: "Needs setup".into(),
156
+            information:
157
+                "Loads ADI provisioning files from the selected profile directory when available."
158
+                    .into(),
159
+            editable_identity: true,
160
+            repair_action: Some("Fix Provisioning".into()),
161
+        },
162
+        AdiBackendOption {
163
+            name: "Remote Proxy".into(),
164
+            detail: "Forward ADI requests to a configured service.".into(),
165
+            status: "Offline".into(),
166
+            information:
167
+                "Connects to an external ADI service and uses its reported machine identity.".into(),
168
+            editable_identity: false,
169
+            repair_action: Some("Reconnect".into()),
170
+        },
171
+    ]
172
+}
173
+
174
+pub(crate) fn sample_machine_identity() -> MachineIdentity {
175
+    let machine_name = env::var("HOSTNAME")
176
+        .or_else(|_| env::var("COMPUTERNAME"))
177
+        .unwrap_or_else(|_| "Local Machine".to_string());
178
+    let os_name = env::consts::OS.to_string();
179
+    let os_version = env::var("OS_VERSION").unwrap_or_else(|_| "Unknown".to_string());
180
+    let machine_id = env::var("MACHINE_ID")
181
+        .unwrap_or_else(|_| "A8B31C86-359B-4D95-8950-BA5DD8FFC46F".to_string());
182
+
183
+    MachineIdentity {
184
+        machine_name: machine_name.into(),
185
+        os_name: os_name.into(),
186
+        os_version: os_version.into(),
187
+        machine_id: machine_id.into(),
188
+    }
189
+}
... ...
@@ -1,207 +1,40 @@
1
-use adi::core_adi;
2
-use adi::proxy::ADIProxy;
3
-use android_coreadi::AndroidCoreADIProxy;
4
-use grandslam::bundle_information::APPLE_TV_BUNDLE_INFORMATION;
5
-use grandslam::device::Device;
6
-use grandslam::http_session::AnisetteHTTPSession;
7
-use grandslam::{AppTokenRequestError, AuthOutcome, AuthenticatedHTTPSession, AuthenticatedRequestError};
8
-use std::{env, fs};
9
-use reqwest::{Method, StatusCode};
10
-use xcode::{ViewDeveloperAction, XcodeSession, XCODE_BUNDLE_INFORMATION, XCODE_TOKEN_IDENTIFIER};
11
-
12
-fn build_device() -> Device {
13
-    // Fake mac
14
-    if cfg!(target_os = "windows") {
15
-        // Windows anisette provisioning endpoints wants you to use an appropriate Windows Client-Info.
16
-        // Apple doesn't care about the fact you are running Xcode on Windows.
17
-        let operating_system = "Windows";
18
-        let system_version = "10.0.18362/SP0.0.18362";
19
-        let system_edition = "Win10 Pro";
20
-        let system_arch = "x64";
21
-
22
-        Device {
23
-            device_model: "PC".to_string(),
24
-            operating_system_information: format!(
25
-                "{}; {}; {}; {}",
26
-                operating_system, system_version, system_edition, system_arch
27
-            ),
28
-            // It should look like a FairPlay GUID.
29
-            // It is built with a certain logic too, but IIRC it's basically hashes all the way.
30
-            // device_uuid: "00000000.00000000.00000000.00000000.00000000.00000000.00000000".to_string(),
31
-
32
-            // That one is not possible in real situations. But Apple also accepts it /shrug
33
-            device_uuid: "A8B31C86-359B-4D95-8950-BA5DD8FFC46F".to_string(),
34
-        }
35
-    } else {
36
-        Device {
37
-            device_model: "Mac16,8".to_string(),
38
-            operating_system_information: "macOS;15.7.3;24G419".to_string(),
39
-            device_uuid: "229B41B5-93B0-5632-9E1A-D4EF0669C3C1".to_string(),
40
-        }
41
-    }
42
-}
43
-
44
-async fn grandslam_test(
45
-    proxy: &dyn ADIProxy,
46
-    apple_id: &str,
47
-    password: &str,
48
-) -> Result<(), Box<dyn std::error::Error>> {
49
-    // proxy.set_android_id("0123456789012345")?;
50
-    // proxy.set_provisioning_path(c"./adi_files")?;
51
-
52
-    let device = build_device();
53
-
54
-    // println!("{:#02X?}", proxy.get_all_provisioned_accounts());
55
-
56
-    let http_session = AnisetteHTTPSession::new(
57
-        grandslam::http_session(device, XCODE_BUNDLE_INFORMATION).await?,
58
-        proxy,
59
-    );
60
-
61
-    if !proxy.is_machine_provisioned(grandslam::GRANDSLAM_DSID)? {
62
-        grandslam::provision(&http_session).await?;
63
-    }
64
-
65
-    // Here we should fetch_auth_mode first to know if we should log in with a password.
66
-    let auth_outcome = grandslam::login(&http_session, apple_id, password).await?;
67
-
68
-    match &auth_outcome {
69
-        AuthOutcome::Success(server_provided_data)
70
-        | AuthOutcome::SecondaryActionRequired(Some(server_provided_data), _) => {
71
-            match grandslam::parse_tokens_from_server_provided_data(server_provided_data) {
72
-                Some((auth_token, tokens)) => {
73
-                    let (_, hb_token) = tokens
74
-                        .iter()
75
-                        .find(|(name, _)| name == "com.apple.gs.idms.hb")
76
-                        .unwrap();
77
-
78
-                    let http_session =
79
-                        AuthenticatedHTTPSession::new(http_session, auth_token, hb_token.clone());
80
-
81
-                    let xcode_token = http_session.get_app_token(XCODE_TOKEN_IDENTIFIER).await?;
82
-
83
-                    let session = XcodeSession::new(http_session, xcode_token);
84
-                    let developer = session
85
-                        .perform_developer_action(ViewDeveloperAction {})
86
-                        .await??;
87
-                    println!("{:?}", developer);
88
-                }
89
-                None => {
90
-                    let AuthOutcome::SecondaryActionRequired(_, _secondary_action) = auth_outcome
91
-                    else {
92
-                        panic!("Apple did not return tokens even though it didn't require any action from us??");
93
-                    };
94
-                    todo!()
95
-                }
96
-            }
97
-        }
98
-        AuthOutcome::SecondaryActionRequired(_, _)
99
-        | AuthOutcome::AnisetteResyncRequired(_)
100
-        | AuthOutcome::AnisetteReprovisionRequired
101
-        | AuthOutcome::UrlSwitchingRequired(_) => todo!(),
102
-    }
103
-
104
-    Ok(())
105
-}
106
-
107
-async fn itunes_test(
108
-    proxy: &dyn ADIProxy,
109
-    apple_id: &str,
110
-    password: &str,
111
-) -> Result<(), Box<dyn std::error::Error>> {
112
-    let device = Device {
113
-        device_model: "MacBookPro13,2".to_string(),
114
-        operating_system_information: "macOS;15.6.1;24G90".to_string(),
115
-        device_uuid: "A8B31C86-359B-4D95-8950-BA5DD8FFC46F".to_string(),
116
-    };
117
-
118
-    let http_session = AnisetteHTTPSession::new(
119
-        grandslam::http_session(device, APPLE_TV_BUNDLE_INFORMATION).await?,
120
-        proxy,
121
-    );
122
-
123
-    if !proxy.is_machine_provisioned(grandslam::GRANDSLAM_DSID)? {
124
-        grandslam::provision(&http_session).await?;
125
-    }
126
-
127
-    // Here we should fetch_auth_mode first to know if we should log in with a password.
128
-    let auth_outcome = grandslam::login(&http_session, apple_id, password).await?;
129
-
130
-    match &auth_outcome {
131
-        AuthOutcome::Success(server_provided_data)
132
-        | AuthOutcome::SecondaryActionRequired(Some(server_provided_data), _) => {
133
-            match grandslam::parse_tokens_from_server_provided_data(server_provided_data) {
134
-                Some((_, tokens)) => {
135
-                    let Some((_, pet)) = tokens
136
-                        .iter()
137
-                        .find(|(name, _)| name == "com.apple.gs.idms.pet")
138
-                    else {
139
-                        todo!()
140
-                    };
141
-
142
-                    let device = http_session.http_session.http_session.device;
143
-                    let http_session = AnisetteHTTPSession::new(
144
-                        itunes::http_session(device, APPLE_TV_BUNDLE_INFORMATION).await?,
145
-                        proxy,
146
-                    );
147
-                    itunes::login(&http_session, apple_id, pet.token.as_str(), 1).await?;
148
-                }
149
-                None => {
150
-                    let AuthOutcome::SecondaryActionRequired(_, _secondary_action) = auth_outcome
151
-                    else {
152
-                        panic!("Apple did not return tokens even though it didn't require any action from us??");
153
-                    };
154
-                    todo!()
155
-                }
156
-            }
157
-        }
158
-        AuthOutcome::SecondaryActionRequired(_, _)
159
-        | AuthOutcome::AnisetteResyncRequired(_)
160
-        | AuthOutcome::AnisetteReprovisionRequired
161
-        | AuthOutcome::UrlSwitchingRequired(_) => todo!(),
162
-    }
163
-
164
-    Ok(())
165
-}
166
-
167
-#[tokio::main]
168
-async fn main() -> Result<(), Box<dyn std::error::Error>> {
1
+mod assets;
2
+mod constants;
3
+mod data;
4
+mod main_view;
5
+mod models;
6
+mod settings;
7
+mod widgets;
8
+
9
+use assets::Assets;
10
+use constants::{WINDOW_HEIGHT, WINDOW_WIDTH};
11
+use gpui::{px, size, App, AppContext, Bounds, QuitMode, WindowBounds, WindowOptions};
12
+use main_view::SideloaderView;
13
+
14
+fn main() {
169 15
     env_logger::init();
170 16
 
171
-    let apple_id = env::var("APPLE_ID")?;
172
-    let password = env::var("APPLE_PASSWORD")?;
173
-
174
-    // Just re-use system Anisette if available
175
-    #[cfg(target_os = "macos")]
176
-    // on Intel Macs, we could also use a CoreADI.framework taken from an old iTunes version.
177
-    let proxy = adid_proxy::ADIdProxy::connect();
178
-
179
-    #[cfg(target_os = "windows")]
180
-    let library = dlopen2::symbor::Library::open("C:\\Program Files\\iTunes\\CoreADI64.dll")?;
181
-    #[cfg(target_os = "windows")]
182
-    let proxy = {
183
-        let proxy = library_coreadi::LibraryCoreADIProxy::new(&library)?;
184
-
185
-        core_adi::CoreADIADIProxy::initialize(&proxy)?;
186
-
187
-        proxy
188
-    };
189
-
190
-    #[cfg(not(any(target_os = "windows", target_os = "macos")))]
191
-    let proxy = {
192
-        let core_adi_data = fs::read("nodistrib/lib/arm64-v8a/libCoreADI.so")?;
193
-        let proxy = AndroidCoreADIProxy::load_library(core_adi_data)?;
194
-        core_adi::CoreADIADIProxy::initialize(&proxy)?;
195
-        proxy.set_android_id("0123456789012345")?;
196
-        proxy.set_provisioning_path(c"./adi_files")?;
197
-
198
-        proxy
199
-    };
200
-
201
-    println!("{:#?}", proxy.get_all_provisioned_accounts());
202
-
203
-    grandslam_test(&proxy, &apple_id, &password).await?;
204
-    // itunes_test(&proxy, &apple_id, &password).await?;
205
-
206
-    Ok(())
17
+    gpui_platform::application()
18
+        .with_assets(Assets)
19
+        .with_quit_mode(QuitMode::LastWindowClosed)
20
+        .run(|cx: &mut App| {
21
+            let window_size = size(px(WINDOW_WIDTH), px(WINDOW_HEIGHT));
22
+            let bounds = Bounds::centered(None, window_size, cx);
23
+
24
+            cx.open_window(
25
+                WindowOptions {
26
+                    window_bounds: Some(WindowBounds::Windowed(bounds)),
27
+                    window_min_size: Some(window_size),
28
+                    is_resizable: true,
29
+                    ..Default::default()
30
+                },
31
+                |window, cx| {
32
+                    window.set_window_title("Super Sideloader");
33
+                    cx.new(|cx| SideloaderView::new(window, cx))
34
+                },
35
+            )
36
+            .expect("failed to open Super Sideloader window");
37
+
38
+            cx.activate(true);
39
+        });
207 40
 }
... ...
@@ -0,0 +1,943 @@
1
+use crate::constants::*;
2
+use crate::data::{
3
+    sample_accounts, sample_adi_backends, sample_apps, sample_devices, sample_machine_identity,
4
+};
5
+use crate::models::{
6
+    AccountOption, AdiBackendOption, AppOption, DeviceOption, MachineIdentity, PickerId,
7
+    SideloadOperation, SideloadPhase, TeamOption,
8
+};
9
+use crate::settings::{show_or_open_settings_window, SettingsWindow, SettingsWindowRequest};
10
+use crate::widgets::{
11
+    app_identity, combo_button, combo_item_content, combo_with_popover, connector_arrow_icon,
12
+    developer_account_title, device_identity, dropdown_list, lucide_icon, menu_action_row,
13
+    progress_circle, properties_list,
14
+};
15
+use gpui::{
16
+    div, prelude::*, px, rgb, App, ClickEvent, Context, FocusHandle, FontWeight,
17
+    InteractiveElement, IntoElement, ParentElement, Render, StatefulInteractiveElement, Styled,
18
+    Window, WindowHandle,
19
+};
20
+
21
+pub(crate) struct SideloaderView {
22
+    pub(crate) focus_handle: FocusHandle,
23
+    pub(crate) accounts: Vec<AccountOption>,
24
+    pub(crate) apps: Vec<AppOption>,
25
+    pub(crate) devices: Vec<DeviceOption>,
26
+    pub(crate) adi_backends: Vec<AdiBackendOption>,
27
+    pub(crate) selected_account: usize,
28
+    pub(crate) selected_team: usize,
29
+    pub(crate) selected_app: usize,
30
+    pub(crate) selected_device: usize,
31
+    pub(crate) selected_adi_backend: usize,
32
+    pub(crate) machine_identity: MachineIdentity,
33
+    pub(crate) open_picker: Option<PickerId>,
34
+    pub(crate) enabled_patches: Vec<bool>,
35
+    pub(crate) sideload_operation: SideloadOperation,
36
+    pub(crate) spinner_turns: f32,
37
+    pub(crate) team_settings_window: Option<WindowHandle<SettingsWindow>>,
38
+    pub(crate) app_settings_window: Option<WindowHandle<SettingsWindow>>,
39
+    pub(crate) adi_settings_window: Option<WindowHandle<SettingsWindow>>,
40
+}
41
+impl SideloaderView {
42
+    pub(crate) fn new(window: &mut Window, cx: &mut Context<Self>) -> Self {
43
+        let focus_handle = cx.focus_handle();
44
+        window.focus(&focus_handle, cx);
45
+        cx.on_release(|view, cx| view.close_child_windows(cx))
46
+            .detach();
47
+
48
+        let accounts = sample_accounts();
49
+        let apps = sample_apps();
50
+        let devices = sample_devices();
51
+        let adi_backends = sample_adi_backends();
52
+        let machine_identity = sample_machine_identity();
53
+        let enabled_patches = apps
54
+            .first()
55
+            .map(|app| vec![false; app.patches.len()])
56
+            .unwrap_or_default();
57
+
58
+        Self {
59
+            focus_handle,
60
+            accounts,
61
+            apps,
62
+            devices,
63
+            adi_backends,
64
+            selected_account: 0,
65
+            selected_team: 0,
66
+            selected_app: 0,
67
+            selected_device: 0,
68
+            selected_adi_backend: 0,
69
+            machine_identity,
70
+            open_picker: None,
71
+            enabled_patches,
72
+            sideload_operation: SideloadOperation::Idle,
73
+            spinner_turns: 0.,
74
+            team_settings_window: None,
75
+            app_settings_window: None,
76
+            adi_settings_window: None,
77
+        }
78
+    }
79
+
80
+    fn close_child_windows(&mut self, cx: &mut App) {
81
+        close_settings_window(self.team_settings_window.take(), cx);
82
+        close_settings_window(self.app_settings_window.take(), cx);
83
+        close_settings_window(self.adi_settings_window.take(), cx);
84
+    }
85
+
86
+    fn is_busy(&self) -> bool {
87
+        self.sideload_operation.is_busy()
88
+    }
89
+
90
+    fn selected_account(&self) -> &AccountOption {
91
+        &self.accounts[self.selected_account]
92
+    }
93
+
94
+    fn selected_team(&self) -> &TeamOption {
95
+        &self.selected_account().teams[self.selected_team]
96
+    }
97
+
98
+    fn selected_app(&self) -> &AppOption {
99
+        &self.apps[self.selected_app]
100
+    }
101
+
102
+    fn selected_device(&self) -> &DeviceOption {
103
+        &self.devices[self.selected_device]
104
+    }
105
+
106
+    fn select_account(
107
+        &mut self,
108
+        index: usize,
109
+        _: &ClickEvent,
110
+        window: &mut Window,
111
+        cx: &mut Context<Self>,
112
+    ) {
113
+        window.focus(&self.focus_handle, cx);
114
+        if self.is_busy() {
115
+            return;
116
+        }
117
+        if index < self.accounts.len() {
118
+            self.selected_account = index;
119
+            self.selected_team = 0;
120
+            self.open_picker = None;
121
+            cx.notify();
122
+        }
123
+    }
124
+
125
+    fn select_app(
126
+        &mut self,
127
+        index: usize,
128
+        _: &ClickEvent,
129
+        window: &mut Window,
130
+        cx: &mut Context<Self>,
131
+    ) {
132
+        window.focus(&self.focus_handle, cx);
133
+        if self.is_busy() {
134
+            return;
135
+        }
136
+        if index < self.apps.len() {
137
+            self.selected_app = index;
138
+            self.enabled_patches = vec![false; self.selected_app().patches.len()];
139
+            self.open_picker = None;
140
+            cx.notify();
141
+        }
142
+    }
143
+
144
+    fn select_device(
145
+        &mut self,
146
+        index: usize,
147
+        _: &ClickEvent,
148
+        window: &mut Window,
149
+        cx: &mut Context<Self>,
150
+    ) {
151
+        window.focus(&self.focus_handle, cx);
152
+        if self.is_busy() {
153
+            return;
154
+        }
155
+        if index < self.devices.len() {
156
+            self.selected_device = index;
157
+            self.open_picker = None;
158
+            cx.notify();
159
+        }
160
+    }
161
+
162
+    fn manage_accounts(&mut self, _: &ClickEvent, window: &mut Window, cx: &mut Context<Self>) {
163
+        window.focus(&self.focus_handle, cx);
164
+        if self.is_busy() {
165
+            return;
166
+        }
167
+        self.open_picker = None;
168
+        cx.notify();
169
+    }
170
+
171
+    fn choose_ipa(&mut self, _: &ClickEvent, window: &mut Window, cx: &mut Context<Self>) {
172
+        window.focus(&self.focus_handle, cx);
173
+        if self.is_busy() {
174
+            return;
175
+        }
176
+        self.open_picker = None;
177
+        cx.notify();
178
+    }
179
+
180
+    fn sideload(&mut self, _: &ClickEvent, window: &mut Window, cx: &mut Context<Self>) {
181
+        window.focus(&self.focus_handle, cx);
182
+        if self.is_busy() {
183
+            return;
184
+        }
185
+        self.open_picker = None;
186
+        self.sideload_operation = SideloadOperation::Running {
187
+            phase: SideloadPhase::Signing,
188
+            progress: 0.34,
189
+        };
190
+        cx.notify();
191
+    }
192
+
193
+    fn toggle_account_picker(
194
+        &mut self,
195
+        _: &ClickEvent,
196
+        window: &mut Window,
197
+        cx: &mut Context<Self>,
198
+    ) {
199
+        self.toggle_picker(PickerId::Account, window, cx);
200
+    }
201
+
202
+    fn toggle_app_picker(&mut self, _: &ClickEvent, window: &mut Window, cx: &mut Context<Self>) {
203
+        self.toggle_picker(PickerId::App, window, cx);
204
+    }
205
+
206
+    fn toggle_device_picker(
207
+        &mut self,
208
+        _: &ClickEvent,
209
+        window: &mut Window,
210
+        cx: &mut Context<Self>,
211
+    ) {
212
+        self.toggle_picker(PickerId::Device, window, cx);
213
+    }
214
+
215
+    fn toggle_picker(&mut self, picker: PickerId, window: &mut Window, cx: &mut Context<Self>) {
216
+        window.focus(&self.focus_handle, cx);
217
+        if self.is_busy() {
218
+            return;
219
+        }
220
+        self.open_picker = if self.open_picker == Some(picker) {
221
+            None
222
+        } else {
223
+            Some(picker)
224
+        };
225
+        cx.notify();
226
+    }
227
+
228
+    fn open_team_settings(&mut self, _: &ClickEvent, window: &mut Window, cx: &mut Context<Self>) {
229
+        window.focus(&self.focus_handle, cx);
230
+        if self.is_busy() {
231
+            return;
232
+        }
233
+        self.open_picker = None;
234
+        let parent = cx.weak_entity();
235
+        let request = SettingsWindowRequest::Team {
236
+            parent,
237
+            teams: self.selected_account().teams.clone(),
238
+            selected_team: self.selected_team,
239
+            auto_app_id: true,
240
+            selected_app_id: 0,
241
+        };
242
+        self.team_settings_window = Some(show_or_open_settings_window(
243
+            self.team_settings_window,
244
+            request,
245
+            SETTINGS_WINDOW_WIDTH,
246
+            TEAM_SETTINGS_WINDOW_HEIGHT,
247
+            cx,
248
+        ));
249
+        cx.notify();
250
+    }
251
+
252
+    fn open_app_settings(&mut self, _: &ClickEvent, window: &mut Window, cx: &mut Context<Self>) {
253
+        window.focus(&self.focus_handle, cx);
254
+        if self.is_busy() {
255
+            return;
256
+        }
257
+        self.open_picker = None;
258
+        let parent = cx.weak_entity();
259
+        let request = SettingsWindowRequest::AppSettings {
260
+            _parent: parent,
261
+            app: self.selected_app().clone(),
262
+            enabled_patches: self.enabled_patches.clone(),
263
+        };
264
+        self.app_settings_window = Some(show_or_open_settings_window(
265
+            self.app_settings_window,
266
+            request,
267
+            APP_SETTINGS_WINDOW_WIDTH,
268
+            APP_SETTINGS_WINDOW_HEIGHT,
269
+            cx,
270
+        ));
271
+        cx.notify();
272
+    }
273
+
274
+    fn open_adi_settings(&mut self, _: &ClickEvent, window: &mut Window, cx: &mut Context<Self>) {
275
+        window.focus(&self.focus_handle, cx);
276
+        self.open_picker = None;
277
+        let parent = cx.weak_entity();
278
+        let request = SettingsWindowRequest::AdiSettings {
279
+            parent,
280
+            backends: self.adi_backends.clone(),
281
+            selected_backend: self.selected_adi_backend,
282
+            machine_identity: self.machine_identity.clone(),
283
+        };
284
+        self.adi_settings_window = Some(show_or_open_settings_window(
285
+            self.adi_settings_window,
286
+            request,
287
+            ADI_SETTINGS_WINDOW_WIDTH,
288
+            ADI_SETTINGS_WINDOW_HEIGHT,
289
+            cx,
290
+        ));
291
+        cx.notify();
292
+    }
293
+
294
+    fn enabled_patch_names(&self) -> Vec<String> {
295
+        self.selected_app()
296
+            .patches
297
+            .iter()
298
+            .enumerate()
299
+            .filter_map(|(index, patch)| {
300
+                self.enabled_patches
301
+                    .get(index)
302
+                    .copied()
303
+                    .filter(|enabled| *enabled)
304
+                    .map(|_| patch.name.to_string())
305
+            })
306
+            .collect()
307
+    }
308
+
309
+    fn section_header(
310
+        number: &'static str,
311
+        title: &'static str,
312
+        detail: &'static str,
313
+    ) -> impl IntoElement {
314
+        div().flex().items_start().justify_between().gap_3().child(
315
+            div()
316
+                .flex()
317
+                .items_center()
318
+                .gap_2()
319
+                .child(
320
+                    div()
321
+                        .w_6()
322
+                        .h_6()
323
+                        .rounded_full()
324
+                        .flex()
325
+                        .items_center()
326
+                        .justify_center()
327
+                        .bg(rgb(0x173f45))
328
+                        .text_color(rgb(0xffffff))
329
+                        .text_xs()
330
+                        .font_weight(FontWeight::SEMIBOLD)
331
+                        .child(number),
332
+                )
333
+                .child(
334
+                    div()
335
+                        .flex()
336
+                        .flex_col()
337
+                        .gap_0p5()
338
+                        .child(
339
+                            div()
340
+                                .text_sm()
341
+                                .font_weight(FontWeight::BOLD)
342
+                                .text_color(rgb(0x24333a))
343
+                                .child(title),
344
+                        )
345
+                        .child(div().text_xs().text_color(rgb(0x6a7a81)).child(detail)),
346
+                ),
347
+        )
348
+    }
349
+
350
+    fn settings_button(label: &'static str, detail: &'static str) -> gpui::Div {
351
+        div()
352
+            .min_h(px(40.))
353
+            .px_3()
354
+            .py_1()
355
+            .rounded_md()
356
+            .flex()
357
+            .items_center()
358
+            .justify_between()
359
+            .cursor_pointer()
360
+            .hover(|style| style.bg(rgb(0xf4f7f7)))
361
+            .child(
362
+                div()
363
+                    .flex()
364
+                    .flex_col()
365
+                    .gap_0p5()
366
+                    .child(
367
+                        div()
368
+                            .text_xs()
369
+                            .font_weight(FontWeight::SEMIBOLD)
370
+                            .text_color(rgb(0x33454c))
371
+                            .child(label),
372
+                    )
373
+                    .child(div().text_xs().text_color(rgb(0x73858b)).child(detail)),
374
+            )
375
+            .child(
376
+                div()
377
+                    .w_6()
378
+                    .h_6()
379
+                    .rounded_md()
380
+                    .flex()
381
+                    .items_center()
382
+                    .justify_center()
383
+                    .bg(rgb(0xebf1f0))
384
+                    .text_color(rgb(0x53666d))
385
+                    .child(lucide_icon("icons/wrench.svg")),
386
+            )
387
+    }
388
+
389
+    fn account_row(&self, index: usize, cx: &mut Context<Self>) -> impl IntoElement {
390
+        let account = &self.accounts[index];
391
+        let selected = index == self.selected_account;
392
+        let detail = account
393
+            .teams
394
+            .first()
395
+            .map(|team| developer_account_title(&team.role))
396
+            .unwrap_or_else(|| account.status.clone());
397
+        let border = if selected {
398
+            rgb(0x0f6f7a)
399
+        } else {
400
+            rgb(0xd8e0df)
401
+        };
402
+        let bg = if selected {
403
+            rgb(0xf0fbfa)
404
+        } else {
405
+            rgb(0xffffff)
406
+        };
407
+
408
+        div()
409
+            .h(px(COMBO_ITEM_HEIGHT))
410
+            .px_3()
411
+            .rounded_md()
412
+            .border_1()
413
+            .border_color(border)
414
+            .bg(bg)
415
+            .cursor_pointer()
416
+            .hover(|style| style.bg(rgb(0xf6f9f9)))
417
+            .id(("account-row", index))
418
+            .on_click(cx.listener(move |this, event, window, cx| {
419
+                this.select_account(index, event, window, cx)
420
+            }))
421
+            .flex()
422
+            .items_center()
423
+            .child(combo_item_content(
424
+                account.apple_id.clone(),
425
+                account.label.clone(),
426
+                detail,
427
+            ))
428
+    }
429
+
430
+    fn app_row(&self, index: usize, cx: &mut Context<Self>) -> impl IntoElement {
431
+        let app = &self.apps[index];
432
+        let selected = index == self.selected_app;
433
+        let border = if selected {
434
+            rgb(0x0f6f7a)
435
+        } else {
436
+            rgb(0xd8e0df)
437
+        };
438
+
439
+        div()
440
+            .h(px(COMBO_ITEM_HEIGHT))
441
+            .px_3()
442
+            .rounded_md()
443
+            .border_1()
444
+            .border_color(border)
445
+            .bg(if selected {
446
+                rgb(0xf0fbfa)
447
+            } else {
448
+                rgb(0xffffff)
449
+            })
450
+            .cursor_pointer()
451
+            .hover(|style| style.bg(rgb(0xf6f9f9)))
452
+            .id(("app-row", index))
453
+            .on_click(
454
+                cx.listener(move |this, event, window, cx| {
455
+                    this.select_app(index, event, window, cx)
456
+                }),
457
+            )
458
+            .flex()
459
+            .items_center()
460
+            .child(combo_item_content(
461
+                app.path.clone(),
462
+                app.name.clone(),
463
+                app_identity(app),
464
+            ))
465
+    }
466
+
467
+    fn device_row(&self, index: usize, cx: &mut Context<Self>) -> impl IntoElement {
468
+        let device = &self.devices[index];
469
+        let selected = index == self.selected_device;
470
+        let border = if selected {
471
+            rgb(0x0f6f7a)
472
+        } else {
473
+            rgb(0xd8e0df)
474
+        };
475
+
476
+        div()
477
+            .h(px(COMBO_ITEM_HEIGHT))
478
+            .px_3()
479
+            .rounded_md()
480
+            .border_1()
481
+            .border_color(border)
482
+            .bg(if selected {
483
+                rgb(0xf0fbfa)
484
+            } else {
485
+                rgb(0xffffff)
486
+            })
487
+            .cursor_pointer()
488
+            .hover(|style| style.bg(rgb(0xf6f9f9)))
489
+            .id(("device-row", index))
490
+            .on_click(cx.listener(move |this, event, window, cx| {
491
+                this.select_device(index, event, window, cx)
492
+            }))
493
+            .flex()
494
+            .items_center()
495
+            .child(combo_item_content(
496
+                device.udid.clone(),
497
+                device.name.clone(),
498
+                device_identity(device),
499
+            ))
500
+    }
501
+
502
+    fn picker_shell(
503
+        title: impl IntoElement,
504
+        body: impl IntoElement,
505
+        disabled: bool,
506
+    ) -> impl IntoElement {
507
+        div()
508
+            .min_w(px(290.))
509
+            .min_h(px(340.))
510
+            .flex_1()
511
+            .flex()
512
+            .flex_col()
513
+            .gap_4()
514
+            .p_4()
515
+            .rounded_md()
516
+            .border_1()
517
+            .border_color(rgb(0xd8e0df))
518
+            .bg(rgb(0xffffff))
519
+            .when(disabled, |this| this.opacity(0.55))
520
+            .child(title)
521
+            .child(body)
522
+    }
523
+
524
+    fn account_picker(&self, cx: &mut Context<Self>) -> impl IntoElement {
525
+        let account = self.selected_account();
526
+        let team = self.selected_team();
527
+        let is_open = self.open_picker == Some(PickerId::Account);
528
+
529
+        Self::picker_shell(
530
+            Self::section_header("1", "Account", "Apple ID and developer membership"),
531
+            div()
532
+                .flex()
533
+                .flex_col()
534
+                .gap_4()
535
+                .child(combo_with_popover(
536
+                    "account-popover-scroll",
537
+                    combo_button(
538
+                        account.apple_id.clone(),
539
+                        account.label.clone(),
540
+                        developer_account_title(&team.role),
541
+                        is_open,
542
+                    )
543
+                    .id("account-combobox")
544
+                    .on_click(cx.listener(Self::toggle_account_picker)),
545
+                    is_open,
546
+                    dropdown_list(
547
+                        (0..self.accounts.len()).map(|index| self.account_row(index, cx)),
548
+                    )
549
+                    .child(
550
+                        menu_action_row(
551
+                            "Manage Accounts...",
552
+                            "Add, remove, or refresh Apple ID sessions.",
553
+                        )
554
+                        .id("manage-accounts")
555
+                        .on_click(cx.listener(Self::manage_accounts)),
556
+                    )
557
+                    .id("account-options"),
558
+                ))
559
+                .child(properties_list(vec![
560
+                    ("Apple ID", account.apple_id.to_string()),
561
+                    ("Status", account.status.to_string()),
562
+                    ("Source", account.detail.to_string()),
563
+                    ("Team", team.name.to_string()),
564
+                ]))
565
+                .child(
566
+                    Self::settings_button(
567
+                        "Advanced Settings",
568
+                        "Select the developer team for signing.",
569
+                    )
570
+                    .id("team-disclosure")
571
+                    .on_click(cx.listener(Self::open_team_settings)),
572
+                ),
573
+            self.is_busy(),
574
+        )
575
+    }
576
+
577
+    fn app_picker(&self, cx: &mut Context<Self>) -> impl IntoElement {
578
+        let app = self.selected_app();
579
+        let is_open = self.open_picker == Some(PickerId::App);
580
+        let patch_summary = self.enabled_patch_names();
581
+        let patch_summary = if patch_summary.is_empty() {
582
+            "No patches enabled".to_string()
583
+        } else {
584
+            patch_summary.join(", ")
585
+        };
586
+
587
+        Self::picker_shell(
588
+            Self::section_header("2", "App", "IPA selection and patch profile"),
589
+            div()
590
+                .flex()
591
+                .flex_col()
592
+                .gap_4()
593
+                .child(combo_with_popover(
594
+                    "app-popover-scroll",
595
+                    combo_button(
596
+                        app.path.clone(),
597
+                        app.name.clone(),
598
+                        app_identity(app),
599
+                        is_open,
600
+                    )
601
+                    .id("app-combobox")
602
+                    .on_click(cx.listener(Self::toggle_app_picker)),
603
+                    is_open,
604
+                    dropdown_list((0..self.apps.len()).map(|index| self.app_row(index, cx)))
605
+                        .child(
606
+                            menu_action_row("Choose IPA...", "Browse for another IPA archive.")
607
+                                .id("choose-ipa")
608
+                                .on_click(cx.listener(Self::choose_ipa)),
609
+                        )
610
+                        .id("app-options"),
611
+                ))
612
+                .child(properties_list(vec![
613
+                    ("Bundle ID", app.bundle_id.to_string()),
614
+                    ("Version", format!("{} ({})", app.version, app.build)),
615
+                    ("IPA", app.path.to_string()),
616
+                    ("Patches", patch_summary),
617
+                ]))
618
+                .child(
619
+                    Self::settings_button(
620
+                        "Advanced Settings",
621
+                        "Edit app metadata and entitlements.",
622
+                    )
623
+                    .id("app-disclosure")
624
+                    .on_click(cx.listener(Self::open_app_settings)),
625
+                ),
626
+            self.is_busy(),
627
+        )
628
+    }
629
+
630
+    fn device_picker(&self, cx: &mut Context<Self>) -> impl IntoElement {
631
+        let device = self.selected_device();
632
+        let is_open = self.open_picker == Some(PickerId::Device);
633
+
634
+        Self::picker_shell(
635
+            Self::section_header("3", "Device", "Install target"),
636
+            div()
637
+                .flex()
638
+                .flex_col()
639
+                .gap_4()
640
+                .child(combo_with_popover(
641
+                    "device-popover-scroll",
642
+                    combo_button(
643
+                        device.udid.clone(),
644
+                        device.name.clone(),
645
+                        device_identity(device),
646
+                        is_open,
647
+                    )
648
+                    .id("device-combobox")
649
+                    .on_click(cx.listener(Self::toggle_device_picker)),
650
+                    is_open,
651
+                    dropdown_list((0..self.devices.len()).map(|index| self.device_row(index, cx)))
652
+                        .id("device-options"),
653
+                ))
654
+                .child(properties_list(vec![
655
+                    ("Model", device.model.to_string()),
656
+                    ("OS", device.os.to_string()),
657
+                    ("UDID", device.udid.to_string()),
658
+                    ("Connection", device.connection.to_string()),
659
+                ])),
660
+            self.is_busy(),
661
+        )
662
+    }
663
+
664
+    fn plus_connector(disabled: bool) -> impl IntoElement {
665
+        div()
666
+            .w(px(PLUS_CONNECTOR_WIDTH))
667
+            .min_h(px(340.))
668
+            .flex_none()
669
+            .flex()
670
+            .items_center()
671
+            .justify_center()
672
+            .when(disabled, |this| this.opacity(0.55))
673
+            .child(
674
+                div()
675
+                    .w_8()
676
+                    .h_8()
677
+                    .rounded_full()
678
+                    .border_1()
679
+                    .border_color(rgb(0xcfd8d6))
680
+                    .bg(rgb(0xfbfcfb))
681
+                    .text_color(rgb(0x53666d))
682
+                    .flex()
683
+                    .items_center()
684
+                    .justify_center()
685
+                    .child(lucide_icon("icons/plus.svg")),
686
+            )
687
+    }
688
+
689
+    fn sideload_connector(&self, cx: &mut Context<Self>) -> impl IntoElement {
690
+        let busy = self.sideload_operation.is_busy();
691
+        let progress = self.sideload_operation.progress();
692
+        let track_fill_width = SIDELOAD_BUTTON_WIDTH * progress;
693
+        let status_color = self.sideload_operation.status_color();
694
+        let status_text = self
695
+            .sideload_operation
696
+            .status_text(self.selected_app(), self.selected_device());
697
+
698
+        div()
699
+            .w(px(SIDELOAD_CONNECTOR_WIDTH))
700
+            .min_h(px(340.))
701
+            .flex_none()
702
+            .flex()
703
+            .flex_col()
704
+            .items_center()
705
+            .justify_center()
706
+            .gap_1()
707
+            .child(div().flex_none().w_full().h(px(SIDELOAD_STATUS_HEIGHT)))
708
+            .child(
709
+                div()
710
+                    .flex()
711
+                    .items_center()
712
+                    .gap_2()
713
+                    .child(
714
+                        div()
715
+                            .flex_none()
716
+                            .w(px(18.))
717
+                            .h(px(2.))
718
+                            .rounded_full()
719
+                            .bg(rgb(status_color)),
720
+                    )
721
+                    .child(
722
+                        div()
723
+                            .id("sideload-button")
724
+                            .w(px(SIDELOAD_BUTTON_WIDTH))
725
+                            .h_9()
726
+                            .px_2()
727
+                            .rounded_md()
728
+                            .bg(rgb(0x173f45))
729
+                            .text_color(rgb(0xffffff))
730
+                            .text_sm()
731
+                            .font_weight(FontWeight::SEMIBOLD)
732
+                            .flex()
733
+                            .items_center()
734
+                            .justify_center()
735
+                            .gap_1()
736
+                            .when(!busy, |this| {
737
+                                this.cursor_pointer()
738
+                                    .hover(|style| style.bg(rgb(0x20545c)))
739
+                                    .on_click(cx.listener(Self::sideload))
740
+                            })
741
+                            .when(busy, |this| {
742
+                                this.child(
743
+                                    div()
744
+                                        .w_full()
745
+                                        .flex()
746
+                                        .items_center()
747
+                                        .gap_1()
748
+                                        .child(
749
+                                            div().flex_none().w_4().h_4().child(progress_circle(
750
+                                                progress,
751
+                                                self.spinner_turns,
752
+                                            )),
753
+                                        )
754
+                                        .child(
755
+                                            div()
756
+                                                .min_w_0()
757
+                                                .flex_1()
758
+                                                .text_center()
759
+                                                .text_ellipsis()
760
+                                                .child(self.sideload_operation.button_label()),
761
+                                        )
762
+                                        .child(div().flex_none().w_4().h_4()),
763
+                                )
764
+                            })
765
+                            .when(!busy, |this| {
766
+                                this.child(self.sideload_operation.button_label())
767
+                            }),
768
+                    )
769
+                    .child(
770
+                        div()
771
+                            .flex_none()
772
+                            .w_6()
773
+                            .h_9()
774
+                            .text_color(rgb(status_color))
775
+                            .flex()
776
+                            .items_center()
777
+                            .justify_center()
778
+                            .child(connector_arrow_icon(status_color)),
779
+                    ),
780
+            )
781
+            .child(
782
+                div()
783
+                    .h(px(SIDELOAD_STATUS_HEIGHT))
784
+                    .flex()
785
+                    .items_center()
786
+                    .gap_2()
787
+                    .child(div().flex_none().w(px(18.)))
788
+                    .child(
789
+                        div()
790
+                            .flex()
791
+                            .flex_col()
792
+                            .items_center()
793
+                            .gap_1()
794
+                            .child(
795
+                                div()
796
+                                    .w(px(SIDELOAD_BUTTON_WIDTH))
797
+                                    .h(px(3.))
798
+                                    .rounded_full()
799
+                                    .bg(rgb(0xcfd8d6))
800
+                                    .child(
801
+                                        div()
802
+                                            .w(px(track_fill_width))
803
+                                            .h_full()
804
+                                            .rounded_full()
805
+                                            .bg(rgb(status_color)),
806
+                                    ),
807
+                            )
808
+                            .child(
809
+                                div()
810
+                                    .w(px(SIDELOAD_BUTTON_WIDTH))
811
+                                    .text_center()
812
+                                    .text_xs()
813
+                                    .text_color(rgb(status_color))
814
+                                    .text_ellipsis()
815
+                                    .child(status_text),
816
+                            ),
817
+                    )
818
+                    .child(div().flex_none().w_6()),
819
+            )
820
+    }
821
+}
822
+
823
+fn close_settings_window(handle: Option<WindowHandle<SettingsWindow>>, cx: &mut App) {
824
+    if let Some(handle) = handle {
825
+        let _ = handle.update(cx, |_, window, _| window.remove_window());
826
+    }
827
+}
828
+
829
+impl Render for SideloaderView {
830
+    fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement {
831
+        if self.sideload_operation.is_busy() {
832
+            self.spinner_turns = (self.spinner_turns + 0.035) % 1.;
833
+            window.request_animation_frame();
834
+        } else {
835
+            self.spinner_turns = 0.;
836
+        }
837
+
838
+        let status_color = self.sideload_operation.status_color();
839
+
840
+        div()
841
+            .track_focus(&self.focus_handle)
842
+            .size_full()
843
+            .bg(rgb(0xf4f6f4))
844
+            .text_color(rgb(0x263238))
845
+            .font_family(".SystemUIFont")
846
+            .child(
847
+                div()
848
+                    .flex()
849
+                    .items_center()
850
+                    .justify_between()
851
+                    .px_6()
852
+                    .py_4()
853
+                    .border_b_1()
854
+                    .border_color(rgb(0xd7dfdc))
855
+                    .bg(rgb(0xfbfcfb))
856
+                    .child(
857
+                        div()
858
+                            .flex()
859
+                            .items_center()
860
+                            .gap_3()
861
+                            .child(
862
+                                div()
863
+                                    .w_9()
864
+                                    .h_9()
865
+                                    .rounded_md()
866
+                                    .flex()
867
+                                    .items_center()
868
+                                    .justify_center()
869
+                                    .bg(rgb(0x173f45))
870
+                                    .text_color(rgb(0xffffff))
871
+                                    .font_weight(FontWeight::SEMIBOLD)
872
+                                    .child("S"),
873
+                            )
874
+                            .child(
875
+                                div()
876
+                                    .flex()
877
+                                    .flex_col()
878
+                                    .gap_0p5()
879
+                                    .child(
880
+                                        div()
881
+                                            .text_lg()
882
+                                            .font_weight(FontWeight::BOLD)
883
+                                            .child("Super Sideloader"),
884
+                                    )
885
+                                    .child(
886
+                                        div().text_xs().text_color(rgb(0x66767c)).child(
887
+                                            "Choose account, app, and device before signing",
888
+                                        ),
889
+                                    ),
890
+                            ),
891
+                    )
892
+                    .child(
893
+                        div()
894
+                            .flex()
895
+                            .items_center()
896
+                            .gap_3()
897
+                            .child(
898
+                                div()
899
+                                    .flex()
900
+                                    .items_center()
901
+                                    .gap_2()
902
+                                    .child(div().w_2().h_2().rounded_full().bg(rgb(status_color)))
903
+                                    .child(
904
+                                        div()
905
+                                            .text_sm()
906
+                                            .font_weight(FontWeight::SEMIBOLD)
907
+                                            .text_color(rgb(status_color))
908
+                                            .child(self.sideload_operation.top_label()),
909
+                                    ),
910
+                            )
911
+                            .child(
912
+                                div()
913
+                                    .id("adi-settings-button")
914
+                                    .w_8()
915
+                                    .h_8()
916
+                                    .rounded_md()
917
+                                    .bg(rgb(0xebf1f0))
918
+                                    .text_color(rgb(0x53666d))
919
+                                    .flex()
920
+                                    .items_center()
921
+                                    .justify_center()
922
+                                    .cursor_pointer()
923
+                                    .hover(|style| style.bg(rgb(0xdfe8e6)))
924
+                                    .on_click(cx.listener(Self::open_adi_settings))
925
+                                    .child(lucide_icon("icons/settings.svg")),
926
+                            ),
927
+                    ),
928
+            )
929
+            .child(
930
+                div().p_5().child(
931
+                    div()
932
+                        .flex()
933
+                        .items_start()
934
+                        .gap_2()
935
+                        .child(self.account_picker(cx))
936
+                        .child(Self::plus_connector(self.is_busy()))
937
+                        .child(self.app_picker(cx))
938
+                        .child(self.sideload_connector(cx))
939
+                        .child(self.device_picker(cx)),
940
+                ),
941
+            )
942
+    }
943
+}
... ...
@@ -0,0 +1,159 @@
1
+use gpui::SharedString;
2
+
3
+#[derive(Clone, Copy, Debug, Eq, PartialEq)]
4
+pub(crate) enum PickerId {
5
+    Account,
6
+    App,
7
+    Device,
8
+}
9
+
10
+#[derive(Clone, Debug)]
11
+pub(crate) struct AppIdOption {
12
+    pub(crate) name: SharedString,
13
+    pub(crate) identifier: SharedString,
14
+    pub(crate) kind: SharedString,
15
+}
16
+
17
+#[derive(Clone, Debug)]
18
+pub(crate) struct TeamOption {
19
+    pub(crate) name: SharedString,
20
+    pub(crate) identifier: SharedString,
21
+    pub(crate) role: SharedString,
22
+    pub(crate) app_ids: Vec<AppIdOption>,
23
+}
24
+
25
+#[derive(Clone, Debug)]
26
+pub(crate) struct AccountOption {
27
+    pub(crate) label: SharedString,
28
+    pub(crate) apple_id: SharedString,
29
+    pub(crate) detail: SharedString,
30
+    pub(crate) status: SharedString,
31
+    pub(crate) teams: Vec<TeamOption>,
32
+}
33
+
34
+#[derive(Clone, Debug)]
35
+pub(crate) struct PatchOption {
36
+    pub(crate) name: SharedString,
37
+    pub(crate) detail: SharedString,
38
+}
39
+
40
+#[derive(Clone, Debug)]
41
+pub(crate) struct AppOption {
42
+    pub(crate) name: SharedString,
43
+    pub(crate) bundle_id: SharedString,
44
+    pub(crate) version: SharedString,
45
+    pub(crate) build: SharedString,
46
+    pub(crate) path: SharedString,
47
+    pub(crate) patches: Vec<PatchOption>,
48
+}
49
+
50
+#[derive(Clone, Debug)]
51
+pub(crate) struct DeviceOption {
52
+    pub(crate) name: SharedString,
53
+    pub(crate) model: SharedString,
54
+    pub(crate) os: SharedString,
55
+    pub(crate) udid: SharedString,
56
+    pub(crate) connection: SharedString,
57
+}
58
+
59
+#[derive(Clone, Debug)]
60
+pub(crate) struct AdiBackendOption {
61
+    pub(crate) name: SharedString,
62
+    pub(crate) detail: SharedString,
63
+    pub(crate) status: SharedString,
64
+    pub(crate) information: SharedString,
65
+    pub(crate) editable_identity: bool,
66
+    pub(crate) repair_action: Option<SharedString>,
67
+}
68
+
69
+#[derive(Clone, Debug)]
70
+pub(crate) struct MachineIdentity {
71
+    pub(crate) machine_name: SharedString,
72
+    pub(crate) os_name: SharedString,
73
+    pub(crate) os_version: SharedString,
74
+    pub(crate) machine_id: SharedString,
75
+}
76
+
77
+#[allow(dead_code)]
78
+#[derive(Clone, Copy, Debug, Eq, PartialEq)]
79
+pub(crate) enum SideloadPhase {
80
+    Signing,
81
+    Installing,
82
+}
83
+
84
+#[allow(dead_code)]
85
+#[derive(Clone, Debug)]
86
+pub(crate) enum SideloadOperation {
87
+    Idle,
88
+    Running { phase: SideloadPhase, progress: f32 },
89
+    Finished,
90
+    Failed { message: SharedString },
91
+}
92
+
93
+impl SideloadOperation {
94
+    pub(crate) fn is_busy(&self) -> bool {
95
+        matches!(self, Self::Running { .. })
96
+    }
97
+
98
+    pub(crate) fn progress(&self) -> f32 {
99
+        match self {
100
+            Self::Idle => 0.,
101
+            Self::Running { progress, .. } => progress.clamp(0., 1.),
102
+            Self::Finished => 1.,
103
+            Self::Failed { .. } => 0.,
104
+        }
105
+    }
106
+
107
+    pub(crate) fn top_label(&self) -> &'static str {
108
+        match self {
109
+            Self::Idle => "Draft",
110
+            Self::Running { phase, .. } => phase.label(),
111
+            Self::Finished => "Done",
112
+            Self::Failed { .. } => "Failed",
113
+        }
114
+    }
115
+
116
+    pub(crate) fn status_color(&self) -> u32 {
117
+        match self {
118
+            Self::Idle => 0x53666d,
119
+            Self::Running { .. } => 0x173f45,
120
+            Self::Finished => 0x1d6b45,
121
+            Self::Failed { .. } => 0x9a302b,
122
+        }
123
+    }
124
+
125
+    pub(crate) fn button_label(&self) -> &'static str {
126
+        match self {
127
+            Self::Idle | Self::Finished | Self::Failed { .. } => "Sideload",
128
+            Self::Running { phase, .. } => phase.button_label(),
129
+        }
130
+    }
131
+
132
+    pub(crate) fn status_text(&self, app: &AppOption, device: &DeviceOption) -> SharedString {
133
+        match self {
134
+            Self::Idle => "Ready to install".into(),
135
+            Self::Running { phase, .. } => match phase {
136
+                SideloadPhase::Signing => format!("Signing {}", app.name).into(),
137
+                SideloadPhase::Installing => format!("Installing to {}", device.name).into(),
138
+            },
139
+            Self::Finished => format!("Installed on {}", device.name).into(),
140
+            Self::Failed { message } => message.clone(),
141
+        }
142
+    }
143
+}
144
+
145
+impl SideloadPhase {
146
+    fn label(self) -> &'static str {
147
+        match self {
148
+            Self::Signing => "Signing",
149
+            Self::Installing => "Installing",
150
+        }
151
+    }
152
+
153
+    pub(crate) fn button_label(self) -> &'static str {
154
+        match self {
155
+            Self::Signing => "Signing",
156
+            Self::Installing => "Installing",
157
+        }
158
+    }
159
+}
... ...
@@ -0,0 +1,1734 @@
1
+use crate::constants::*;
2
+use crate::main_view::SideloaderView;
3
+use crate::models::{AdiBackendOption, AppIdOption, AppOption, MachineIdentity, TeamOption};
4
+use crate::widgets::{
5
+    chevron, combo_button, combo_item_content, combo_with_popover, developer_account_title,
6
+    dropdown_list, lucide_icon, properties_list,
7
+};
8
+use gpui::{
9
+    anchored, deferred, div, point, prelude::*, px, rgb, size, AnchoredPositionMode, App,
10
+    AppContext, Bounds, ClickEvent, Context, FocusHandle, FontWeight, InteractiveElement,
11
+    IntoElement, ParentElement, Render, ScrollHandle, SharedString, StatefulInteractiveElement,
12
+    Styled, WeakEntity, Window, WindowBounds, WindowHandle, WindowKind, WindowOptions,
13
+};
14
+
15
+#[derive(Clone)]
16
+pub(crate) enum SettingsWindowRequest {
17
+    Team {
18
+        parent: WeakEntity<SideloaderView>,
19
+        teams: Vec<TeamOption>,
20
+        selected_team: usize,
21
+        auto_app_id: bool,
22
+        selected_app_id: usize,
23
+    },
24
+    AppSettings {
25
+        _parent: WeakEntity<SideloaderView>,
26
+        app: AppOption,
27
+        enabled_patches: Vec<bool>,
28
+    },
29
+    AdiSettings {
30
+        parent: WeakEntity<SideloaderView>,
31
+        backends: Vec<AdiBackendOption>,
32
+        selected_backend: usize,
33
+        machine_identity: MachineIdentity,
34
+    },
35
+}
36
+
37
+pub(crate) struct SettingsWindow {
38
+    focus_handle: FocusHandle,
39
+    request: SettingsWindowRequest,
40
+    scroll_handle: ScrollHandle,
41
+    team_picker_open: bool,
42
+    app_id_picker_open: bool,
43
+    adi_backend_picker_open: bool,
44
+}
45
+impl SettingsWindowRequest {
46
+    fn title(&self) -> &'static str {
47
+        match self {
48
+            SettingsWindowRequest::Team { .. } => "Developer Settings",
49
+            SettingsWindowRequest::AppSettings { .. } => "App Settings",
50
+            SettingsWindowRequest::AdiSettings { .. } => "Settings",
51
+        }
52
+    }
53
+}
54
+
55
+impl SettingsWindow {
56
+    fn new(request: SettingsWindowRequest, window: &mut Window, cx: &mut Context<Self>) -> Self {
57
+        let focus_handle = cx.focus_handle();
58
+        window.focus(&focus_handle, cx);
59
+        cx.defer_in(window, |_, _, cx| cx.notify());
60
+
61
+        Self {
62
+            focus_handle,
63
+            request,
64
+            scroll_handle: ScrollHandle::new(),
65
+            team_picker_open: false,
66
+            app_id_picker_open: false,
67
+            adi_backend_picker_open: false,
68
+        }
69
+    }
70
+
71
+    fn show_request(
72
+        &mut self,
73
+        request: SettingsWindowRequest,
74
+        window: &mut Window,
75
+        cx: &mut Context<Self>,
76
+    ) {
77
+        self.request = request;
78
+        self.team_picker_open = false;
79
+        self.app_id_picker_open = false;
80
+        self.adi_backend_picker_open = false;
81
+        window.activate_window();
82
+        window.focus(&self.focus_handle, cx);
83
+        cx.defer_in(window, |_, _, cx| cx.notify());
84
+        cx.notify();
85
+    }
86
+
87
+    fn select_team(
88
+        &mut self,
89
+        index: usize,
90
+        _: &ClickEvent,
91
+        _: &mut Window,
92
+        cx: &mut Context<Self>,
93
+    ) {
94
+        let SettingsWindowRequest::Team {
95
+            parent,
96
+            teams,
97
+            selected_team,
98
+            selected_app_id,
99
+            ..
100
+        } = &mut self.request
101
+        else {
102
+            return;
103
+        };
104
+
105
+        if index >= teams.len() {
106
+            return;
107
+        }
108
+
109
+        *selected_team = index;
110
+        *selected_app_id = 0;
111
+        self.team_picker_open = false;
112
+        self.app_id_picker_open = false;
113
+        let _ = parent.update(cx, |view, cx| {
114
+            let team_count = view.accounts[view.selected_account].teams.len();
115
+            if index < team_count {
116
+                view.selected_team = index;
117
+                cx.notify();
118
+            }
119
+        });
120
+        cx.notify();
121
+    }
122
+
123
+    fn toggle_team_picker(&mut self, _: &ClickEvent, window: &mut Window, cx: &mut Context<Self>) {
124
+        window.focus(&self.focus_handle, cx);
125
+        if matches!(self.request, SettingsWindowRequest::Team { .. }) {
126
+            self.team_picker_open = !self.team_picker_open;
127
+            self.app_id_picker_open = false;
128
+            cx.notify();
129
+        }
130
+    }
131
+
132
+    fn toggle_auto_app_id(&mut self, _: &ClickEvent, window: &mut Window, cx: &mut Context<Self>) {
133
+        window.focus(&self.focus_handle, cx);
134
+        let SettingsWindowRequest::Team { auto_app_id, .. } = &mut self.request else {
135
+            return;
136
+        };
137
+
138
+        *auto_app_id = !*auto_app_id;
139
+        self.app_id_picker_open = false;
140
+        cx.notify();
141
+    }
142
+
143
+    fn toggle_app_id_picker(
144
+        &mut self,
145
+        _: &ClickEvent,
146
+        window: &mut Window,
147
+        cx: &mut Context<Self>,
148
+    ) {
149
+        window.focus(&self.focus_handle, cx);
150
+        let SettingsWindowRequest::Team { auto_app_id, .. } = &self.request else {
151
+            return;
152
+        };
153
+
154
+        if !*auto_app_id {
155
+            self.app_id_picker_open = !self.app_id_picker_open;
156
+            self.team_picker_open = false;
157
+            cx.notify();
158
+        }
159
+    }
160
+
161
+    fn select_app_id(
162
+        &mut self,
163
+        index: usize,
164
+        _: &ClickEvent,
165
+        window: &mut Window,
166
+        cx: &mut Context<Self>,
167
+    ) {
168
+        window.focus(&self.focus_handle, cx);
169
+        let SettingsWindowRequest::Team {
170
+            teams,
171
+            selected_team,
172
+            selected_app_id,
173
+            ..
174
+        } = &mut self.request
175
+        else {
176
+            return;
177
+        };
178
+
179
+        let Some(team) = teams.get(*selected_team) else {
180
+            return;
181
+        };
182
+
183
+        if index < team.app_ids.len() {
184
+            *selected_app_id = index;
185
+            self.app_id_picker_open = false;
186
+            cx.notify();
187
+        }
188
+    }
189
+
190
+    fn add_app_id(&mut self, _: &ClickEvent, window: &mut Window, cx: &mut Context<Self>) {
191
+        window.focus(&self.focus_handle, cx);
192
+        cx.notify();
193
+    }
194
+
195
+    fn remove_app_id(&mut self, _: &ClickEvent, window: &mut Window, cx: &mut Context<Self>) {
196
+        window.focus(&self.focus_handle, cx);
197
+        cx.notify();
198
+    }
199
+
200
+    fn edit_app_id(&mut self, _: &ClickEvent, window: &mut Window, cx: &mut Context<Self>) {
201
+        window.focus(&self.focus_handle, cx);
202
+        cx.notify();
203
+    }
204
+
205
+    fn refresh_team_details(
206
+        &mut self,
207
+        _: &ClickEvent,
208
+        window: &mut Window,
209
+        cx: &mut Context<Self>,
210
+    ) {
211
+        window.focus(&self.focus_handle, cx);
212
+        if matches!(self.request, SettingsWindowRequest::Team { .. }) {
213
+            self.team_picker_open = false;
214
+            self.app_id_picker_open = false;
215
+            cx.notify();
216
+        }
217
+    }
218
+
219
+    fn select_adi_backend(
220
+        &mut self,
221
+        index: usize,
222
+        _: &ClickEvent,
223
+        window: &mut Window,
224
+        cx: &mut Context<Self>,
225
+    ) {
226
+        window.focus(&self.focus_handle, cx);
227
+        let SettingsWindowRequest::AdiSettings {
228
+            parent,
229
+            backends,
230
+            selected_backend,
231
+            ..
232
+        } = &mut self.request
233
+        else {
234
+            return;
235
+        };
236
+
237
+        if index >= backends.len() {
238
+            return;
239
+        }
240
+
241
+        *selected_backend = index;
242
+        self.adi_backend_picker_open = false;
243
+        let _ = parent.update(cx, |view, cx| {
244
+            if index < view.adi_backends.len() {
245
+                view.selected_adi_backend = index;
246
+                cx.notify();
247
+            }
248
+        });
249
+        cx.notify();
250
+    }
251
+
252
+    fn toggle_adi_backend_picker(
253
+        &mut self,
254
+        _: &ClickEvent,
255
+        window: &mut Window,
256
+        cx: &mut Context<Self>,
257
+    ) {
258
+        window.focus(&self.focus_handle, cx);
259
+        if matches!(self.request, SettingsWindowRequest::AdiSettings { .. }) {
260
+            self.adi_backend_picker_open = !self.adi_backend_picker_open;
261
+            cx.notify();
262
+        }
263
+    }
264
+
265
+    fn repair_adi_backend(&mut self, _: &ClickEvent, window: &mut Window, cx: &mut Context<Self>) {
266
+        window.focus(&self.focus_handle, cx);
267
+        cx.notify();
268
+    }
269
+
270
+    fn edit_machine_identity(
271
+        &mut self,
272
+        _: &ClickEvent,
273
+        window: &mut Window,
274
+        cx: &mut Context<Self>,
275
+    ) {
276
+        window.focus(&self.focus_handle, cx);
277
+        cx.notify();
278
+    }
279
+
280
+    fn edit_app_icon(&mut self, _: &ClickEvent, window: &mut Window, cx: &mut Context<Self>) {
281
+        window.focus(&self.focus_handle, cx);
282
+        cx.notify();
283
+    }
284
+
285
+    fn edit_app_detail(&mut self, _: &ClickEvent, window: &mut Window, cx: &mut Context<Self>) {
286
+        window.focus(&self.focus_handle, cx);
287
+        cx.notify();
288
+    }
289
+
290
+    fn revert_app_detail(&mut self, _: &ClickEvent, window: &mut Window, cx: &mut Context<Self>) {
291
+        window.focus(&self.focus_handle, cx);
292
+        cx.notify();
293
+    }
294
+
295
+    fn add_entitlement(&mut self, _: &ClickEvent, window: &mut Window, cx: &mut Context<Self>) {
296
+        window.focus(&self.focus_handle, cx);
297
+        cx.notify();
298
+    }
299
+
300
+    fn remove_entitlement(&mut self, _: &ClickEvent, window: &mut Window, cx: &mut Context<Self>) {
301
+        window.focus(&self.focus_handle, cx);
302
+        cx.notify();
303
+    }
304
+
305
+    fn revert_entitlements(&mut self, _: &ClickEvent, window: &mut Window, cx: &mut Context<Self>) {
306
+        window.focus(&self.focus_handle, cx);
307
+        cx.notify();
308
+    }
309
+}
310
+
311
+impl Render for SettingsWindow {
312
+    fn render(&mut self, _: &mut Window, cx: &mut Context<Self>) -> impl IntoElement {
313
+        let team_picker_open = self.team_picker_open;
314
+        let app_id_picker_open = self.app_id_picker_open;
315
+        let adi_backend_picker_open = self.adi_backend_picker_open;
316
+
317
+        match &mut self.request {
318
+            SettingsWindowRequest::Team {
319
+                teams,
320
+                selected_team,
321
+                auto_app_id,
322
+                selected_app_id,
323
+                ..
324
+            } => {
325
+                let selected = *selected_team;
326
+                let auto_app_id = *auto_app_id;
327
+                let selected_app_id = *selected_app_id;
328
+                let team = teams.get(selected);
329
+                let mut content = div()
330
+                    .flex()
331
+                    .flex_col()
332
+                    .gap_4()
333
+                    .when_some(team, |this, team| {
334
+                        this.child(developer_settings_section(
335
+                            "Developer Team",
336
+                            "Team used for certificates, profiles, and signing identities.",
337
+                            div()
338
+                                .flex()
339
+                                .flex_col()
340
+                                .gap_3()
341
+                                .child(combo_with_popover(
342
+                                    "team-popover-scroll",
343
+                                    combo_button(
344
+                                        team.identifier.clone(),
345
+                                        team.name.clone(),
346
+                                        developer_account_title(&team.role),
347
+                                        team_picker_open,
348
+                                    )
349
+                                    .id("settings-team-combobox")
350
+                                    .on_click(cx.listener(Self::toggle_team_picker)),
351
+                                    team_picker_open,
352
+                                    dropdown_list((0..teams.len()).map(|index| {
353
+                                        settings_team_row(&teams[index], index == selected)
354
+                                            .id(("settings-team-row", index))
355
+                                            .on_click(cx.listener(
356
+                                                move |this, event, window, cx| {
357
+                                                    this.select_team(index, event, window, cx)
358
+                                                },
359
+                                            ))
360
+                                    }))
361
+                                    .id("settings-team-options"),
362
+                                ))
363
+                                .child(properties_list(vec![
364
+                                    ("Name", team.name.to_string()),
365
+                                    ("Team ID", team.identifier.to_string()),
366
+                                    ("Role", team.role.to_string()),
367
+                                ])),
368
+                        ))
369
+                    });
370
+
371
+                if let Some(team) = team {
372
+                    content = content.child(app_id_section(
373
+                        team,
374
+                        auto_app_id,
375
+                        selected_app_id,
376
+                        app_id_picker_open,
377
+                        cx,
378
+                    ));
379
+                }
380
+
381
+                settings_window_shell()
382
+                    .track_focus(&self.focus_handle)
383
+                    .gap_4()
384
+                    .child(settings_window_header_with_action(
385
+                        settings_window_header(
386
+                            "Developer Settings",
387
+                            "Configure developer-team resources used during signing.",
388
+                        ),
389
+                        team_refresh_button(cx),
390
+                    ))
391
+                    .child(scroll_panel(
392
+                        "team-settings-scroll",
393
+                        &self.scroll_handle,
394
+                        content,
395
+                    ))
396
+            }
397
+            SettingsWindowRequest::AppSettings {
398
+                app,
399
+                enabled_patches,
400
+                ..
401
+            } => {
402
+                let patch_summary = enabled_patch_summary(app, enabled_patches);
403
+
404
+                settings_window_shell()
405
+                    .track_focus(&self.focus_handle)
406
+                    .child(scroll_panel(
407
+                        "app-settings-scroll",
408
+                        &self.scroll_handle,
409
+                        div()
410
+                            .flex()
411
+                            .flex_col()
412
+                            .gap_4()
413
+                            .child(settings_window_header(
414
+                                "App Settings",
415
+                                "Review metadata and entitlements before signing.",
416
+                            ))
417
+                            .child(
418
+                                div()
419
+                                    .flex()
420
+                                    .gap_3()
421
+                                    .p_3()
422
+                                    .rounded_md()
423
+                                    .border_1()
424
+                                    .border_color(rgb(0xd8e0df))
425
+                                    .bg(rgb(0xffffff))
426
+                                    .child(app_icon_editor(app, cx))
427
+                                    .child(
428
+                                        div()
429
+                                            .min_w_0()
430
+                                            .flex()
431
+                                            .flex_1()
432
+                                            .flex_col()
433
+                                            .gap_2()
434
+                                            .child(app_detail_row(
435
+                                                "Name",
436
+                                                app.name.to_string(),
437
+                                                true,
438
+                                                cx,
439
+                                            ))
440
+                                            .child(app_detail_row(
441
+                                                "Bundle ID",
442
+                                                app.bundle_id.to_string(),
443
+                                                true,
444
+                                                cx,
445
+                                            ))
446
+                                            .child(app_detail_row(
447
+                                                "Version",
448
+                                                app.version.to_string(),
449
+                                                true,
450
+                                                cx,
451
+                                            ))
452
+                                            .child(app_detail_row(
453
+                                                "Build",
454
+                                                app.build.to_string(),
455
+                                                true,
456
+                                                cx,
457
+                                            )),
458
+                                    ),
459
+                            )
460
+                            .child(
461
+                                div()
462
+                                    .flex()
463
+                                    .flex_col()
464
+                                    .gap_2()
465
+                                    .p_3()
466
+                                    .rounded_md()
467
+                                    .border_1()
468
+                                    .border_color(rgb(0xd8e0df))
469
+                                    .bg(rgb(0xffffff))
470
+                                    .child(app_detail_row("IPA", app.path.to_string(), false, cx))
471
+                                    .child(app_detail_row(
472
+                                        "Executable",
473
+                                        app.name.to_string().replace(' ', ""),
474
+                                        true,
475
+                                        cx,
476
+                                    ))
477
+                                    .child(app_detail_row(
478
+                                        "Minimum OS",
479
+                                        "iOS 15.0".to_string(),
480
+                                        true,
481
+                                        cx,
482
+                                    ))
483
+                                    .child(app_detail_row(
484
+                                        "Supported devices",
485
+                                        "iPhone, iPad".to_string(),
486
+                                        true,
487
+                                        cx,
488
+                                    ))
489
+                                    .child(app_detail_row("Patches", patch_summary, false, cx)),
490
+                            )
491
+                            .child(entitlements_table(app, cx)),
492
+                    ))
493
+            }
494
+            SettingsWindowRequest::AdiSettings {
495
+                backends,
496
+                selected_backend,
497
+                machine_identity,
498
+                ..
499
+            } => {
500
+                let selected = *selected_backend;
501
+                let backend = backends.get(selected);
502
+                let editable_identity = backend
503
+                    .map(|backend| backend.editable_identity)
504
+                    .unwrap_or(false);
505
+
506
+                let mut content = div()
507
+                    .flex()
508
+                    .flex_col()
509
+                    .gap_4()
510
+                    .child(settings_window_header(
511
+                        "Settings",
512
+                        "Choose the ADI backend and review the machine identity it uses.",
513
+                    ))
514
+                    .child(
515
+                        div()
516
+                            .flex()
517
+                            .flex_col()
518
+                            .gap_2()
519
+                            .child(
520
+                                div()
521
+                                    .text_xs()
522
+                                    .font_weight(FontWeight::SEMIBOLD)
523
+                                    .text_color(rgb(0x66767c))
524
+                                    .child("ADI Backend"),
525
+                            )
526
+                            .when_some(backend, |this, backend| {
527
+                                this.child(settings_backend_combo_with_popover(
528
+                                    settings_adi_backend_combo_button(
529
+                                        backend,
530
+                                        adi_backend_picker_open,
531
+                                    )
532
+                                    .id("adi-backend-combobox")
533
+                                    .on_click(cx.listener(Self::toggle_adi_backend_picker)),
534
+                                    adi_backend_picker_open,
535
+                                    dropdown_list((0..backends.len()).map(|index| {
536
+                                        settings_adi_backend_option(
537
+                                            &backends[index],
538
+                                            index == selected,
539
+                                        )
540
+                                        .id(("adi-backend-option", index))
541
+                                        .on_click(
542
+                                            cx.listener(move |this, event, window, cx| {
543
+                                                this.select_adi_backend(index, event, window, cx)
544
+                                            }),
545
+                                        )
546
+                                    }))
547
+                                    .id("adi-backend-options"),
548
+                                ))
549
+                            }),
550
+                    );
551
+
552
+                if let Some(backend) = backend {
553
+                    content = content.child(adi_backend_status_section(backend, cx));
554
+                }
555
+
556
+                content = content.child(machine_identity_section(
557
+                    machine_identity,
558
+                    editable_identity,
559
+                    cx,
560
+                ));
561
+
562
+                settings_window_shell()
563
+                    .track_focus(&self.focus_handle)
564
+                    .child(scroll_panel(
565
+                        "adi-settings-scroll",
566
+                        &self.scroll_handle,
567
+                        content,
568
+                    ))
569
+            }
570
+        }
571
+    }
572
+}
573
+
574
+pub(crate) fn show_or_open_settings_window(
575
+    handle: Option<WindowHandle<SettingsWindow>>,
576
+    request: SettingsWindowRequest,
577
+    width: f32,
578
+    height: f32,
579
+    cx: &mut App,
580
+) -> WindowHandle<SettingsWindow> {
581
+    if let Some(handle) = handle {
582
+        if handle
583
+            .update(cx, |settings, window, cx| {
584
+                settings.show_request(request.clone(), window, cx);
585
+            })
586
+            .is_ok()
587
+        {
588
+            return handle;
589
+        }
590
+    }
591
+
592
+    open_settings_window(request, width, height, cx)
593
+}
594
+
595
+fn open_settings_window(
596
+    request: SettingsWindowRequest,
597
+    width: f32,
598
+    height: f32,
599
+    cx: &mut App,
600
+) -> WindowHandle<SettingsWindow> {
601
+    let window_size = size(px(width), px(height));
602
+    let bounds = Bounds::centered(None, window_size, cx);
603
+    let title = request.title();
604
+
605
+    cx.open_window(
606
+        WindowOptions {
607
+            window_bounds: Some(WindowBounds::Windowed(bounds)),
608
+            window_min_size: Some(window_size),
609
+            is_resizable: true,
610
+            is_minimizable: false,
611
+            kind: WindowKind::Floating,
612
+            ..Default::default()
613
+        },
614
+        |window, cx| {
615
+            window.set_window_title(title);
616
+            cx.new(|cx| SettingsWindow::new(request, window, cx))
617
+        },
618
+    )
619
+    .expect("failed to open settings window")
620
+}
621
+
622
+fn scroll_panel(
623
+    scroll_id: &'static str,
624
+    scroll_handle: &ScrollHandle,
625
+    content: impl IntoElement,
626
+) -> gpui::Div {
627
+    let viewport_height = scroll_handle.bounds().size.height.as_f32();
628
+    let max_scroll = scroll_handle.max_offset().y.as_f32();
629
+    let is_scrollable = viewport_height > 0. && max_scroll > 0.5;
630
+    let scroll_offset = (-scroll_handle.offset().y.as_f32()).clamp(0., max_scroll);
631
+    let content_height = viewport_height + max_scroll;
632
+    let thumb_height = if is_scrollable {
633
+        ((viewport_height / content_height) * viewport_height).clamp(36., viewport_height)
634
+    } else {
635
+        0.
636
+    };
637
+    let thumb_top = if is_scrollable && max_scroll > 0. {
638
+        (scroll_offset / max_scroll) * (viewport_height - thumb_height)
639
+    } else {
640
+        0.
641
+    };
642
+
643
+    div()
644
+        .min_h_0()
645
+        .flex_1()
646
+        .flex()
647
+        .gap_2()
648
+        .child(
649
+            div()
650
+                .id(scroll_id)
651
+                .min_w_0()
652
+                .h_full()
653
+                .flex_1()
654
+                .overflow_y_scroll()
655
+                .scrollbar_width(px(1.))
656
+                .track_scroll(scroll_handle)
657
+                .child(content),
658
+        )
659
+        .when(is_scrollable, |this| {
660
+            this.child(
661
+                div()
662
+                    .flex_none()
663
+                    .w(px(6.))
664
+                    .h_full()
665
+                    .rounded_full()
666
+                    .bg(rgb(0xdde5e4))
667
+                    .flex()
668
+                    .flex_col()
669
+                    .child(div().flex_none().h(px(thumb_top)))
670
+                    .child(
671
+                        div()
672
+                            .flex_none()
673
+                            .w_full()
674
+                            .h(px(thumb_height))
675
+                            .rounded_full()
676
+                            .bg(rgb(0x789094)),
677
+                    )
678
+                    .child(div().flex_1()),
679
+            )
680
+        })
681
+}
682
+
683
+fn settings_window_shell() -> gpui::Div {
684
+    div()
685
+        .size_full()
686
+        .p_5()
687
+        .flex()
688
+        .flex_col()
689
+        .bg(rgb(0xf4f6f4))
690
+        .text_color(rgb(0x263238))
691
+        .font_family(".SystemUIFont")
692
+}
693
+
694
+fn settings_window_header(title: &'static str, detail: &'static str) -> gpui::Div {
695
+    div()
696
+        .flex()
697
+        .flex_col()
698
+        .gap_0p5()
699
+        .child(
700
+            div()
701
+                .text_sm()
702
+                .font_weight(FontWeight::BOLD)
703
+                .text_color(rgb(0x24333a))
704
+                .child(title),
705
+        )
706
+        .child(div().text_xs().text_color(rgb(0x6a7a81)).child(detail))
707
+}
708
+
709
+fn settings_window_header_with_action(
710
+    header: impl IntoElement,
711
+    action: impl IntoElement,
712
+) -> gpui::Div {
713
+    div()
714
+        .flex()
715
+        .items_start()
716
+        .justify_between()
717
+        .gap_3()
718
+        .child(header)
719
+        .child(action)
720
+}
721
+
722
+fn team_refresh_button(cx: &mut Context<SettingsWindow>) -> impl IntoElement {
723
+    div()
724
+        .id("refresh-team-details")
725
+        .flex_none()
726
+        .h_8()
727
+        .px_3()
728
+        .rounded_md()
729
+        .bg(rgb(0xebf1f0))
730
+        .text_color(rgb(0x53666d))
731
+        .text_xs()
732
+        .font_weight(FontWeight::SEMIBOLD)
733
+        .flex()
734
+        .items_center()
735
+        .justify_center()
736
+        .gap_2()
737
+        .cursor_pointer()
738
+        .hover(|style| style.bg(rgb(0xdfe8e6)))
739
+        .on_click(cx.listener(SettingsWindow::refresh_team_details))
740
+        .child(lucide_icon("icons/refresh-cw.svg"))
741
+        .child("Refresh")
742
+}
743
+
744
+fn settings_label(label: &'static str) -> gpui::Div {
745
+    div()
746
+        .text_xs()
747
+        .font_weight(FontWeight::SEMIBOLD)
748
+        .text_color(rgb(0x66767c))
749
+        .child(label)
750
+}
751
+
752
+fn developer_settings_section(
753
+    title: &'static str,
754
+    detail: &'static str,
755
+    body: impl IntoElement,
756
+) -> gpui::Div {
757
+    div()
758
+        .p_3()
759
+        .rounded_md()
760
+        .border_1()
761
+        .border_color(rgb(0xd8e0df))
762
+        .bg(rgb(0xffffff))
763
+        .flex()
764
+        .flex_col()
765
+        .gap_3()
766
+        .child(
767
+            div()
768
+                .flex()
769
+                .flex_col()
770
+                .gap_0p5()
771
+                .child(
772
+                    div()
773
+                        .text_sm()
774
+                        .font_weight(FontWeight::SEMIBOLD)
775
+                        .text_color(rgb(0x24333a))
776
+                        .child(title),
777
+                )
778
+                .child(div().text_xs().text_color(rgb(0x6a7a81)).child(detail)),
779
+        )
780
+        .child(body)
781
+}
782
+
783
+fn settings_team_row(team: &TeamOption, selected: bool) -> gpui::Div {
784
+    div()
785
+        .h(px(COMBO_ITEM_HEIGHT))
786
+        .px_3()
787
+        .rounded_md()
788
+        .border_1()
789
+        .border_color(if selected {
790
+            rgb(0x0f6f7a)
791
+        } else {
792
+            rgb(0xd8e0df)
793
+        })
794
+        .bg(if selected {
795
+            rgb(0xf0fbfa)
796
+        } else {
797
+            rgb(0xffffff)
798
+        })
799
+        .cursor_pointer()
800
+        .hover(|style| style.bg(rgb(0xf6f9f9)))
801
+        .flex()
802
+        .items_center()
803
+        .child(combo_item_content(
804
+            team.identifier.clone(),
805
+            team.name.clone(),
806
+            developer_account_title(&team.role),
807
+        ))
808
+}
809
+
810
+fn app_id_section(
811
+    team: &TeamOption,
812
+    auto_app_id: bool,
813
+    selected_app_id: usize,
814
+    picker_open: bool,
815
+    cx: &mut Context<SettingsWindow>,
816
+) -> gpui::Div {
817
+    let manual_enabled = !auto_app_id;
818
+    let selected_app_id = selected_app_id.min(team.app_ids.len().saturating_sub(1));
819
+    let selected = team.app_ids.get(selected_app_id);
820
+
821
+    developer_settings_section(
822
+        "App ID",
823
+        "Identifier used when creating or selecting the provisioning profile.",
824
+        div()
825
+            .flex()
826
+            .flex_col()
827
+            .gap_3()
828
+            .child(auto_app_id_checkbox(auto_app_id, cx))
829
+            .child(
830
+                div()
831
+                    .flex()
832
+                    .flex_col()
833
+                    .gap_2()
834
+                    .child(settings_label("Manual App ID"))
835
+                    .child(
836
+                        div()
837
+                            .flex()
838
+                            .items_center()
839
+                            .gap_2()
840
+                            .when_some(selected, |this, selected| {
841
+                                this.child(
842
+                                    div()
843
+                                        .min_w_0()
844
+                                        .flex_1()
845
+                                        .when(!manual_enabled, |this| this.opacity(0.5))
846
+                                        .child(combo_with_popover(
847
+                                            "app-id-popover-scroll",
848
+                                            combo_button(
849
+                                                selected.identifier.clone(),
850
+                                                selected.name.clone(),
851
+                                                selected.kind.clone(),
852
+                                                picker_open && manual_enabled,
853
+                                            )
854
+                                            .id("app-id-combobox")
855
+                                            .when(
856
+                                                manual_enabled,
857
+                                                |this| {
858
+                                                    this.on_click(cx.listener(
859
+                                                        SettingsWindow::toggle_app_id_picker,
860
+                                                    ))
861
+                                                },
862
+                                            ),
863
+                                            picker_open && manual_enabled,
864
+                                            dropdown_list((0..team.app_ids.len()).map(|index| {
865
+                                                settings_app_id_row(
866
+                                                    &team.app_ids[index],
867
+                                                    index == selected_app_id,
868
+                                                )
869
+                                                .id(("app-id-row", index))
870
+                                                .on_click(cx.listener(
871
+                                                    move |this, event, window, cx| {
872
+                                                        this.select_app_id(index, event, window, cx)
873
+                                                    },
874
+                                                ))
875
+                                            }))
876
+                                            .id("app-id-options"),
877
+                                        )),
878
+                                )
879
+                            })
880
+                            .child(app_id_actions(!manual_enabled, cx)),
881
+                    ),
882
+            ),
883
+    )
884
+}
885
+
886
+fn auto_app_id_checkbox(checked: bool, cx: &mut Context<SettingsWindow>) -> impl IntoElement {
887
+    div()
888
+        .id("auto-app-id")
889
+        .p_2()
890
+        .rounded_md()
891
+        .bg(rgb(0xf6f9f9))
892
+        .flex()
893
+        .items_center()
894
+        .gap_2()
895
+        .cursor_pointer()
896
+        .hover(|style| style.bg(rgb(0xebf1f0)))
897
+        .on_click(cx.listener(SettingsWindow::toggle_auto_app_id))
898
+        .child(
899
+            div()
900
+                .flex_none()
901
+                .w_4()
902
+                .h_4()
903
+                .rounded_sm()
904
+                .border_1()
905
+                .border_color(if checked {
906
+                    rgb(0x173f45)
907
+                } else {
908
+                    rgb(0xaebcba)
909
+                })
910
+                .bg(if checked {
911
+                    rgb(0x173f45)
912
+                } else {
913
+                    rgb(0xffffff)
914
+                })
915
+                .flex()
916
+                .items_center()
917
+                .justify_center()
918
+                .when(checked, |this| {
919
+                    this.child(div().w_2().h_2().rounded_sm().bg(rgb(0xffffff)))
920
+                }),
921
+        )
922
+        .child(
923
+            div()
924
+                .min_w_0()
925
+                .flex()
926
+                .flex_1()
927
+                .flex_col()
928
+                .gap_0p5()
929
+                .child(
930
+                    div()
931
+                        .text_xs()
932
+                        .font_weight(FontWeight::SEMIBOLD)
933
+                        .text_color(rgb(0x24333a))
934
+                        .child("Automatically pick or create an App ID"),
935
+                )
936
+                .child(
937
+                    div()
938
+                        .text_xs()
939
+                        .text_color(rgb(0x6a7a81))
940
+                        .child("Manual App ID selection stays visible below."),
941
+                ),
942
+        )
943
+}
944
+
945
+fn app_id_actions(disabled: bool, cx: &mut Context<SettingsWindow>) -> impl IntoElement {
946
+    div()
947
+        .flex_none()
948
+        .flex()
949
+        .items_center()
950
+        .gap_1()
951
+        .child(app_id_icon_button(
952
+            "add-app-id",
953
+            "icons/plus.svg",
954
+            disabled,
955
+            cx.listener(SettingsWindow::add_app_id),
956
+        ))
957
+        .child(app_id_icon_button(
958
+            "remove-app-id",
959
+            "icons/minus.svg",
960
+            disabled,
961
+            cx.listener(SettingsWindow::remove_app_id),
962
+        ))
963
+        .child(app_id_icon_button(
964
+            "edit-app-id",
965
+            "icons/pencil.svg",
966
+            disabled,
967
+            cx.listener(SettingsWindow::edit_app_id),
968
+        ))
969
+}
970
+
971
+fn app_id_icon_button(
972
+    id: &'static str,
973
+    icon: &'static str,
974
+    disabled: bool,
975
+    listener: impl Fn(&ClickEvent, &mut Window, &mut App) + 'static,
976
+) -> impl IntoElement {
977
+    div()
978
+        .flex_none()
979
+        .w_6()
980
+        .h_6()
981
+        .rounded_md()
982
+        .bg(rgb(0xebf1f0))
983
+        .text_color(rgb(0x53666d))
984
+        .flex()
985
+        .items_center()
986
+        .justify_center()
987
+        .id(id)
988
+        .when(disabled, |this| this.opacity(0.45))
989
+        .when(!disabled, |this| {
990
+            this.cursor_pointer()
991
+                .hover(|style| style.bg(rgb(0xdfe8e6)))
992
+                .on_click(listener)
993
+        })
994
+        .child(lucide_icon(icon))
995
+}
996
+
997
+fn settings_app_id_row(app_id: &AppIdOption, selected: bool) -> gpui::Div {
998
+    div()
999
+        .h(px(COMBO_ITEM_HEIGHT))
1000
+        .px_3()
1001
+        .rounded_md()
1002
+        .border_1()
1003
+        .border_color(if selected {
1004
+            rgb(0x0f6f7a)
1005
+        } else {
1006
+            rgb(0xd8e0df)
1007
+        })
1008
+        .bg(if selected {
1009
+            rgb(0xf0fbfa)
1010
+        } else {
1011
+            rgb(0xffffff)
1012
+        })
1013
+        .cursor_pointer()
1014
+        .hover(|style| style.bg(rgb(0xf6f9f9)))
1015
+        .flex()
1016
+        .items_center()
1017
+        .child(combo_item_content(
1018
+            app_id.identifier.clone(),
1019
+            app_id.name.clone(),
1020
+            app_id.kind.clone(),
1021
+        ))
1022
+}
1023
+
1024
+fn settings_backend_combo_with_popover(
1025
+    trigger: impl IntoElement,
1026
+    open: bool,
1027
+    popover: impl IntoElement,
1028
+) -> gpui::Div {
1029
+    div().relative().child(trigger).when(open, |this| {
1030
+        this.child(
1031
+            div().absolute().top_0().left_0().w(px(0.)).h(px(0.)).child(
1032
+                deferred(
1033
+                    anchored()
1034
+                        .snap_to_window_with_margin(px(8.))
1035
+                        .position_mode(AnchoredPositionMode::Local)
1036
+                        .position(point(px(0.), px(ADI_BACKEND_COMBO_HEIGHT + 8.)))
1037
+                        .child(
1038
+                            div()
1039
+                                .w(px(ADI_BACKEND_POPOVER_WIDTH))
1040
+                                .max_h(px(ADI_BACKEND_POPOVER_MAX_HEIGHT))
1041
+                                .rounded_md()
1042
+                                .border_1()
1043
+                                .border_color(rgb(0xd8e0df))
1044
+                                .bg(rgb(0xf8fbfa))
1045
+                                .id("adi-backend-popover-scroll")
1046
+                                .overflow_y_scroll()
1047
+                                .scrollbar_width(px(8.))
1048
+                                .occlude()
1049
+                                .child(popover),
1050
+                        ),
1051
+                )
1052
+                .with_priority(10),
1053
+            ),
1054
+        )
1055
+    })
1056
+}
1057
+
1058
+fn settings_adi_backend_combo_button(backend: &AdiBackendOption, open: bool) -> gpui::Div {
1059
+    div()
1060
+        .h(px(ADI_BACKEND_COMBO_HEIGHT))
1061
+        .p_3()
1062
+        .rounded_md()
1063
+        .border_1()
1064
+        .border_color(if open { rgb(0x0f6f7a) } else { rgb(0xcfd8d6) })
1065
+        .bg(rgb(0xffffff))
1066
+        .cursor_pointer()
1067
+        .hover(|style| style.bg(rgb(0xf6f9f9)))
1068
+        .flex()
1069
+        .items_center()
1070
+        .gap_3()
1071
+        .child(status_dot(&backend.status))
1072
+        .child(
1073
+            div()
1074
+                .min_w_0()
1075
+                .flex()
1076
+                .flex_1()
1077
+                .flex_col()
1078
+                .gap_1()
1079
+                .child(
1080
+                    div()
1081
+                        .text_sm()
1082
+                        .font_weight(FontWeight::SEMIBOLD)
1083
+                        .text_color(rgb(0x24333a))
1084
+                        .text_ellipsis()
1085
+                        .child(backend.name.clone()),
1086
+                )
1087
+                .child(
1088
+                    div()
1089
+                        .text_xs()
1090
+                        .text_color(rgb(0x6a7a81))
1091
+                        .text_ellipsis()
1092
+                        .child(backend.detail.clone()),
1093
+                ),
1094
+        )
1095
+        .child(status_badge(backend.status.clone(), false))
1096
+        .child(chevron(open))
1097
+}
1098
+
1099
+fn settings_adi_backend_option(backend: &AdiBackendOption, selected: bool) -> gpui::Div {
1100
+    div()
1101
+        .min_h(px(56.))
1102
+        .p_2()
1103
+        .rounded_md()
1104
+        .border_1()
1105
+        .border_color(if selected {
1106
+            rgb(0x0f6f7a)
1107
+        } else {
1108
+            rgb(0xd8e0df)
1109
+        })
1110
+        .bg(if selected {
1111
+            rgb(0xf0fbfa)
1112
+        } else {
1113
+            rgb(0xffffff)
1114
+        })
1115
+        .cursor_pointer()
1116
+        .hover(|style| style.bg(rgb(0xf6f9f9)))
1117
+        .flex()
1118
+        .items_center()
1119
+        .gap_2()
1120
+        .child(status_dot(&backend.status))
1121
+        .child(
1122
+            div()
1123
+                .min_w_0()
1124
+                .flex()
1125
+                .flex_1()
1126
+                .flex_col()
1127
+                .gap_0p5()
1128
+                .child(
1129
+                    div()
1130
+                        .text_sm()
1131
+                        .font_weight(FontWeight::SEMIBOLD)
1132
+                        .text_color(rgb(0x24333a))
1133
+                        .text_ellipsis()
1134
+                        .child(backend.name.clone()),
1135
+                )
1136
+                .child(
1137
+                    div()
1138
+                        .text_xs()
1139
+                        .text_color(rgb(0x6a7a81))
1140
+                        .text_ellipsis()
1141
+                        .child(backend.detail.clone()),
1142
+                ),
1143
+        )
1144
+        .child(status_badge(backend.status.clone(), selected))
1145
+}
1146
+
1147
+fn adi_backend_status_section(
1148
+    backend: &AdiBackendOption,
1149
+    cx: &mut Context<SettingsWindow>,
1150
+) -> gpui::Div {
1151
+    let color = backend_status_color(&backend.status);
1152
+
1153
+    div()
1154
+        .p_3()
1155
+        .rounded_md()
1156
+        .border_1()
1157
+        .border_color(rgb(0xd8e0df))
1158
+        .bg(rgb(0xffffff))
1159
+        .flex()
1160
+        .items_start()
1161
+        .gap_3()
1162
+        .child(
1163
+            div()
1164
+                .flex_none()
1165
+                .w(px(4.))
1166
+                .h_full()
1167
+                .min_h(px(76.))
1168
+                .rounded_full()
1169
+                .bg(rgb(color)),
1170
+        )
1171
+        .child(
1172
+            div()
1173
+                .min_w_0()
1174
+                .flex()
1175
+                .flex_1()
1176
+                .flex_col()
1177
+                .gap_2()
1178
+                .child(
1179
+                    div()
1180
+                        .min_w_0()
1181
+                        .flex()
1182
+                        .flex_wrap()
1183
+                        .items_center()
1184
+                        .justify_between()
1185
+                        .gap_2()
1186
+                        .child(
1187
+                            div()
1188
+                                .min_w_0()
1189
+                                .flex()
1190
+                                .items_center()
1191
+                                .gap_2()
1192
+                                .child(status_dot(&backend.status))
1193
+                                .child(
1194
+                                    div()
1195
+                                        .text_sm()
1196
+                                        .font_weight(FontWeight::SEMIBOLD)
1197
+                                        .text_color(rgb(0x24333a))
1198
+                                        .child("Status"),
1199
+                                ),
1200
+                        )
1201
+                        .child(status_badge(backend.status.clone(), false)),
1202
+                )
1203
+                .child(
1204
+                    div()
1205
+                        .min_w_0()
1206
+                        .w_full()
1207
+                        .text_xs()
1208
+                        .line_height(px(18.))
1209
+                        .text_color(rgb(0x6a7a81))
1210
+                        .whitespace_normal()
1211
+                        .child(backend.information.clone()),
1212
+                )
1213
+                .when(backend.repair_action.is_some(), |this| {
1214
+                    let label = backend
1215
+                        .repair_action
1216
+                        .clone()
1217
+                        .unwrap_or_else(|| "Fix Issues".into());
1218
+                    this.child(
1219
+                        div()
1220
+                            .id("repair-adi-backend")
1221
+                            .h_8()
1222
+                            .px_3()
1223
+                            .rounded_md()
1224
+                            .bg(rgb(color))
1225
+                            .text_color(rgb(0xffffff))
1226
+                            .text_xs()
1227
+                            .font_weight(FontWeight::SEMIBOLD)
1228
+                            .flex()
1229
+                            .items_center()
1230
+                            .justify_center()
1231
+                            .cursor_pointer()
1232
+                            .hover(|style| style.opacity(0.88))
1233
+                            .on_click(cx.listener(SettingsWindow::repair_adi_backend))
1234
+                            .child(label),
1235
+                    )
1236
+                }),
1237
+        )
1238
+}
1239
+
1240
+fn machine_identity_section(
1241
+    identity: &MachineIdentity,
1242
+    editable: bool,
1243
+    cx: &mut Context<SettingsWindow>,
1244
+) -> gpui::Div {
1245
+    div()
1246
+        .p_3()
1247
+        .rounded_md()
1248
+        .border_1()
1249
+        .border_color(rgb(0xd8e0df))
1250
+        .bg(rgb(0xffffff))
1251
+        .flex()
1252
+        .flex_col()
1253
+        .gap_3()
1254
+        .child(
1255
+            div()
1256
+                .flex()
1257
+                .items_center()
1258
+                .gap_2()
1259
+                .child(
1260
+                    div()
1261
+                        .text_sm()
1262
+                        .font_weight(FontWeight::SEMIBOLD)
1263
+                        .text_color(rgb(0x24333a))
1264
+                        .child("Machine Identity"),
1265
+                )
1266
+                .when(!editable, |this| this.child(read_only_badge())),
1267
+        )
1268
+        .child(machine_identity_row(
1269
+            "Machine name",
1270
+            identity.machine_name.clone(),
1271
+            editable,
1272
+            cx,
1273
+        ))
1274
+        .child(machine_identity_row(
1275
+            "OS name",
1276
+            identity.os_name.clone(),
1277
+            editable,
1278
+            cx,
1279
+        ))
1280
+        .child(machine_identity_row(
1281
+            "OS version",
1282
+            identity.os_version.clone(),
1283
+            editable,
1284
+            cx,
1285
+        ))
1286
+        .child(machine_identity_row(
1287
+            "Machine ID",
1288
+            identity.machine_id.clone(),
1289
+            editable,
1290
+            cx,
1291
+        ))
1292
+}
1293
+
1294
+fn machine_identity_row(
1295
+    label: &'static str,
1296
+    value: SharedString,
1297
+    editable: bool,
1298
+    cx: &mut Context<SettingsWindow>,
1299
+) -> gpui::Div {
1300
+    div()
1301
+        .min_w_0()
1302
+        .flex()
1303
+        .items_center()
1304
+        .gap_3()
1305
+        .child(
1306
+            div()
1307
+                .w(px(104.))
1308
+                .flex_none()
1309
+                .text_xs()
1310
+                .text_color(rgb(0x7b8a90))
1311
+                .child(label),
1312
+        )
1313
+        .child(
1314
+            div()
1315
+                .min_w_0()
1316
+                .flex_1()
1317
+                .text_sm()
1318
+                .text_color(rgb(0x405057))
1319
+                .text_ellipsis()
1320
+                .child(value),
1321
+        )
1322
+        .when(editable, |this| {
1323
+            this.child(
1324
+                div()
1325
+                    .id(("edit-machine-identity", machine_identity_id(label)))
1326
+                    .flex_none()
1327
+                    .w_6()
1328
+                    .h_6()
1329
+                    .rounded_md()
1330
+                    .bg(rgb(0xebf1f0))
1331
+                    .text_color(rgb(0x53666d))
1332
+                    .flex()
1333
+                    .items_center()
1334
+                    .justify_center()
1335
+                    .cursor_pointer()
1336
+                    .hover(|style| style.bg(rgb(0xdfe8e6)))
1337
+                    .on_click(cx.listener(SettingsWindow::edit_machine_identity))
1338
+                    .child(lucide_icon("icons/pencil.svg")),
1339
+            )
1340
+        })
1341
+}
1342
+
1343
+fn machine_identity_id(label: &'static str) -> usize {
1344
+    match label {
1345
+        "Machine name" => 0,
1346
+        "OS name" => 1,
1347
+        "OS version" => 2,
1348
+        "Machine ID" => 3,
1349
+        _ => 99,
1350
+    }
1351
+}
1352
+
1353
+fn status_badge(label: SharedString, selected: bool) -> gpui::Div {
1354
+    let color = backend_status_color(&label);
1355
+
1356
+    div()
1357
+        .flex_none()
1358
+        .px_2()
1359
+        .h_6()
1360
+        .rounded_full()
1361
+        .bg(if selected {
1362
+            rgb(status_badge_selected_bg(&label))
1363
+        } else {
1364
+            rgb(status_badge_bg(&label))
1365
+        })
1366
+        .text_color(rgb(color))
1367
+        .text_xs()
1368
+        .font_weight(FontWeight::SEMIBOLD)
1369
+        .flex()
1370
+        .items_center()
1371
+        .justify_center()
1372
+        .child(label)
1373
+}
1374
+
1375
+fn status_dot(status: &SharedString) -> gpui::Div {
1376
+    div()
1377
+        .flex_none()
1378
+        .w_2()
1379
+        .h_2()
1380
+        .rounded_full()
1381
+        .bg(rgb(backend_status_color(status)))
1382
+}
1383
+
1384
+fn backend_status_color(status: &SharedString) -> u32 {
1385
+    match status.to_string().as_str() {
1386
+        "Ready" => 0x1d6b45,
1387
+        "Needs setup" => 0x9a6a14,
1388
+        "Offline" => 0x9a302b,
1389
+        _ => 0x53666d,
1390
+    }
1391
+}
1392
+
1393
+fn status_badge_bg(status: &SharedString) -> u32 {
1394
+    match status.to_string().as_str() {
1395
+        "Ready" => 0xe5f3ec,
1396
+        "Needs setup" => 0xf6edda,
1397
+        "Offline" => 0xf4e4e2,
1398
+        _ => 0xebf1f0,
1399
+    }
1400
+}
1401
+
1402
+fn status_badge_selected_bg(status: &SharedString) -> u32 {
1403
+    match status.to_string().as_str() {
1404
+        "Ready" => 0xd3eadc,
1405
+        "Needs setup" => 0xeadbb8,
1406
+        "Offline" => 0xebcecb,
1407
+        _ => 0xd7efec,
1408
+    }
1409
+}
1410
+
1411
+fn read_only_badge() -> gpui::Div {
1412
+    div()
1413
+        .px_2()
1414
+        .h_5()
1415
+        .rounded_full()
1416
+        .bg(rgb(0xf0f2f2))
1417
+        .text_color(rgb(0x718086))
1418
+        .text_xs()
1419
+        .font_weight(FontWeight::SEMIBOLD)
1420
+        .flex()
1421
+        .items_center()
1422
+        .justify_center()
1423
+        .child("Read-only")
1424
+}
1425
+
1426
+fn app_icon_editor(app: &AppOption, cx: &mut Context<SettingsWindow>) -> impl IntoElement {
1427
+    let initial = app
1428
+        .name
1429
+        .to_string()
1430
+        .chars()
1431
+        .next()
1432
+        .map(|c| c.to_string())
1433
+        .unwrap_or_else(|| "A".to_string());
1434
+
1435
+    div()
1436
+        .flex_none()
1437
+        .w(px(84.))
1438
+        .h(px(84.))
1439
+        .rounded_md()
1440
+        .border_1()
1441
+        .border_color(rgb(0xcfd8d6))
1442
+        .bg(rgb(0x173f45))
1443
+        .text_color(rgb(0xffffff))
1444
+        .cursor_pointer()
1445
+        .hover(|style| style.bg(rgb(0x20545c)))
1446
+        .flex()
1447
+        .flex_col()
1448
+        .items_center()
1449
+        .justify_center()
1450
+        .gap_1()
1451
+        .id("app-icon-editor")
1452
+        .on_click(cx.listener(SettingsWindow::edit_app_icon))
1453
+        .child(
1454
+            div()
1455
+                .text_2xl()
1456
+                .font_weight(FontWeight::BOLD)
1457
+                .child(initial),
1458
+        )
1459
+        .child(div().text_xs().child("Edit icon"))
1460
+}
1461
+
1462
+fn app_detail_row(
1463
+    label: &'static str,
1464
+    value: String,
1465
+    editable: bool,
1466
+    cx: &mut Context<SettingsWindow>,
1467
+) -> gpui::Div {
1468
+    div()
1469
+        .min_w_0()
1470
+        .flex()
1471
+        .items_center()
1472
+        .gap_3()
1473
+        .child(
1474
+            div()
1475
+                .w(px(96.))
1476
+                .flex_none()
1477
+                .text_xs()
1478
+                .text_color(rgb(0x7b8a90))
1479
+                .child(label),
1480
+        )
1481
+        .child(
1482
+            div()
1483
+                .min_w_0()
1484
+                .flex_1()
1485
+                .text_sm()
1486
+                .text_color(rgb(0x405057))
1487
+                .text_ellipsis()
1488
+                .child(value),
1489
+        )
1490
+        .when(editable, |this| this.child(app_detail_controls(label, cx)))
1491
+}
1492
+
1493
+fn app_detail_controls(label: &'static str, cx: &mut Context<SettingsWindow>) -> impl IntoElement {
1494
+    div()
1495
+        .flex_none()
1496
+        .w(px(84.))
1497
+        .flex()
1498
+        .items_center()
1499
+        .justify_end()
1500
+        .gap_1()
1501
+        .child(app_detail_revert_slot(label, false, cx))
1502
+        .child(edit_button(label, cx))
1503
+}
1504
+
1505
+fn edit_button(label: &'static str, cx: &mut Context<SettingsWindow>) -> impl IntoElement {
1506
+    div()
1507
+        .flex_none()
1508
+        .w_6()
1509
+        .h_6()
1510
+        .rounded_md()
1511
+        .bg(rgb(0xebf1f0))
1512
+        .text_color(rgb(0x53666d))
1513
+        .flex()
1514
+        .items_center()
1515
+        .justify_center()
1516
+        .cursor_pointer()
1517
+        .hover(|style| style.bg(rgb(0xdfe8e6)))
1518
+        .id(("edit-app-detail", app_detail_id(label)))
1519
+        .on_click(cx.listener(SettingsWindow::edit_app_detail))
1520
+        .child(lucide_icon("icons/pencil.svg"))
1521
+}
1522
+
1523
+fn app_detail_revert_slot(
1524
+    label: &'static str,
1525
+    changed: bool,
1526
+    cx: &mut Context<SettingsWindow>,
1527
+) -> impl IntoElement {
1528
+    div()
1529
+        .flex_none()
1530
+        .w(px(52.))
1531
+        .h_6()
1532
+        .rounded_md()
1533
+        .bg(rgb(0xebf1f0))
1534
+        .text_color(rgb(0x53666d))
1535
+        .text_xs()
1536
+        .font_weight(FontWeight::SEMIBOLD)
1537
+        .flex()
1538
+        .items_center()
1539
+        .justify_center()
1540
+        .id(("revert-app-detail", app_detail_id(label)))
1541
+        .when(!changed, |this| this.opacity(0.))
1542
+        .when(changed, |this| {
1543
+            this.cursor_pointer()
1544
+                .hover(|style| style.bg(rgb(0xdfe8e6)))
1545
+                .on_click(cx.listener(SettingsWindow::revert_app_detail))
1546
+        })
1547
+        .child("Revert")
1548
+}
1549
+
1550
+fn app_detail_id(label: &'static str) -> usize {
1551
+    match label {
1552
+        "Name" => 0,
1553
+        "Bundle ID" => 1,
1554
+        "Version" => 2,
1555
+        "Build" => 3,
1556
+        "Executable" => 4,
1557
+        "Minimum OS" => 5,
1558
+        "Supported devices" => 6,
1559
+        _ => 99,
1560
+    }
1561
+}
1562
+
1563
+fn enabled_patch_summary(app: &AppOption, enabled_patches: &[bool]) -> String {
1564
+    let enabled = app
1565
+        .patches
1566
+        .iter()
1567
+        .enumerate()
1568
+        .filter_map(|(index, patch)| {
1569
+            enabled_patches
1570
+                .get(index)
1571
+                .copied()
1572
+                .filter(|enabled| *enabled)
1573
+                .map(|_| format!("{} ({})", patch.name, patch.detail))
1574
+        })
1575
+        .collect::<Vec<_>>();
1576
+
1577
+    if enabled.is_empty() {
1578
+        "No patch changes selected".to_string()
1579
+    } else {
1580
+        enabled.join(", ")
1581
+    }
1582
+}
1583
+
1584
+fn entitlements_table(app: &AppOption, cx: &mut Context<SettingsWindow>) -> gpui::Div {
1585
+    div()
1586
+        .flex()
1587
+        .flex_col()
1588
+        .rounded_md()
1589
+        .border_1()
1590
+        .border_color(rgb(0xd8e0df))
1591
+        .bg(rgb(0xffffff))
1592
+        .overflow_hidden()
1593
+        .child(
1594
+            div()
1595
+                .px_3()
1596
+                .py_2()
1597
+                .border_b_1()
1598
+                .border_color(rgb(0xd8e0df))
1599
+                .flex()
1600
+                .items_center()
1601
+                .justify_start()
1602
+                .gap_2()
1603
+                .child(
1604
+                    div()
1605
+                        .text_sm()
1606
+                        .font_weight(FontWeight::SEMIBOLD)
1607
+                        .text_color(rgb(0x24333a))
1608
+                        .child("Entitlements"),
1609
+                )
1610
+                .child(entitlements_actions(false, cx)),
1611
+        )
1612
+        .child(entitlement_header_row())
1613
+        .child(entitlement_row(
1614
+            "application-identifier",
1615
+            "String",
1616
+            format!("TEAMID1234.{}", app.bundle_id),
1617
+        ))
1618
+        .child(entitlement_row(
1619
+            "com.apple.developer.team-identifier",
1620
+            "String",
1621
+            "TEAMID1234".to_string(),
1622
+        ))
1623
+        .child(entitlement_row(
1624
+            "get-task-allow",
1625
+            "Boolean",
1626
+            "true".to_string(),
1627
+        ))
1628
+        .child(entitlement_row(
1629
+            "keychain-access-groups",
1630
+            "Array",
1631
+            format!("TEAMID1234.{}", app.bundle_id),
1632
+        ))
1633
+        .child(entitlement_row(
1634
+            "com.apple.security.application-groups",
1635
+            "Array",
1636
+            "None".to_string(),
1637
+        ))
1638
+}
1639
+
1640
+fn entitlements_actions(changed: bool, cx: &mut Context<SettingsWindow>) -> impl IntoElement {
1641
+    div()
1642
+        .flex_none()
1643
+        .flex()
1644
+        .items_center()
1645
+        .gap_1()
1646
+        .child(entitlement_icon_button(
1647
+            "add-entitlement",
1648
+            "icons/plus.svg",
1649
+            cx.listener(SettingsWindow::add_entitlement),
1650
+        ))
1651
+        .child(entitlement_icon_button(
1652
+            "remove-entitlement",
1653
+            "icons/minus.svg",
1654
+            cx.listener(SettingsWindow::remove_entitlement),
1655
+        ))
1656
+        .child(entitlements_revert_slot(changed, cx))
1657
+}
1658
+
1659
+fn entitlement_icon_button(
1660
+    id: &'static str,
1661
+    icon: &'static str,
1662
+    listener: impl Fn(&ClickEvent, &mut Window, &mut App) + 'static,
1663
+) -> impl IntoElement {
1664
+    div()
1665
+        .flex_none()
1666
+        .w_6()
1667
+        .h_6()
1668
+        .rounded_md()
1669
+        .bg(rgb(0xebf1f0))
1670
+        .text_color(rgb(0x53666d))
1671
+        .flex()
1672
+        .items_center()
1673
+        .justify_center()
1674
+        .cursor_pointer()
1675
+        .hover(|style| style.bg(rgb(0xdfe8e6)))
1676
+        .id(id)
1677
+        .on_click(listener)
1678
+        .child(lucide_icon(icon))
1679
+}
1680
+
1681
+fn entitlements_revert_slot(changed: bool, cx: &mut Context<SettingsWindow>) -> impl IntoElement {
1682
+    div()
1683
+        .flex_none()
1684
+        .w(px(52.))
1685
+        .h_6()
1686
+        .rounded_md()
1687
+        .bg(rgb(0xebf1f0))
1688
+        .text_color(rgb(0x53666d))
1689
+        .text_xs()
1690
+        .font_weight(FontWeight::SEMIBOLD)
1691
+        .flex()
1692
+        .items_center()
1693
+        .justify_center()
1694
+        .id("revert-entitlements")
1695
+        .when(!changed, |this| this.opacity(0.))
1696
+        .when(changed, |this| {
1697
+            this.cursor_pointer()
1698
+                .hover(|style| style.bg(rgb(0xdfe8e6)))
1699
+                .on_click(cx.listener(SettingsWindow::revert_entitlements))
1700
+        })
1701
+        .child("Revert")
1702
+}
1703
+
1704
+fn entitlement_header_row() -> gpui::Div {
1705
+    div()
1706
+        .grid()
1707
+        .grid_cols(3)
1708
+        .px_3()
1709
+        .py_2()
1710
+        .bg(rgb(0xf6f9f9))
1711
+        .border_b_1()
1712
+        .border_color(rgb(0xd8e0df))
1713
+        .text_xs()
1714
+        .font_weight(FontWeight::SEMIBOLD)
1715
+        .text_color(rgb(0x66767c))
1716
+        .child("Key")
1717
+        .child("Type")
1718
+        .child("Value")
1719
+}
1720
+
1721
+fn entitlement_row(key: &'static str, kind: &'static str, value: String) -> gpui::Div {
1722
+    div()
1723
+        .grid()
1724
+        .grid_cols(3)
1725
+        .px_3()
1726
+        .py_2()
1727
+        .border_b_1()
1728
+        .border_color(rgb(0xe8eeee))
1729
+        .text_xs()
1730
+        .text_color(rgb(0x405057))
1731
+        .child(div().min_w_0().text_ellipsis().child(key))
1732
+        .child(div().min_w_0().text_ellipsis().child(kind))
1733
+        .child(div().min_w_0().text_ellipsis().child(value))
1734
+}
... ...
@@ -0,0 +1,299 @@
1
+use crate::constants::*;
2
+use crate::models::{AppOption, DeviceOption};
3
+use gpui::{
4
+    anchored, canvas, deferred, div, point, prelude::*, px, rgb, svg, AnchoredPositionMode,
5
+    FontWeight, IntoElement, ParentElement, PathBuilder, SharedString, StatefulInteractiveElement,
6
+    Styled,
7
+};
8
+
9
+pub(crate) fn progress_circle(progress: f32, turn: f32) -> impl IntoElement {
10
+    let progress = progress.clamp(0., 1.);
11
+    let turn = turn.fract();
12
+
13
+    canvas(
14
+        move |_, _, _| {},
15
+        move |bounds, _, window, _| {
16
+            let side = bounds.size.width.as_f32().min(bounds.size.height.as_f32());
17
+            let radius = (side / 2. - 2.).max(1.);
18
+            let center = point(
19
+                bounds.origin.x + bounds.size.width / 2.,
20
+                bounds.origin.y + bounds.size.height / 2.,
21
+            );
22
+            let radii = point(px(radius), px(radius));
23
+            let top = point(center.x, center.y - px(radius));
24
+            let bottom = point(center.x, center.y + px(radius));
25
+
26
+            let mut track = PathBuilder::stroke(px(2.));
27
+            track.move_to(top);
28
+            track.arc_to(radii, px(0.), false, true, bottom);
29
+            track.arc_to(radii, px(0.), false, true, top);
30
+            if let Ok(path) = track.build() {
31
+                window.paint_path(path, rgb(0x5b777d));
32
+            }
33
+
34
+            if progress <= 0. {
35
+                return;
36
+            }
37
+
38
+            let start_angle = -std::f32::consts::FRAC_PI_2 + std::f32::consts::TAU * turn;
39
+            let start = point(
40
+                center.x + px(start_angle.cos() * radius),
41
+                center.y + px(start_angle.sin() * radius),
42
+            );
43
+            let end_angle = start_angle + std::f32::consts::TAU * progress;
44
+            let end = point(
45
+                center.x + px(end_angle.cos() * radius),
46
+                center.y + px(end_angle.sin() * radius),
47
+            );
48
+
49
+            let mut arc = PathBuilder::stroke(px(2.));
50
+            arc.move_to(start);
51
+            if progress >= 0.999 {
52
+                let mid_angle = start_angle + std::f32::consts::PI;
53
+                let mid = point(
54
+                    center.x + px(mid_angle.cos() * radius),
55
+                    center.y + px(mid_angle.sin() * radius),
56
+                );
57
+                arc.arc_to(radii, px(0.), false, true, mid);
58
+                arc.arc_to(radii, px(0.), false, true, start);
59
+            } else {
60
+                arc.arc_to(radii, px(0.), progress > 0.5, true, end);
61
+            }
62
+
63
+            if let Ok(path) = arc.build() {
64
+                window.paint_path(path, rgb(0xffffff));
65
+            }
66
+        },
67
+    )
68
+    .w_4()
69
+    .h_4()
70
+}
71
+pub(crate) fn combo_button(
72
+    overline: impl Into<SharedString>,
73
+    title: impl Into<SharedString>,
74
+    detail: impl Into<SharedString>,
75
+    open: bool,
76
+) -> gpui::Div {
77
+    let overline = overline.into();
78
+    let title = title.into();
79
+    let detail = detail.into();
80
+
81
+    div()
82
+        .h(px(COMBO_ITEM_HEIGHT))
83
+        .px_3()
84
+        .rounded_md()
85
+        .border_1()
86
+        .border_color(if open { rgb(0x0f6f7a) } else { rgb(0xcfd8d6) })
87
+        .bg(rgb(0xffffff))
88
+        .cursor_pointer()
89
+        .hover(|style| style.bg(rgb(0xf6f9f9)))
90
+        .flex()
91
+        .items_center()
92
+        .gap_3()
93
+        .child(combo_item_content(overline, title, detail))
94
+        .child(chevron(open))
95
+}
96
+
97
+pub(crate) fn combo_with_popover(
98
+    scroll_id: &'static str,
99
+    trigger: impl IntoElement,
100
+    open: bool,
101
+    popover: impl IntoElement,
102
+) -> gpui::Div {
103
+    div().relative().child(trigger).when(open, |this| {
104
+        this.child(
105
+            div().absolute().top_0().left_0().w(px(0.)).h(px(0.)).child(
106
+                deferred(
107
+                    anchored()
108
+                        .snap_to_window_with_margin(px(8.))
109
+                        .position_mode(AnchoredPositionMode::Local)
110
+                        .position(point(px(0.), px(COMBO_POPOVER_OFFSET_Y)))
111
+                        .child(
112
+                            div()
113
+                                .w(px(COMBO_POPOVER_WIDTH))
114
+                                .max_h(px(COMBO_POPOVER_MAX_HEIGHT))
115
+                                .rounded_md()
116
+                                .border_1()
117
+                                .border_color(rgb(0xd8e0df))
118
+                                .bg(rgb(0xf8fbfa))
119
+                                .id(scroll_id)
120
+                                .overflow_y_scroll()
121
+                                .scrollbar_width(px(8.))
122
+                                .occlude()
123
+                                .child(popover),
124
+                        ),
125
+                )
126
+                .with_priority(10),
127
+            ),
128
+        )
129
+    })
130
+}
131
+
132
+pub(crate) fn combo_item_content(
133
+    overline: impl Into<SharedString>,
134
+    title: impl Into<SharedString>,
135
+    detail: impl Into<SharedString>,
136
+) -> gpui::Div {
137
+    div()
138
+        .min_w_0()
139
+        .h_full()
140
+        .py_2()
141
+        .flex()
142
+        .flex_1()
143
+        .flex_col()
144
+        .justify_between()
145
+        .child(
146
+            div()
147
+                .text_xs()
148
+                .text_color(rgb(0x66767c))
149
+                .text_ellipsis()
150
+                .child(overline.into()),
151
+        )
152
+        .child(
153
+            div()
154
+                .text_sm()
155
+                .font_weight(FontWeight::SEMIBOLD)
156
+                .text_color(rgb(0x24333a))
157
+                .text_ellipsis()
158
+                .child(title.into()),
159
+        )
160
+        .child(
161
+            div()
162
+                .text_xs()
163
+                .text_color(rgb(0x87959a))
164
+                .text_ellipsis()
165
+                .child(detail.into()),
166
+        )
167
+}
168
+
169
+pub(crate) fn chevron(open: bool) -> impl IntoElement {
170
+    div()
171
+        .flex_none()
172
+        .w_6()
173
+        .h_6()
174
+        .rounded_md()
175
+        .flex()
176
+        .items_center()
177
+        .justify_center()
178
+        .bg(rgb(0xebf1f0))
179
+        .text_color(rgb(0x53666d))
180
+        .child(lucide_icon(if open {
181
+            "icons/chevron-up.svg"
182
+        } else {
183
+            "icons/chevron-down.svg"
184
+        }))
185
+}
186
+
187
+pub(crate) fn lucide_icon(path: &'static str) -> impl IntoElement {
188
+    lucide_icon_tinted(path, 0x53666d)
189
+}
190
+
191
+pub(crate) fn lucide_icon_tinted(path: &'static str, color: u32) -> impl IntoElement {
192
+    svg().path(path).size_4().flex_none().text_color(rgb(color))
193
+}
194
+
195
+pub(crate) fn connector_arrow_icon(color: u32) -> impl IntoElement {
196
+    svg()
197
+        .path("icons/arrow-right.svg")
198
+        .size_6()
199
+        .flex_none()
200
+        .text_color(rgb(color))
201
+}
202
+
203
+pub(crate) fn developer_account_title(role: &SharedString) -> SharedString {
204
+    format!("{role} Developer account").into()
205
+}
206
+
207
+pub(crate) fn app_identity(app: &AppOption) -> SharedString {
208
+    format!("{} - {} ({})", app.bundle_id, app.version, app.build).into()
209
+}
210
+
211
+pub(crate) fn device_identity(device: &DeviceOption) -> SharedString {
212
+    format!("{} - {}", device.model, device.os).into()
213
+}
214
+
215
+pub(crate) fn dropdown_list<I, E>(options: I) -> gpui::Div
216
+where
217
+    I: IntoIterator<Item = E>,
218
+    E: IntoElement,
219
+{
220
+    div().flex().flex_col().gap_2().p_2().children(options)
221
+}
222
+
223
+pub(crate) fn menu_action_row(title: &'static str, detail: &'static str) -> gpui::Div {
224
+    div()
225
+        .p_3()
226
+        .rounded_md()
227
+        .border_1()
228
+        .border_color(rgb(0xcfd8d6))
229
+        .bg(rgb(0xffffff))
230
+        .cursor_pointer()
231
+        .hover(|style| style.bg(rgb(0xf0fbfa)))
232
+        .child(
233
+            div()
234
+                .flex()
235
+                .items_center()
236
+                .justify_between()
237
+                .gap_3()
238
+                .child(
239
+                    div()
240
+                        .min_w_0()
241
+                        .flex()
242
+                        .flex_col()
243
+                        .gap_1()
244
+                        .child(
245
+                            div()
246
+                                .text_sm()
247
+                                .font_weight(FontWeight::SEMIBOLD)
248
+                                .text_color(rgb(0x173f45))
249
+                                .child(title),
250
+                        )
251
+                        .child(div().text_xs().text_color(rgb(0x6a7a81)).child(detail)),
252
+                )
253
+                .child(
254
+                    div()
255
+                        .flex_none()
256
+                        .w_6()
257
+                        .h_6()
258
+                        .rounded_md()
259
+                        .flex()
260
+                        .items_center()
261
+                        .justify_center()
262
+                        .bg(rgb(0xebf1f0))
263
+                        .text_color(rgb(0x53666d))
264
+                        .child(lucide_icon("icons/plus.svg")),
265
+                ),
266
+        )
267
+}
268
+
269
+pub(crate) fn properties_list(rows: Vec<(&'static str, String)>) -> impl IntoElement {
270
+    div()
271
+        .flex()
272
+        .flex_col()
273
+        .gap_2()
274
+        .px_3()
275
+        .children(rows.into_iter().map(|(label, value)| {
276
+            div()
277
+                .min_w_0()
278
+                .flex()
279
+                .items_start()
280
+                .gap_3()
281
+                .child(
282
+                    div()
283
+                        .w(px(92.))
284
+                        .flex_none()
285
+                        .text_xs()
286
+                        .text_color(rgb(0x7b8a90))
287
+                        .child(label),
288
+                )
289
+                .child(
290
+                    div()
291
+                        .min_w_0()
292
+                        .flex_1()
293
+                        .text_sm()
294
+                        .text_color(rgb(0x405057))
295
+                        .text_ellipsis()
296
+                        .child(value),
297
+                )
298
+        }))
299
+}
... ...
@@ -1,12 +1,18 @@
1
-use crate::DeveloperAction;
2
-use crate::DeveloperActionBase;
3
-use crate::{impl_developer_action, impl_developer_action_base};
4 1
 use plist::Dictionary;
5 2
 use serde::{Deserialize, Serialize};
6 3
 
7
-#[derive(Debug, Serialize)]
8
-pub struct ViewDeveloperAction {}
9
-impl_developer_action_base!(ViewDeveloperAction, "viewDeveloper.action");
4
+#[derive(Debug, Deserialize)]
5
+pub struct EmptyResponse {}
6
+
7
+#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
8
+pub struct TeamID(String);
9
+
10
+#[derive(Debug, Deserialize)]
11
+#[serde(rename_all = "camelCase")]
12
+pub struct DeveloperTeam {
13
+    pub name: String,
14
+    pub team_id: TeamID,
15
+}
10 16
 
11 17
 #[derive(Debug, Deserialize)]
12 18
 #[serde(rename_all = "camelCase")]
... ...
@@ -22,8 +28,397 @@ pub struct Developer {
22 28
 }
23 29
 
24 30
 #[derive(Debug, Deserialize)]
31
+#[serde(rename_all = "camelCase")]
25 32
 pub struct DeveloperView {
26
-    pub teams: Vec<()>,
33
+    pub teams: Vec<DeveloperTeam>,
27 34
     pub developer: Developer,
28 35
 }
29
-impl_developer_action!(ViewDeveloperAction, DeveloperView);
36
+
37
+#[derive(Debug, Serialize)]
38
+pub struct ViewDeveloperAction {}
39
+impl_developer_action!(ViewDeveloperAction, "viewDeveloper.action", DeveloperView);
40
+
41
+#[derive(Debug, Deserialize)]
42
+#[serde(rename_all = "camelCase")]
43
+pub struct ListTeamsResponse {
44
+    pub teams: Vec<DeveloperTeam>,
45
+}
46
+
47
+#[derive(Debug, Serialize)]
48
+pub struct ListTeamsAction {}
49
+impl_developer_action!(ListTeamsAction, "listTeams.action", ListTeamsResponse);
50
+
51
+#[derive(Debug, Deserialize)]
52
+#[serde(rename_all = "camelCase")]
53
+pub struct DeveloperDevice {
54
+    pub device_id: String,
55
+    pub name: String,
56
+    pub device_number: String,
57
+}
58
+
59
+#[derive(Debug, Deserialize)]
60
+pub struct ListDevicesResponse {
61
+    pub devices: Vec<DeveloperDevice>,
62
+}
63
+
64
+#[derive(Debug, Serialize)]
65
+#[serde(rename_all = "camelCase")]
66
+pub struct ListDevicesAction {
67
+    pub team_id: TeamID,
68
+}
69
+
70
+impl_developer_action!(
71
+    ListDevicesAction,
72
+    "listDevices.action",
73
+    ListDevicesResponse,
74
+    [crate::IOS, crate::TvOS, crate::WatchOS]
75
+);
76
+
77
+#[derive(Debug, Deserialize)]
78
+pub struct AddDeviceResponse {
79
+    pub device: DeveloperDevice,
80
+}
81
+
82
+#[derive(Debug, Serialize)]
83
+#[serde(rename_all = "camelCase")]
84
+pub struct AddDeviceAction {
85
+    pub team_id: TeamID,
86
+    pub name: String,
87
+    pub device_number: String,
88
+}
89
+
90
+impl_developer_action!(
91
+    AddDeviceAction,
92
+    "addDevice.action",
93
+    AddDeviceResponse,
94
+    [crate::IOS, crate::TvOS, crate::WatchOS]
95
+);
96
+
97
+#[derive(Debug, Serialize)]
98
+#[serde(rename_all = "camelCase")]
99
+pub struct DeleteDeviceAction {
100
+    pub team_id: TeamID,
101
+    pub device_id: String,
102
+}
103
+
104
+impl_developer_action!(
105
+    DeleteDeviceAction,
106
+    "deleteDevice.action",
107
+    EmptyResponse,
108
+    [crate::IOS, crate::TvOS, crate::WatchOS]
109
+);
110
+
111
+#[derive(Debug, Deserialize)]
112
+#[serde(rename_all = "camelCase")]
113
+pub struct DevelopmentCertificate {
114
+    pub name: String,
115
+    pub certificate_id: String,
116
+    pub serial_number: String,
117
+    pub cert_content: Vec<u8>,
118
+    #[serde(default)]
119
+    pub machine_name: String,
120
+}
121
+
122
+#[derive(Debug, Deserialize)]
123
+pub struct ListAllDevelopmentCertsResponse {
124
+    pub certificates: Vec<DevelopmentCertificate>,
125
+}
126
+
127
+#[derive(Debug, Serialize)]
128
+#[serde(rename_all = "camelCase")]
129
+pub struct ListAllDevelopmentCertsAction {
130
+    pub team_id: TeamID,
131
+}
132
+
133
+impl_developer_action!(
134
+    ListAllDevelopmentCertsAction,
135
+    "listAllDevelopmentCerts.action",
136
+    ListAllDevelopmentCertsResponse,
137
+    [crate::IOS, crate::TvOS, crate::WatchOS]
138
+);
139
+
140
+#[derive(Debug, Serialize)]
141
+#[serde(rename_all = "camelCase")]
142
+pub struct RevokeDevelopmentCertAction {
143
+    pub team_id: TeamID,
144
+    pub serial_number: String,
145
+}
146
+
147
+impl_developer_action!(
148
+    RevokeDevelopmentCertAction,
149
+    "revokeDevelopmentCert.action",
150
+    EmptyResponse,
151
+    [crate::IOS, crate::TvOS, crate::WatchOS]
152
+);
153
+
154
+#[derive(Debug, Deserialize)]
155
+#[serde(rename_all = "camelCase")]
156
+pub struct DevelopmentCertRequest {
157
+    pub cert_request_id: String,
158
+}
159
+
160
+#[derive(Debug, Deserialize)]
161
+#[serde(rename_all = "camelCase")]
162
+pub struct SubmitDevelopmentCsrResponse {
163
+    pub cert_request: DevelopmentCertRequest,
164
+}
165
+
166
+#[derive(Debug, Serialize)]
167
+#[serde(rename_all = "camelCase")]
168
+pub struct SubmitDevelopmentCsrAction {
169
+    pub team_id: TeamID,
170
+    pub machine_id: String,
171
+    pub machine_name: String,
172
+    pub csr_content: String,
173
+}
174
+
175
+impl_developer_action!(
176
+    SubmitDevelopmentCsrAction,
177
+    "submitDevelopmentCSR.action",
178
+    SubmitDevelopmentCsrResponse,
179
+    [crate::IOS, crate::TvOS, crate::WatchOS]
180
+);
181
+
182
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
183
+pub enum AppIdFeature {
184
+    #[serde(rename = "push")]
185
+    Push,
186
+    #[serde(rename = "iCloud")]
187
+    ICloud,
188
+    #[serde(rename = "inAppPurchase")]
189
+    InAppPurchase,
190
+    #[serde(rename = "gameCenter")]
191
+    GameCenter,
192
+    #[serde(rename = "pass")]
193
+    Passbook,
194
+    #[serde(rename = "IAD53UNK2F")]
195
+    InterAppAudio,
196
+    #[serde(rename = "V66P55NK2I")]
197
+    VpnConfiguration,
198
+    #[serde(rename = "dataProtection")]
199
+    DataProtection,
200
+    #[serde(rename = "SKC3T5S89Y")]
201
+    AssociatedDomains,
202
+    #[serde(rename = "APG3427HIY")]
203
+    AppGroup,
204
+    #[serde(rename = "HK421J6T7P")]
205
+    HealthKit,
206
+    #[serde(rename = "homeKit")]
207
+    HomeKit,
208
+    #[serde(rename = "WC421J6T7P")]
209
+    WirelessAccessory,
210
+    #[serde(rename = "cloudKitVersion")]
211
+    CloudKitVersion,
212
+}
213
+
214
+impl AppIdFeature {
215
+    pub fn as_str(self) -> &'static str {
216
+        match self {
217
+            AppIdFeature::Push => "push",
218
+            AppIdFeature::ICloud => "iCloud",
219
+            AppIdFeature::InAppPurchase => "inAppPurchase",
220
+            AppIdFeature::GameCenter => "gameCenter",
221
+            AppIdFeature::Passbook => "pass",
222
+            AppIdFeature::InterAppAudio => "IAD53UNK2F",
223
+            AppIdFeature::VpnConfiguration => "V66P55NK2I",
224
+            AppIdFeature::DataProtection => "dataProtection",
225
+            AppIdFeature::AssociatedDomains => "SKC3T5S89Y",
226
+            AppIdFeature::AppGroup => "APG3427HIY",
227
+            AppIdFeature::HealthKit => "HK421J6T7P",
228
+            AppIdFeature::HomeKit => "homeKit",
229
+            AppIdFeature::WirelessAccessory => "WC421J6T7P",
230
+            AppIdFeature::CloudKitVersion => "cloudKitVersion",
231
+        }
232
+    }
233
+}
234
+
235
+impl AsRef<str> for AppIdFeature {
236
+    fn as_ref(&self) -> &str {
237
+        (*self).as_str()
238
+    }
239
+}
240
+
241
+#[derive(Debug, Deserialize)]
242
+#[serde(rename_all = "camelCase")]
243
+pub struct AppId {
244
+    pub app_id_id: String,
245
+    pub identifier: String,
246
+    pub name: String,
247
+    pub features: Dictionary,
248
+    #[serde(default)]
249
+    pub expiration_date: Option<plist::Date>,
250
+}
251
+
252
+#[derive(Debug, Deserialize)]
253
+#[serde(rename_all = "camelCase")]
254
+pub struct ListAppIdsResponse {
255
+    pub app_ids: Vec<AppId>,
256
+    #[serde(default = "max_u64")]
257
+    pub max_quantity: u64,
258
+    #[serde(default = "max_u64")]
259
+    pub available_quantity: u64,
260
+}
261
+
262
+fn max_u64() -> u64 {
263
+    u64::MAX
264
+}
265
+
266
+#[derive(Debug, Serialize)]
267
+#[serde(rename_all = "camelCase")]
268
+pub struct ListAppIdsAction {
269
+    pub team_id: TeamID,
270
+}
271
+
272
+impl_developer_action!(
273
+    ListAppIdsAction,
274
+    "listAppIds.action",
275
+    ListAppIdsResponse,
276
+    [crate::IOS, crate::TvOS, crate::WatchOS]
277
+);
278
+
279
+#[derive(Debug, Serialize)]
280
+#[serde(rename_all = "camelCase")]
281
+pub struct AddAppIdAction {
282
+    pub identifier: String,
283
+    pub name: String,
284
+    pub team_id: TeamID,
285
+}
286
+
287
+impl_developer_action!(
288
+    AddAppIdAction,
289
+    "addAppId.action",
290
+    EmptyResponse,
291
+    [crate::IOS, crate::TvOS, crate::WatchOS]
292
+);
293
+
294
+#[derive(Debug, Deserialize)]
295
+pub struct UpdatedAppId {
296
+    pub features: Dictionary,
297
+}
298
+
299
+#[derive(Debug, Deserialize)]
300
+#[serde(rename_all = "camelCase")]
301
+pub struct UpdateAppIdResponse {
302
+    pub app_id: UpdatedAppId,
303
+}
304
+
305
+#[derive(Debug, Serialize)]
306
+#[serde(rename_all = "camelCase")]
307
+pub struct UpdateAppIdAction {
308
+    pub app_id_id: String,
309
+    pub team_id: TeamID,
310
+    #[serde(flatten)]
311
+    pub features: Dictionary,
312
+}
313
+
314
+impl_developer_action!(
315
+    UpdateAppIdAction,
316
+    "updateAppId.action",
317
+    UpdateAppIdResponse,
318
+    [crate::IOS, crate::TvOS, crate::WatchOS]
319
+);
320
+
321
+#[derive(Debug, Serialize)]
322
+#[serde(rename_all = "camelCase")]
323
+pub struct DeleteAppIdAction {
324
+    pub app_id_id: String,
325
+    pub team_id: TeamID,
326
+}
327
+
328
+impl_developer_action!(
329
+    DeleteAppIdAction,
330
+    "deleteAppId.action",
331
+    EmptyResponse,
332
+    [crate::IOS, crate::TvOS, crate::WatchOS]
333
+);
334
+
335
+#[derive(Debug, Deserialize)]
336
+#[serde(rename_all = "camelCase")]
337
+pub struct ApplicationGroup {
338
+    pub application_group: String,
339
+    pub name: String,
340
+    pub identifier: String,
341
+}
342
+
343
+#[derive(Debug, Deserialize)]
344
+#[serde(rename_all = "camelCase")]
345
+pub struct ListApplicationGroupsResponse {
346
+    pub application_group_list: Vec<ApplicationGroup>,
347
+}
348
+
349
+#[derive(Debug, Serialize)]
350
+#[serde(rename_all = "camelCase")]
351
+pub struct ListApplicationGroupsAction {
352
+    pub team_id: TeamID,
353
+}
354
+
355
+impl_developer_action!(
356
+    ListApplicationGroupsAction,
357
+    "listApplicationGroups.action",
358
+    ListApplicationGroupsResponse,
359
+    [crate::IOS, crate::TvOS, crate::WatchOS]
360
+);
361
+
362
+#[derive(Debug, Deserialize)]
363
+#[serde(rename_all = "camelCase")]
364
+pub struct AddApplicationGroupResponse {
365
+    pub application_group: ApplicationGroup,
366
+}
367
+
368
+#[derive(Debug, Serialize)]
369
+#[serde(rename_all = "camelCase")]
370
+pub struct AddApplicationGroupAction {
371
+    pub identifier: String,
372
+    pub name: String,
373
+    pub team_id: TeamID,
374
+}
375
+
376
+impl_developer_action!(
377
+    AddApplicationGroupAction,
378
+    "addApplicationGroup.action",
379
+    AddApplicationGroupResponse,
380
+    [crate::IOS, crate::TvOS, crate::WatchOS]
381
+);
382
+
383
+#[derive(Debug, Serialize)]
384
+#[serde(rename_all = "camelCase")]
385
+pub struct AssignApplicationGroupToAppIdAction {
386
+    pub app_id_id: String,
387
+    pub application_groups: String,
388
+    pub team_id: TeamID,
389
+}
390
+
391
+impl_developer_action!(
392
+    AssignApplicationGroupToAppIdAction,
393
+    "assignApplicationGroupToAppId.action",
394
+    EmptyResponse,
395
+    [crate::IOS, crate::TvOS, crate::WatchOS]
396
+);
397
+
398
+#[derive(Debug, Deserialize)]
399
+#[serde(rename_all = "camelCase")]
400
+pub struct ProvisioningProfile {
401
+    pub provisioning_profile_id: String,
402
+    pub name: String,
403
+    pub encoded_profile: Vec<u8>,
404
+}
405
+
406
+#[derive(Debug, Deserialize)]
407
+#[serde(rename_all = "camelCase")]
408
+pub struct DownloadTeamProvisioningProfileResponse {
409
+    pub provisioning_profile: ProvisioningProfile,
410
+}
411
+
412
+#[derive(Debug, Serialize)]
413
+#[serde(rename_all = "camelCase")]
414
+pub struct DownloadTeamProvisioningProfileAction {
415
+    pub app_id_id: String,
416
+    pub team_id: TeamID,
417
+}
418
+
419
+impl_developer_action!(
420
+    DownloadTeamProvisioningProfileAction,
421
+    "downloadTeamProvisioningProfile.action",
422
+    DownloadTeamProvisioningProfileResponse,
423
+    [crate::IOS, crate::TvOS, crate::WatchOS]
424
+);
... ...
@@ -1,13 +1,12 @@
1
-mod developer_actions;
2
-
3
-use adi::proxy::{ADIError};
1
+use adi::proxy::ADIError;
4 2
 use grandslam::bundle_information::BundleInformation;
5 3
 use grandslam::plist_request::plist_to_body;
6 4
 use grandslam::{AppTokenIdentifier, AuthenticatedHTTPSession, Token};
7 5
 use plist::{Dictionary, Value};
8 6
 use plist_macros::{array, dict};
9
-use reqwest::{Method};
10
-use serde::{Serialize};
7
+use reqwest::Method;
8
+use serde::Serialize;
9
+use std::borrow::Cow;
11 10
 use std::fmt::Display;
12 11
 use thiserror::Error;
13 12
 
... ...
@@ -24,15 +23,16 @@ pub const XCODE_TOKEN_IDENTIFIER: AppTokenIdentifier =
24 23
 const CLIENT_ID: &str = "XABBG36SBA";
25 24
 const PROTOCOL_VERSION: &str = "QH65B2";
26 25
 
26
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
27 27
 pub enum PlatformType {
28 28
     IOS,
29 29
     TvOS,
30 30
     WatchOS,
31 31
 }
32 32
 
33
-impl From<&PlatformType> for &'static str {
34
-    fn from(value: &PlatformType) -> &'static str {
35
-        match value {
33
+impl PlatformType {
34
+    pub fn as_str(self) -> &'static str {
35
+        match self {
36 36
             PlatformType::IOS => "ios",
37 37
             PlatformType::TvOS => "tvos",
38 38
             PlatformType::WatchOS => "watchos",
... ...
@@ -40,6 +40,12 @@ impl From<&PlatformType> for &'static str {
40 40
     }
41 41
 }
42 42
 
43
+impl From<&PlatformType> for &'static str {
44
+    fn from(value: &PlatformType) -> &'static str {
45
+        value.as_str()
46
+    }
47
+}
48
+
43 49
 impl Display for PlatformType {
44 50
     fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
45 51
         let str: &'static str = self.into();
... ...
@@ -48,7 +54,7 @@ impl Display for PlatformType {
48 54
 }
49 55
 
50 56
 pub trait DeveloperActionBase: Serialize + Sized {
51
-    fn action() -> &'static str;
57
+    fn action() -> Cow<'static, str>;
52 58
 
53 59
     fn request(&self) -> Dictionary {
54 60
         plist::to_value(self)
... ...
@@ -64,9 +70,117 @@ pub trait DeveloperAction: DeveloperActionBase {
64 70
     fn parse_response(value: Dictionary) -> Self::Result;
65 71
 }
66 72
 
73
+pub trait PlatformDeveloperAction<P>: Serialize + Sized {
74
+    type Result;
75
+
76
+    fn action() -> Cow<'static, str>;
77
+
78
+    fn parse_response(value: Dictionary) -> Self::Result;
79
+
80
+    fn request(&self) -> Dictionary {
81
+        plist::to_value(self)
82
+            .expect("Serialization should never fail.")
83
+            .into_dictionary()
84
+            .expect("Usage error: every DeveloperAction is a dictionary.")
85
+    }
86
+}
87
+
88
+#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
89
+pub struct IOS;
90
+
91
+#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
92
+pub struct TvOS;
93
+
94
+#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash)]
95
+pub struct WatchOS;
96
+
97
+#[derive(Debug, Serialize)]
98
+#[serde(transparent)]
99
+pub struct PlatformRequest<P, T> {
100
+    #[serde(skip)]
101
+    pub platform: P,
102
+    pub request: T,
103
+}
104
+
105
+pub type IOSRequest<T> = PlatformRequest<IOS, T>;
106
+pub type TvOSRequest<T> = PlatformRequest<TvOS, T>;
107
+pub type WatchOSRequest<T> = PlatformRequest<WatchOS, T>;
108
+
109
+impl<P: Default, T> PlatformRequest<P, T> {
110
+    pub fn new(request: T) -> Self {
111
+        Self {
112
+            platform: P::default(),
113
+            request,
114
+        }
115
+    }
116
+}
117
+
118
+impl<T: PlatformDeveloperAction<IOS>> DeveloperActionBase for PlatformRequest<IOS, T> {
119
+    fn action() -> Cow<'static, str> {
120
+        Cow::Owned(format!(
121
+            "ios/{}",
122
+            <T as PlatformDeveloperAction<IOS>>::action()
123
+        ))
124
+    }
125
+
126
+    fn request(&self) -> Dictionary {
127
+        <T as PlatformDeveloperAction<IOS>>::request(&self.request)
128
+    }
129
+}
130
+
131
+impl<T: PlatformDeveloperAction<IOS>> DeveloperAction for PlatformRequest<IOS, T> {
132
+    type Result = T::Result;
133
+
134
+    fn parse_response(value: Dictionary) -> Self::Result {
135
+        T::parse_response(value)
136
+    }
137
+}
138
+
139
+impl<T: PlatformDeveloperAction<TvOS>> DeveloperActionBase for PlatformRequest<TvOS, T> {
140
+    fn action() -> Cow<'static, str> {
141
+        Cow::Owned(format!(
142
+            "tvos/{}",
143
+            <T as PlatformDeveloperAction<TvOS>>::action()
144
+        ))
145
+    }
146
+
147
+    fn request(&self) -> Dictionary {
148
+        <T as PlatformDeveloperAction<TvOS>>::request(&self.request)
149
+    }
150
+}
151
+
152
+impl<T: PlatformDeveloperAction<TvOS>> DeveloperAction for PlatformRequest<TvOS, T> {
153
+    type Result = T::Result;
154
+
155
+    fn parse_response(value: Dictionary) -> Self::Result {
156
+        T::parse_response(value)
157
+    }
158
+}
159
+
160
+impl<T: PlatformDeveloperAction<WatchOS>> DeveloperActionBase for PlatformRequest<WatchOS, T> {
161
+    fn action() -> Cow<'static, str> {
162
+        Cow::Owned(format!(
163
+            "watchos/{}",
164
+            <T as PlatformDeveloperAction<WatchOS>>::action()
165
+        ))
166
+    }
167
+
168
+    fn request(&self) -> Dictionary {
169
+        <T as PlatformDeveloperAction<WatchOS>>::request(&self.request)
170
+    }
171
+}
172
+
173
+impl<T: PlatformDeveloperAction<WatchOS>> DeveloperAction for PlatformRequest<WatchOS, T> {
174
+    type Result = T::Result;
175
+
176
+    fn parse_response(value: Dictionary) -> Self::Result {
177
+        T::parse_response(value)
178
+    }
179
+}
180
+
67 181
 #[derive(Debug, Error)]
68 182
 pub enum XcodeError {
69
-    #[error("Failed to perform the demanded action: {} ({status_code})", user_string.as_ref().or(result_string.as_ref()).unwrap_or(&"(null)".to_string()))]
183
+    #[error("Failed to perform the demanded action: {} ({status_code})", user_string.as_deref().or(result_string.as_deref()).unwrap_or("(null)"))]
70 184
     DeveloperPortal {
71 185
         status_code: u64,
72 186
         user_string: Option<String>,
... ...
@@ -106,16 +220,16 @@ impl<'a, 'b> XcodeSession<'a, 'b> {
106 220
             "https://developerservices2.apple.com/services/{PROTOCOL_VERSION}/{}",
107 221
             T::action()
108 222
         );
109
-        let request_id = uuid::Uuid::new_v4();
223
+        let request_id = uuid::Uuid::new_v4().to_string().to_uppercase();
110 224
 
111 225
         let mut base_request = dict! {
112 226
             "clientId": CLIENT_ID,
113 227
             "protocolVersion": PROTOCOL_VERSION,
114
-            "requestId": request_id.to_string(),
228
+            "requestId": request_id,
115 229
             "userLocale": array![locale],
116 230
         };
117 231
 
118
-        base_request.clone_from(&developer_action.request());
232
+        base_request.extend(developer_action.request());
119 233
 
120 234
         let response = self
121 235
             .http_session
... ...
@@ -135,7 +249,7 @@ impl<'a, 'b> XcodeSession<'a, 'b> {
135 249
 
136 250
         let response: Dictionary = plist::from_bytes(&response)?;
137 251
         match response
138
-            .get("statusCode")
252
+            .get("resultCode")
139 253
             .and_then(Value::as_unsigned_integer)
140 254
         {
141 255
             None | Some(0) => Ok(response),
... ...
@@ -166,9 +280,9 @@ impl<'a, 'b> XcodeSession<'a, 'b> {
166 280
 #[macro_export]
167 281
 macro_rules! impl_developer_action_base {
168 282
     ($name: ty, $action: literal) => {
169
-        impl DeveloperActionBase for $name {
170
-            fn action() -> &'static str {
171
-                $action
283
+        impl $crate::DeveloperActionBase for $name {
284
+            fn action() -> std::borrow::Cow<'static, str> {
285
+                std::borrow::Cow::Borrowed($action)
172 286
             }
173 287
         }
174 288
     };
... ...
@@ -176,15 +290,39 @@ macro_rules! impl_developer_action_base {
176 290
 
177 291
 #[macro_export]
178 292
 macro_rules! impl_developer_action {
179
-    ($name: ty, $result: ty) => {
180
-        impl DeveloperAction for $name {
293
+    ($name: ty, $action: literal, $result: ty, [$($platform:ty),+ $(,)?]) => {
294
+        $(
295
+            impl $crate::PlatformDeveloperAction<$platform> for $name {
296
+                type Result = Result<$result, plist::Error>;
297
+
298
+                fn action() -> std::borrow::Cow<'static, str> {
299
+                    std::borrow::Cow::Borrowed($action)
300
+                }
301
+
302
+                fn parse_response(value: plist::Dictionary) -> Result<$result, plist::Error> {
303
+                    plist::from_value(&value.into())
304
+                }
305
+            }
306
+        )+
307
+    };
308
+
309
+    ($name: ty, $action: literal, $result: ty) => {
310
+        impl $crate::DeveloperActionBase for $name {
311
+            fn action() -> std::borrow::Cow<'static, str> {
312
+                std::borrow::Cow::Borrowed($action)
313
+            }
314
+        }
315
+
316
+        impl $crate::DeveloperAction for $name {
181 317
             type Result = Result<$result, plist::Error>;
182 318
 
183
-            fn parse_response(value: Dictionary) -> Result<$result, plist::Error> {
319
+            fn parse_response(value: plist::Dictionary) -> Result<$result, plist::Error> {
184 320
                 plist::from_value(&value.into())
185 321
             }
186 322
         }
187 323
     };
188 324
 }
189 325
 
326
+mod developer_actions;
327
+
190 328
 pub use developer_actions::*;
191 329