├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── LICENSE ├── README.md └── src ├── bodyfile.rs ├── errors.rs ├── main.rs └── prefetch.rs /.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | .idea/ 3 | *.iml -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "ab_glyph" 7 | version = "0.2.15" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "24606928a235e73cdef55a0c909719cadd72fce573e5713d58cb2952d8f5794c" 10 | dependencies = [ 11 | "ab_glyph_rasterizer", 12 | "owned_ttf_parser", 13 | ] 14 | 15 | [[package]] 16 | name = "ab_glyph_rasterizer" 17 | version = "0.1.5" 18 | source = "registry+https://github.com/rust-lang/crates.io-index" 19 | checksum = "a13739d7177fbd22bb0ed28badfff9f372f8bef46c863db4e1c6248f6b223b6e" 20 | 21 | [[package]] 22 | name = "ahash" 23 | version = "0.4.7" 24 | source = "registry+https://github.com/rust-lang/crates.io-index" 25 | checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e" 26 | 27 | [[package]] 28 | name = "ahash" 29 | version = "0.7.6" 30 | source = "registry+https://github.com/rust-lang/crates.io-index" 31 | checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" 32 | dependencies = [ 33 | "getrandom", 34 | "once_cell", 35 | "version_check", 36 | ] 37 | 38 | [[package]] 39 | name = "aho-corasick" 40 | version = "0.7.18" 41 | source = "registry+https://github.com/rust-lang/crates.io-index" 42 | checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" 43 | dependencies = [ 44 | "memchr", 45 | ] 46 | 47 | [[package]] 48 | name = "android_glue" 49 | version = "0.2.3" 50 | source = "registry+https://github.com/rust-lang/crates.io-index" 51 | checksum = "000444226fcff248f2bc4c7625be32c63caccfecc2723a2b9f78a7487a49c407" 52 | 53 | [[package]] 54 | name = "async-broadcast" 55 | version = "0.3.4" 56 | source = "registry+https://github.com/rust-lang/crates.io-index" 57 | checksum = "90622698a1218e0b2fb846c97b5f19a0831f6baddee73d9454156365ccfa473b" 58 | dependencies = [ 59 | "easy-parallel", 60 | "event-listener", 61 | "futures-core", 62 | ] 63 | 64 | [[package]] 65 | name = "async-channel" 66 | version = "1.6.1" 67 | source = "registry+https://github.com/rust-lang/crates.io-index" 68 | checksum = "2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319" 69 | dependencies = [ 70 | "concurrent-queue", 71 | "event-listener", 72 | "futures-core", 73 | ] 74 | 75 | [[package]] 76 | name = "async-executor" 77 | version = "1.4.1" 78 | source = "registry+https://github.com/rust-lang/crates.io-index" 79 | checksum = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965" 80 | dependencies = [ 81 | "async-task", 82 | "concurrent-queue", 83 | "fastrand", 84 | "futures-lite", 85 | "once_cell", 86 | "slab", 87 | ] 88 | 89 | [[package]] 90 | name = "async-io" 91 | version = "1.6.0" 92 | source = "registry+https://github.com/rust-lang/crates.io-index" 93 | checksum = "a811e6a479f2439f0c04038796b5cfb3d2ad56c230e0f2d3f7b04d68cfee607b" 94 | dependencies = [ 95 | "concurrent-queue", 96 | "futures-lite", 97 | "libc", 98 | "log", 99 | "once_cell", 100 | "parking", 101 | "polling", 102 | "slab", 103 | "socket2", 104 | "waker-fn", 105 | "winapi", 106 | ] 107 | 108 | [[package]] 109 | name = "async-lock" 110 | version = "2.5.0" 111 | source = "registry+https://github.com/rust-lang/crates.io-index" 112 | checksum = "e97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6" 113 | dependencies = [ 114 | "event-listener", 115 | ] 116 | 117 | [[package]] 118 | name = "async-recursion" 119 | version = "0.3.2" 120 | source = "registry+https://github.com/rust-lang/crates.io-index" 121 | checksum = "d7d78656ba01f1b93024b7c3a0467f1608e4be67d725749fdcd7d2c7678fd7a2" 122 | dependencies = [ 123 | "proc-macro2", 124 | "quote", 125 | "syn", 126 | ] 127 | 128 | [[package]] 129 | name = "async-task" 130 | version = "4.2.0" 131 | source = "registry+https://github.com/rust-lang/crates.io-index" 132 | checksum = "30696a84d817107fc028e049980e09d5e140e8da8f1caeb17e8e950658a3cea9" 133 | 134 | [[package]] 135 | name = "async-trait" 136 | version = "0.1.53" 137 | source = "registry+https://github.com/rust-lang/crates.io-index" 138 | checksum = "ed6aa3524a2dfcf9fe180c51eae2b58738348d819517ceadf95789c51fff7600" 139 | dependencies = [ 140 | "proc-macro2", 141 | "quote", 142 | "syn", 143 | ] 144 | 145 | [[package]] 146 | name = "atk-sys" 147 | version = "0.15.1" 148 | source = "registry+https://github.com/rust-lang/crates.io-index" 149 | checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" 150 | dependencies = [ 151 | "glib-sys", 152 | "gobject-sys", 153 | "libc", 154 | "system-deps", 155 | ] 156 | 157 | [[package]] 158 | name = "atomic_refcell" 159 | version = "0.1.8" 160 | source = "registry+https://github.com/rust-lang/crates.io-index" 161 | checksum = "73b5e5f48b927f04e952dedc932f31995a65a0bf65ec971c74436e51bf6e970d" 162 | 163 | [[package]] 164 | name = "autocfg" 165 | version = "1.1.0" 166 | source = "registry+https://github.com/rust-lang/crates.io-index" 167 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 168 | 169 | [[package]] 170 | name = "bitflags" 171 | version = "1.3.2" 172 | source = "registry+https://github.com/rust-lang/crates.io-index" 173 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 174 | 175 | [[package]] 176 | name = "block" 177 | version = "0.1.6" 178 | source = "registry+https://github.com/rust-lang/crates.io-index" 179 | checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 180 | 181 | [[package]] 182 | name = "bumpalo" 183 | version = "3.9.1" 184 | source = "registry+https://github.com/rust-lang/crates.io-index" 185 | checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" 186 | 187 | [[package]] 188 | name = "bytemuck" 189 | version = "1.9.1" 190 | source = "registry+https://github.com/rust-lang/crates.io-index" 191 | checksum = "cdead85bdec19c194affaeeb670c0e41fe23de31459efd1c174d049269cf02cc" 192 | dependencies = [ 193 | "bytemuck_derive", 194 | ] 195 | 196 | [[package]] 197 | name = "bytemuck_derive" 198 | version = "1.1.0" 199 | source = "registry+https://github.com/rust-lang/crates.io-index" 200 | checksum = "562e382481975bc61d11275ac5e62a19abd00b0547d99516a415336f183dcd0e" 201 | dependencies = [ 202 | "proc-macro2", 203 | "quote", 204 | "syn", 205 | ] 206 | 207 | [[package]] 208 | name = "byteorder" 209 | version = "1.4.3" 210 | source = "registry+https://github.com/rust-lang/crates.io-index" 211 | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" 212 | 213 | [[package]] 214 | name = "bytes" 215 | version = "1.1.0" 216 | source = "registry+https://github.com/rust-lang/crates.io-index" 217 | checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" 218 | 219 | [[package]] 220 | name = "cache-padded" 221 | version = "1.2.0" 222 | source = "registry+https://github.com/rust-lang/crates.io-index" 223 | checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" 224 | 225 | [[package]] 226 | name = "cairo-sys-rs" 227 | version = "0.15.1" 228 | source = "registry+https://github.com/rust-lang/crates.io-index" 229 | checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" 230 | dependencies = [ 231 | "libc", 232 | "system-deps", 233 | ] 234 | 235 | [[package]] 236 | name = "calloop" 237 | version = "0.9.3" 238 | source = "registry+https://github.com/rust-lang/crates.io-index" 239 | checksum = "bf2eec61efe56aa1e813f5126959296933cf0700030e4314786c48779a66ab82" 240 | dependencies = [ 241 | "log", 242 | "nix 0.22.3", 243 | ] 244 | 245 | [[package]] 246 | name = "cc" 247 | version = "1.0.73" 248 | source = "registry+https://github.com/rust-lang/crates.io-index" 249 | checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" 250 | 251 | [[package]] 252 | name = "cesu8" 253 | version = "1.1.0" 254 | source = "registry+https://github.com/rust-lang/crates.io-index" 255 | checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 256 | 257 | [[package]] 258 | name = "cfg-expr" 259 | version = "0.10.2" 260 | source = "registry+https://github.com/rust-lang/crates.io-index" 261 | checksum = "5e068cb2806bbc15b439846dc16c5f89f8599f2c3e4d73d4449d38f9b2f0b6c5" 262 | dependencies = [ 263 | "smallvec", 264 | ] 265 | 266 | [[package]] 267 | name = "cfg-if" 268 | version = "0.1.10" 269 | source = "registry+https://github.com/rust-lang/crates.io-index" 270 | checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" 271 | 272 | [[package]] 273 | name = "cfg-if" 274 | version = "1.0.0" 275 | source = "registry+https://github.com/rust-lang/crates.io-index" 276 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 277 | 278 | [[package]] 279 | name = "cgl" 280 | version = "0.3.2" 281 | source = "registry+https://github.com/rust-lang/crates.io-index" 282 | checksum = "0ced0551234e87afee12411d535648dd89d2e7f34c78b753395567aff3d447ff" 283 | dependencies = [ 284 | "libc", 285 | ] 286 | 287 | [[package]] 288 | name = "clipboard-win" 289 | version = "3.1.1" 290 | source = "registry+https://github.com/rust-lang/crates.io-index" 291 | checksum = "9fdf5e01086b6be750428ba4a40619f847eb2e95756eee84b18e06e5f0b50342" 292 | dependencies = [ 293 | "lazy-bytes-cast", 294 | "winapi", 295 | ] 296 | 297 | [[package]] 298 | name = "cocoa" 299 | version = "0.24.0" 300 | source = "registry+https://github.com/rust-lang/crates.io-index" 301 | checksum = "6f63902e9223530efb4e26ccd0cf55ec30d592d3b42e21a28defc42a9586e832" 302 | dependencies = [ 303 | "bitflags", 304 | "block", 305 | "cocoa-foundation", 306 | "core-foundation 0.9.3", 307 | "core-graphics 0.22.3", 308 | "foreign-types", 309 | "libc", 310 | "objc", 311 | ] 312 | 313 | [[package]] 314 | name = "cocoa-foundation" 315 | version = "0.1.0" 316 | source = "registry+https://github.com/rust-lang/crates.io-index" 317 | checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" 318 | dependencies = [ 319 | "bitflags", 320 | "block", 321 | "core-foundation 0.9.3", 322 | "core-graphics-types", 323 | "foreign-types", 324 | "libc", 325 | "objc", 326 | ] 327 | 328 | [[package]] 329 | name = "combine" 330 | version = "4.6.4" 331 | source = "registry+https://github.com/rust-lang/crates.io-index" 332 | checksum = "2a604e93b79d1808327a6fca85a6f2d69de66461e7620f5a4cbf5fb4d1d7c948" 333 | dependencies = [ 334 | "bytes", 335 | "memchr", 336 | ] 337 | 338 | [[package]] 339 | name = "concurrent-queue" 340 | version = "1.2.2" 341 | source = "registry+https://github.com/rust-lang/crates.io-index" 342 | checksum = "30ed07550be01594c6026cff2a1d7fe9c8f683caa798e12b68694ac9e88286a3" 343 | dependencies = [ 344 | "cache-padded", 345 | ] 346 | 347 | [[package]] 348 | name = "copypasta" 349 | version = "0.7.1" 350 | source = "registry+https://github.com/rust-lang/crates.io-index" 351 | checksum = "4423d79fed83ebd9ab81ec21fa97144300a961782158287dc9bf7eddac37ff0b" 352 | dependencies = [ 353 | "clipboard-win", 354 | "objc", 355 | "objc-foundation", 356 | "objc_id", 357 | "smithay-clipboard", 358 | "x11-clipboard", 359 | ] 360 | 361 | [[package]] 362 | name = "core-foundation" 363 | version = "0.7.0" 364 | source = "registry+https://github.com/rust-lang/crates.io-index" 365 | checksum = "57d24c7a13c43e870e37c1556b74555437870a04514f7685f5b354e090567171" 366 | dependencies = [ 367 | "core-foundation-sys 0.7.0", 368 | "libc", 369 | ] 370 | 371 | [[package]] 372 | name = "core-foundation" 373 | version = "0.9.3" 374 | source = "registry+https://github.com/rust-lang/crates.io-index" 375 | checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" 376 | dependencies = [ 377 | "core-foundation-sys 0.8.3", 378 | "libc", 379 | ] 380 | 381 | [[package]] 382 | name = "core-foundation-sys" 383 | version = "0.7.0" 384 | source = "registry+https://github.com/rust-lang/crates.io-index" 385 | checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac" 386 | 387 | [[package]] 388 | name = "core-foundation-sys" 389 | version = "0.8.3" 390 | source = "registry+https://github.com/rust-lang/crates.io-index" 391 | checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" 392 | 393 | [[package]] 394 | name = "core-graphics" 395 | version = "0.19.2" 396 | source = "registry+https://github.com/rust-lang/crates.io-index" 397 | checksum = "b3889374e6ea6ab25dba90bb5d96202f61108058361f6dc72e8b03e6f8bbe923" 398 | dependencies = [ 399 | "bitflags", 400 | "core-foundation 0.7.0", 401 | "foreign-types", 402 | "libc", 403 | ] 404 | 405 | [[package]] 406 | name = "core-graphics" 407 | version = "0.22.3" 408 | source = "registry+https://github.com/rust-lang/crates.io-index" 409 | checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" 410 | dependencies = [ 411 | "bitflags", 412 | "core-foundation 0.9.3", 413 | "core-graphics-types", 414 | "foreign-types", 415 | "libc", 416 | ] 417 | 418 | [[package]] 419 | name = "core-graphics-types" 420 | version = "0.1.1" 421 | source = "registry+https://github.com/rust-lang/crates.io-index" 422 | checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" 423 | dependencies = [ 424 | "bitflags", 425 | "core-foundation 0.9.3", 426 | "foreign-types", 427 | "libc", 428 | ] 429 | 430 | [[package]] 431 | name = "core-video-sys" 432 | version = "0.1.4" 433 | source = "registry+https://github.com/rust-lang/crates.io-index" 434 | checksum = "34ecad23610ad9757664d644e369246edde1803fcb43ed72876565098a5d3828" 435 | dependencies = [ 436 | "cfg-if 0.1.10", 437 | "core-foundation-sys 0.7.0", 438 | "core-graphics 0.19.2", 439 | "libc", 440 | "objc", 441 | ] 442 | 443 | [[package]] 444 | name = "cty" 445 | version = "0.2.2" 446 | source = "registry+https://github.com/rust-lang/crates.io-index" 447 | checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" 448 | 449 | [[package]] 450 | name = "dark-light" 451 | version = "0.2.2" 452 | source = "registry+https://github.com/rust-lang/crates.io-index" 453 | checksum = "5b83576e2eee2d9cdaa8d08812ae59cbfe1b5ac7ac5ac4b8400303c6148a88c1" 454 | dependencies = [ 455 | "dconf_rs", 456 | "detect-desktop-environment", 457 | "dirs", 458 | "objc", 459 | "rust-ini", 460 | "web-sys", 461 | "winreg", 462 | "zbus", 463 | "zvariant", 464 | ] 465 | 466 | [[package]] 467 | name = "darling" 468 | version = "0.13.4" 469 | source = "registry+https://github.com/rust-lang/crates.io-index" 470 | checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" 471 | dependencies = [ 472 | "darling_core", 473 | "darling_macro", 474 | ] 475 | 476 | [[package]] 477 | name = "darling_core" 478 | version = "0.13.4" 479 | source = "registry+https://github.com/rust-lang/crates.io-index" 480 | checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" 481 | dependencies = [ 482 | "fnv", 483 | "ident_case", 484 | "proc-macro2", 485 | "quote", 486 | "strsim", 487 | "syn", 488 | ] 489 | 490 | [[package]] 491 | name = "darling_macro" 492 | version = "0.13.4" 493 | source = "registry+https://github.com/rust-lang/crates.io-index" 494 | checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" 495 | dependencies = [ 496 | "darling_core", 497 | "quote", 498 | "syn", 499 | ] 500 | 501 | [[package]] 502 | name = "dconf_rs" 503 | version = "0.3.0" 504 | source = "registry+https://github.com/rust-lang/crates.io-index" 505 | checksum = "7046468a81e6a002061c01e6a7c83139daf91b11c30e66795b13217c2d885c8b" 506 | 507 | [[package]] 508 | name = "derivative" 509 | version = "2.2.0" 510 | source = "registry+https://github.com/rust-lang/crates.io-index" 511 | checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" 512 | dependencies = [ 513 | "proc-macro2", 514 | "quote", 515 | "syn", 516 | ] 517 | 518 | [[package]] 519 | name = "detect-desktop-environment" 520 | version = "0.2.0" 521 | source = "registry+https://github.com/rust-lang/crates.io-index" 522 | checksum = "21d8ad60dd5b13a4ee6bd8fa2d5d88965c597c67bce32b5fc49c94f55cb50810" 523 | 524 | [[package]] 525 | name = "dirs" 526 | version = "4.0.0" 527 | source = "registry+https://github.com/rust-lang/crates.io-index" 528 | checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" 529 | dependencies = [ 530 | "dirs-sys", 531 | ] 532 | 533 | [[package]] 534 | name = "dirs-sys" 535 | version = "0.3.7" 536 | source = "registry+https://github.com/rust-lang/crates.io-index" 537 | checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" 538 | dependencies = [ 539 | "libc", 540 | "redox_users", 541 | "winapi", 542 | ] 543 | 544 | [[package]] 545 | name = "dispatch" 546 | version = "0.2.0" 547 | source = "registry+https://github.com/rust-lang/crates.io-index" 548 | checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 549 | 550 | [[package]] 551 | name = "dlib" 552 | version = "0.5.0" 553 | source = "registry+https://github.com/rust-lang/crates.io-index" 554 | checksum = "ac1b7517328c04c2aa68422fc60a41b92208182142ed04a25879c26c8f878794" 555 | dependencies = [ 556 | "libloading", 557 | ] 558 | 559 | [[package]] 560 | name = "dlv-list" 561 | version = "0.2.3" 562 | source = "registry+https://github.com/rust-lang/crates.io-index" 563 | checksum = "68df3f2b690c1b86e65ef7830956aededf3cb0a16f898f79b9a6f421a7b6211b" 564 | dependencies = [ 565 | "rand", 566 | ] 567 | 568 | [[package]] 569 | name = "downcast-rs" 570 | version = "1.2.0" 571 | source = "registry+https://github.com/rust-lang/crates.io-index" 572 | checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" 573 | 574 | [[package]] 575 | name = "easy-parallel" 576 | version = "3.2.0" 577 | source = "registry+https://github.com/rust-lang/crates.io-index" 578 | checksum = "6907e25393cdcc1f4f3f513d9aac1e840eb1cc341a0fccb01171f7d14d10b946" 579 | 580 | [[package]] 581 | name = "eframe" 582 | version = "0.17.0" 583 | source = "registry+https://github.com/rust-lang/crates.io-index" 584 | checksum = "c9fe0985844076809b8c08b609266567797a6b721abb6a4975e158ab413cd6f2" 585 | dependencies = [ 586 | "egui", 587 | "egui-winit", 588 | "egui_glow", 589 | "egui_web", 590 | "epi", 591 | ] 592 | 593 | [[package]] 594 | name = "egui" 595 | version = "0.17.0" 596 | source = "registry+https://github.com/rust-lang/crates.io-index" 597 | checksum = "0a3cd1d47e12f7a17912595241622e373aa652a4e0fa90b3f9278f90a64aedf7" 598 | dependencies = [ 599 | "ahash 0.7.6", 600 | "epaint", 601 | "nohash-hasher", 602 | "tracing", 603 | ] 604 | 605 | [[package]] 606 | name = "egui-winit" 607 | version = "0.17.0" 608 | source = "registry+https://github.com/rust-lang/crates.io-index" 609 | checksum = "43eac3180ea178ef1a5f3048cc12c58bcbcb17fc3401813f7229c99ef2ffc1d9" 610 | dependencies = [ 611 | "copypasta", 612 | "dark-light", 613 | "egui", 614 | "epi", 615 | "instant", 616 | "tracing", 617 | "webbrowser", 618 | "winit", 619 | ] 620 | 621 | [[package]] 622 | name = "egui_glow" 623 | version = "0.17.0" 624 | source = "registry+https://github.com/rust-lang/crates.io-index" 625 | checksum = "04a252f6d333fceb910a8f5b3ef2d4402e1646cd4daa11e7b11ea38d1b6190d3" 626 | dependencies = [ 627 | "bytemuck", 628 | "egui", 629 | "egui-winit", 630 | "epi", 631 | "glow", 632 | "glutin", 633 | "memoffset", 634 | "tracing", 635 | "wasm-bindgen", 636 | "web-sys", 637 | ] 638 | 639 | [[package]] 640 | name = "egui_web" 641 | version = "0.17.0" 642 | source = "registry+https://github.com/rust-lang/crates.io-index" 643 | checksum = "030f81109b90583cd7b3bc7e4bb31dfae615f4adcc422b1b313030929d3b350c" 644 | dependencies = [ 645 | "bytemuck", 646 | "egui", 647 | "egui_glow", 648 | "epi", 649 | "js-sys", 650 | "percent-encoding", 651 | "tracing", 652 | "wasm-bindgen", 653 | "wasm-bindgen-futures", 654 | "web-sys", 655 | ] 656 | 657 | [[package]] 658 | name = "either" 659 | version = "1.6.1" 660 | source = "registry+https://github.com/rust-lang/crates.io-index" 661 | checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" 662 | 663 | [[package]] 664 | name = "emath" 665 | version = "0.17.0" 666 | source = "registry+https://github.com/rust-lang/crates.io-index" 667 | checksum = "a977a80456be58a2c2d48e69c1d0baadef46cecef5a0c98df141c468da006f12" 668 | dependencies = [ 669 | "bytemuck", 670 | ] 671 | 672 | [[package]] 673 | name = "enumflags2" 674 | version = "0.7.5" 675 | source = "registry+https://github.com/rust-lang/crates.io-index" 676 | checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb" 677 | dependencies = [ 678 | "enumflags2_derive", 679 | "serde", 680 | ] 681 | 682 | [[package]] 683 | name = "enumflags2_derive" 684 | version = "0.7.4" 685 | source = "registry+https://github.com/rust-lang/crates.io-index" 686 | checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae" 687 | dependencies = [ 688 | "proc-macro2", 689 | "quote", 690 | "syn", 691 | ] 692 | 693 | [[package]] 694 | name = "epaint" 695 | version = "0.17.0" 696 | source = "registry+https://github.com/rust-lang/crates.io-index" 697 | checksum = "033292846059f08e03a71e1b5db2ee6ab7c9622c3b48da21f4bd13258ebee2db" 698 | dependencies = [ 699 | "ab_glyph", 700 | "ahash 0.7.6", 701 | "atomic_refcell", 702 | "bytemuck", 703 | "emath", 704 | "nohash-hasher", 705 | ] 706 | 707 | [[package]] 708 | name = "epi" 709 | version = "0.17.0" 710 | source = "registry+https://github.com/rust-lang/crates.io-index" 711 | checksum = "c95445deccef4d29fa30488d3f7f2e942dd343eef01228becc7cefd5b918176e" 712 | dependencies = [ 713 | "egui", 714 | "tracing", 715 | ] 716 | 717 | [[package]] 718 | name = "event-listener" 719 | version = "2.5.2" 720 | source = "registry+https://github.com/rust-lang/crates.io-index" 721 | checksum = "77f3309417938f28bf8228fcff79a4a37103981e3e186d2ccd19c74b38f4eb71" 722 | 723 | [[package]] 724 | name = "fastrand" 725 | version = "1.7.0" 726 | source = "registry+https://github.com/rust-lang/crates.io-index" 727 | checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" 728 | dependencies = [ 729 | "instant", 730 | ] 731 | 732 | [[package]] 733 | name = "fnv" 734 | version = "1.0.7" 735 | source = "registry+https://github.com/rust-lang/crates.io-index" 736 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 737 | 738 | [[package]] 739 | name = "foreign-types" 740 | version = "0.3.2" 741 | source = "registry+https://github.com/rust-lang/crates.io-index" 742 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 743 | dependencies = [ 744 | "foreign-types-shared", 745 | ] 746 | 747 | [[package]] 748 | name = "foreign-types-shared" 749 | version = "0.1.1" 750 | source = "registry+https://github.com/rust-lang/crates.io-index" 751 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 752 | 753 | [[package]] 754 | name = "form_urlencoded" 755 | version = "1.0.1" 756 | source = "registry+https://github.com/rust-lang/crates.io-index" 757 | checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" 758 | dependencies = [ 759 | "matches", 760 | "percent-encoding", 761 | ] 762 | 763 | [[package]] 764 | name = "futures-core" 765 | version = "0.3.21" 766 | source = "registry+https://github.com/rust-lang/crates.io-index" 767 | checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" 768 | 769 | [[package]] 770 | name = "futures-io" 771 | version = "0.3.21" 772 | source = "registry+https://github.com/rust-lang/crates.io-index" 773 | checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" 774 | 775 | [[package]] 776 | name = "futures-lite" 777 | version = "1.12.0" 778 | source = "registry+https://github.com/rust-lang/crates.io-index" 779 | checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" 780 | dependencies = [ 781 | "fastrand", 782 | "futures-core", 783 | "futures-io", 784 | "memchr", 785 | "parking", 786 | "pin-project-lite", 787 | "waker-fn", 788 | ] 789 | 790 | [[package]] 791 | name = "futures-sink" 792 | version = "0.3.21" 793 | source = "registry+https://github.com/rust-lang/crates.io-index" 794 | checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" 795 | 796 | [[package]] 797 | name = "futures-task" 798 | version = "0.3.21" 799 | source = "registry+https://github.com/rust-lang/crates.io-index" 800 | checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" 801 | 802 | [[package]] 803 | name = "futures-util" 804 | version = "0.3.21" 805 | source = "registry+https://github.com/rust-lang/crates.io-index" 806 | checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" 807 | dependencies = [ 808 | "futures-core", 809 | "futures-sink", 810 | "futures-task", 811 | "pin-project-lite", 812 | "pin-utils", 813 | "slab", 814 | ] 815 | 816 | [[package]] 817 | name = "gdk-pixbuf-sys" 818 | version = "0.15.10" 819 | source = "registry+https://github.com/rust-lang/crates.io-index" 820 | checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" 821 | dependencies = [ 822 | "gio-sys", 823 | "glib-sys", 824 | "gobject-sys", 825 | "libc", 826 | "system-deps", 827 | ] 828 | 829 | [[package]] 830 | name = "gdk-sys" 831 | version = "0.15.1" 832 | source = "registry+https://github.com/rust-lang/crates.io-index" 833 | checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88" 834 | dependencies = [ 835 | "cairo-sys-rs", 836 | "gdk-pixbuf-sys", 837 | "gio-sys", 838 | "glib-sys", 839 | "gobject-sys", 840 | "libc", 841 | "pango-sys", 842 | "pkg-config", 843 | "system-deps", 844 | ] 845 | 846 | [[package]] 847 | name = "getrandom" 848 | version = "0.2.6" 849 | source = "registry+https://github.com/rust-lang/crates.io-index" 850 | checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" 851 | dependencies = [ 852 | "cfg-if 1.0.0", 853 | "libc", 854 | "wasi 0.10.2+wasi-snapshot-preview1", 855 | ] 856 | 857 | [[package]] 858 | name = "gio-sys" 859 | version = "0.15.10" 860 | source = "registry+https://github.com/rust-lang/crates.io-index" 861 | checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" 862 | dependencies = [ 863 | "glib-sys", 864 | "gobject-sys", 865 | "libc", 866 | "system-deps", 867 | "winapi", 868 | ] 869 | 870 | [[package]] 871 | name = "gl_generator" 872 | version = "0.14.0" 873 | source = "registry+https://github.com/rust-lang/crates.io-index" 874 | checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" 875 | dependencies = [ 876 | "khronos_api", 877 | "log", 878 | "xml-rs", 879 | ] 880 | 881 | [[package]] 882 | name = "glib-sys" 883 | version = "0.15.10" 884 | source = "registry+https://github.com/rust-lang/crates.io-index" 885 | checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" 886 | dependencies = [ 887 | "libc", 888 | "system-deps", 889 | ] 890 | 891 | [[package]] 892 | name = "glow" 893 | version = "0.11.2" 894 | source = "registry+https://github.com/rust-lang/crates.io-index" 895 | checksum = "d8bd5877156a19b8ac83a29b2306fe20537429d318f3ff0a1a2119f8d9c61919" 896 | dependencies = [ 897 | "js-sys", 898 | "slotmap", 899 | "wasm-bindgen", 900 | "web-sys", 901 | ] 902 | 903 | [[package]] 904 | name = "glutin" 905 | version = "0.28.0" 906 | source = "registry+https://github.com/rust-lang/crates.io-index" 907 | checksum = "00ea9dbe544bc8a657c4c4a798c2d16cd01b549820e47657297549d28371f6d2" 908 | dependencies = [ 909 | "android_glue", 910 | "cgl", 911 | "cocoa", 912 | "core-foundation 0.9.3", 913 | "glutin_egl_sys", 914 | "glutin_emscripten_sys", 915 | "glutin_gles2_sys", 916 | "glutin_glx_sys", 917 | "glutin_wgl_sys", 918 | "lazy_static", 919 | "libloading", 920 | "log", 921 | "objc", 922 | "osmesa-sys", 923 | "parking_lot", 924 | "wayland-client", 925 | "wayland-egl", 926 | "winapi", 927 | "winit", 928 | ] 929 | 930 | [[package]] 931 | name = "glutin_egl_sys" 932 | version = "0.1.5" 933 | source = "registry+https://github.com/rust-lang/crates.io-index" 934 | checksum = "2abb6aa55523480c4adc5a56bbaa249992e2dddb2fc63dc96e04a3355364c211" 935 | dependencies = [ 936 | "gl_generator", 937 | "winapi", 938 | ] 939 | 940 | [[package]] 941 | name = "glutin_emscripten_sys" 942 | version = "0.1.1" 943 | source = "registry+https://github.com/rust-lang/crates.io-index" 944 | checksum = "80de4146df76e8a6c32b03007bc764ff3249dcaeb4f675d68a06caf1bac363f1" 945 | 946 | [[package]] 947 | name = "glutin_gles2_sys" 948 | version = "0.1.5" 949 | source = "registry+https://github.com/rust-lang/crates.io-index" 950 | checksum = "e8094e708b730a7c8a1954f4f8a31880af00eb8a1c5b5bf85d28a0a3c6d69103" 951 | dependencies = [ 952 | "gl_generator", 953 | "objc", 954 | ] 955 | 956 | [[package]] 957 | name = "glutin_glx_sys" 958 | version = "0.1.7" 959 | source = "registry+https://github.com/rust-lang/crates.io-index" 960 | checksum = "7e393c8fc02b807459410429150e9c4faffdb312d59b8c038566173c81991351" 961 | dependencies = [ 962 | "gl_generator", 963 | "x11-dl", 964 | ] 965 | 966 | [[package]] 967 | name = "glutin_wgl_sys" 968 | version = "0.1.5" 969 | source = "registry+https://github.com/rust-lang/crates.io-index" 970 | checksum = "3da5951a1569dbab865c6f2a863efafff193a93caf05538d193e9e3816d21696" 971 | dependencies = [ 972 | "gl_generator", 973 | ] 974 | 975 | [[package]] 976 | name = "gobject-sys" 977 | version = "0.15.10" 978 | source = "registry+https://github.com/rust-lang/crates.io-index" 979 | checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" 980 | dependencies = [ 981 | "glib-sys", 982 | "libc", 983 | "system-deps", 984 | ] 985 | 986 | [[package]] 987 | name = "gtk-sys" 988 | version = "0.15.3" 989 | source = "registry+https://github.com/rust-lang/crates.io-index" 990 | checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84" 991 | dependencies = [ 992 | "atk-sys", 993 | "cairo-sys-rs", 994 | "gdk-pixbuf-sys", 995 | "gdk-sys", 996 | "gio-sys", 997 | "glib-sys", 998 | "gobject-sys", 999 | "libc", 1000 | "pango-sys", 1001 | "system-deps", 1002 | ] 1003 | 1004 | [[package]] 1005 | name = "hashbrown" 1006 | version = "0.9.1" 1007 | source = "registry+https://github.com/rust-lang/crates.io-index" 1008 | checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" 1009 | dependencies = [ 1010 | "ahash 0.4.7", 1011 | ] 1012 | 1013 | [[package]] 1014 | name = "heck" 1015 | version = "0.4.0" 1016 | source = "registry+https://github.com/rust-lang/crates.io-index" 1017 | checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" 1018 | 1019 | [[package]] 1020 | name = "hex" 1021 | version = "0.4.3" 1022 | source = "registry+https://github.com/rust-lang/crates.io-index" 1023 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1024 | 1025 | [[package]] 1026 | name = "ident_case" 1027 | version = "1.0.1" 1028 | source = "registry+https://github.com/rust-lang/crates.io-index" 1029 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 1030 | 1031 | [[package]] 1032 | name = "idna" 1033 | version = "0.2.3" 1034 | source = "registry+https://github.com/rust-lang/crates.io-index" 1035 | checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" 1036 | dependencies = [ 1037 | "matches", 1038 | "unicode-bidi", 1039 | "unicode-normalization", 1040 | ] 1041 | 1042 | [[package]] 1043 | name = "instant" 1044 | version = "0.1.12" 1045 | source = "registry+https://github.com/rust-lang/crates.io-index" 1046 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 1047 | dependencies = [ 1048 | "cfg-if 1.0.0", 1049 | "js-sys", 1050 | "wasm-bindgen", 1051 | "web-sys", 1052 | ] 1053 | 1054 | [[package]] 1055 | name = "itertools" 1056 | version = "0.10.3" 1057 | source = "registry+https://github.com/rust-lang/crates.io-index" 1058 | checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" 1059 | dependencies = [ 1060 | "either", 1061 | ] 1062 | 1063 | [[package]] 1064 | name = "jni" 1065 | version = "0.19.0" 1066 | source = "registry+https://github.com/rust-lang/crates.io-index" 1067 | checksum = "c6df18c2e3db7e453d3c6ac5b3e9d5182664d28788126d39b91f2d1e22b017ec" 1068 | dependencies = [ 1069 | "cesu8", 1070 | "combine", 1071 | "jni-sys", 1072 | "log", 1073 | "thiserror", 1074 | "walkdir", 1075 | ] 1076 | 1077 | [[package]] 1078 | name = "jni-sys" 1079 | version = "0.3.0" 1080 | source = "registry+https://github.com/rust-lang/crates.io-index" 1081 | checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" 1082 | 1083 | [[package]] 1084 | name = "js-sys" 1085 | version = "0.3.57" 1086 | source = "registry+https://github.com/rust-lang/crates.io-index" 1087 | checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397" 1088 | dependencies = [ 1089 | "wasm-bindgen", 1090 | ] 1091 | 1092 | [[package]] 1093 | name = "khronos_api" 1094 | version = "3.1.0" 1095 | source = "registry+https://github.com/rust-lang/crates.io-index" 1096 | checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" 1097 | 1098 | [[package]] 1099 | name = "lazy-bytes-cast" 1100 | version = "5.0.1" 1101 | source = "registry+https://github.com/rust-lang/crates.io-index" 1102 | checksum = "10257499f089cd156ad82d0a9cd57d9501fa2c989068992a97eb3c27836f206b" 1103 | 1104 | [[package]] 1105 | name = "lazy_static" 1106 | version = "1.4.0" 1107 | source = "registry+https://github.com/rust-lang/crates.io-index" 1108 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1109 | 1110 | [[package]] 1111 | name = "libc" 1112 | version = "0.2.124" 1113 | source = "registry+https://github.com/rust-lang/crates.io-index" 1114 | checksum = "21a41fed9d98f27ab1c6d161da622a4fa35e8a54a8adc24bbf3ddd0ef70b0e50" 1115 | 1116 | [[package]] 1117 | name = "libloading" 1118 | version = "0.7.3" 1119 | source = "registry+https://github.com/rust-lang/crates.io-index" 1120 | checksum = "efbc0f03f9a775e9f6aed295c6a1ba2253c5757a9e03d55c6caa46a681abcddd" 1121 | dependencies = [ 1122 | "cfg-if 1.0.0", 1123 | "winapi", 1124 | ] 1125 | 1126 | [[package]] 1127 | name = "lock_api" 1128 | version = "0.4.7" 1129 | source = "registry+https://github.com/rust-lang/crates.io-index" 1130 | checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" 1131 | dependencies = [ 1132 | "autocfg", 1133 | "scopeguard", 1134 | ] 1135 | 1136 | [[package]] 1137 | name = "log" 1138 | version = "0.4.16" 1139 | source = "registry+https://github.com/rust-lang/crates.io-index" 1140 | checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8" 1141 | dependencies = [ 1142 | "cfg-if 1.0.0", 1143 | ] 1144 | 1145 | [[package]] 1146 | name = "malloc_buf" 1147 | version = "0.0.6" 1148 | source = "registry+https://github.com/rust-lang/crates.io-index" 1149 | checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 1150 | dependencies = [ 1151 | "libc", 1152 | ] 1153 | 1154 | [[package]] 1155 | name = "matches" 1156 | version = "0.1.9" 1157 | source = "registry+https://github.com/rust-lang/crates.io-index" 1158 | checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" 1159 | 1160 | [[package]] 1161 | name = "memchr" 1162 | version = "2.4.1" 1163 | source = "registry+https://github.com/rust-lang/crates.io-index" 1164 | checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" 1165 | 1166 | [[package]] 1167 | name = "memmap2" 1168 | version = "0.3.1" 1169 | source = "registry+https://github.com/rust-lang/crates.io-index" 1170 | checksum = "00b6c2ebff6180198788f5db08d7ce3bc1d0b617176678831a7510825973e357" 1171 | dependencies = [ 1172 | "libc", 1173 | ] 1174 | 1175 | [[package]] 1176 | name = "memoffset" 1177 | version = "0.6.5" 1178 | source = "registry+https://github.com/rust-lang/crates.io-index" 1179 | checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" 1180 | dependencies = [ 1181 | "autocfg", 1182 | ] 1183 | 1184 | [[package]] 1185 | name = "minimal-lexical" 1186 | version = "0.2.1" 1187 | source = "registry+https://github.com/rust-lang/crates.io-index" 1188 | checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 1189 | 1190 | [[package]] 1191 | name = "mio" 1192 | version = "0.8.2" 1193 | source = "registry+https://github.com/rust-lang/crates.io-index" 1194 | checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9" 1195 | dependencies = [ 1196 | "libc", 1197 | "log", 1198 | "miow", 1199 | "ntapi", 1200 | "wasi 0.11.0+wasi-snapshot-preview1", 1201 | "winapi", 1202 | ] 1203 | 1204 | [[package]] 1205 | name = "miow" 1206 | version = "0.3.7" 1207 | source = "registry+https://github.com/rust-lang/crates.io-index" 1208 | checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" 1209 | dependencies = [ 1210 | "winapi", 1211 | ] 1212 | 1213 | [[package]] 1214 | name = "ndk" 1215 | version = "0.5.0" 1216 | source = "registry+https://github.com/rust-lang/crates.io-index" 1217 | checksum = "96d868f654c72e75f8687572699cdabe755f03effbb62542768e995d5b8d699d" 1218 | dependencies = [ 1219 | "bitflags", 1220 | "jni-sys", 1221 | "ndk-sys 0.2.2", 1222 | "num_enum", 1223 | "thiserror", 1224 | ] 1225 | 1226 | [[package]] 1227 | name = "ndk" 1228 | version = "0.6.0" 1229 | source = "registry+https://github.com/rust-lang/crates.io-index" 1230 | checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" 1231 | dependencies = [ 1232 | "bitflags", 1233 | "jni-sys", 1234 | "ndk-sys 0.3.0", 1235 | "num_enum", 1236 | "thiserror", 1237 | ] 1238 | 1239 | [[package]] 1240 | name = "ndk-context" 1241 | version = "0.1.1" 1242 | source = "registry+https://github.com/rust-lang/crates.io-index" 1243 | checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" 1244 | 1245 | [[package]] 1246 | name = "ndk-glue" 1247 | version = "0.5.2" 1248 | source = "registry+https://github.com/rust-lang/crates.io-index" 1249 | checksum = "c71bee8ea72d685477e28bd004cfe1bf99c754d688cd78cad139eae4089484d4" 1250 | dependencies = [ 1251 | "lazy_static", 1252 | "libc", 1253 | "log", 1254 | "ndk 0.5.0", 1255 | "ndk-context", 1256 | "ndk-macro", 1257 | "ndk-sys 0.2.2", 1258 | ] 1259 | 1260 | [[package]] 1261 | name = "ndk-glue" 1262 | version = "0.6.2" 1263 | source = "registry+https://github.com/rust-lang/crates.io-index" 1264 | checksum = "0d0c4a7b83860226e6b4183edac21851f05d5a51756e97a1144b7f5a6b63e65f" 1265 | dependencies = [ 1266 | "lazy_static", 1267 | "libc", 1268 | "log", 1269 | "ndk 0.6.0", 1270 | "ndk-context", 1271 | "ndk-macro", 1272 | "ndk-sys 0.3.0", 1273 | ] 1274 | 1275 | [[package]] 1276 | name = "ndk-macro" 1277 | version = "0.3.0" 1278 | source = "registry+https://github.com/rust-lang/crates.io-index" 1279 | checksum = "0df7ac00c4672f9d5aece54ee3347520b7e20f158656c7db2e6de01902eb7a6c" 1280 | dependencies = [ 1281 | "darling", 1282 | "proc-macro-crate", 1283 | "proc-macro2", 1284 | "quote", 1285 | "syn", 1286 | ] 1287 | 1288 | [[package]] 1289 | name = "ndk-sys" 1290 | version = "0.2.2" 1291 | source = "registry+https://github.com/rust-lang/crates.io-index" 1292 | checksum = "e1bcdd74c20ad5d95aacd60ef9ba40fdf77f767051040541df557b7a9b2a2121" 1293 | 1294 | [[package]] 1295 | name = "ndk-sys" 1296 | version = "0.3.0" 1297 | source = "registry+https://github.com/rust-lang/crates.io-index" 1298 | checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" 1299 | dependencies = [ 1300 | "jni-sys", 1301 | ] 1302 | 1303 | [[package]] 1304 | name = "nix" 1305 | version = "0.22.3" 1306 | source = "registry+https://github.com/rust-lang/crates.io-index" 1307 | checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" 1308 | dependencies = [ 1309 | "bitflags", 1310 | "cc", 1311 | "cfg-if 1.0.0", 1312 | "libc", 1313 | "memoffset", 1314 | ] 1315 | 1316 | [[package]] 1317 | name = "nix" 1318 | version = "0.23.1" 1319 | source = "registry+https://github.com/rust-lang/crates.io-index" 1320 | checksum = "9f866317acbd3a240710c63f065ffb1e4fd466259045ccb504130b7f668f35c6" 1321 | dependencies = [ 1322 | "bitflags", 1323 | "cc", 1324 | "cfg-if 1.0.0", 1325 | "libc", 1326 | "memoffset", 1327 | ] 1328 | 1329 | [[package]] 1330 | name = "nohash-hasher" 1331 | version = "0.2.0" 1332 | source = "registry+https://github.com/rust-lang/crates.io-index" 1333 | checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" 1334 | 1335 | [[package]] 1336 | name = "nom" 1337 | version = "7.1.1" 1338 | source = "registry+https://github.com/rust-lang/crates.io-index" 1339 | checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" 1340 | dependencies = [ 1341 | "memchr", 1342 | "minimal-lexical", 1343 | ] 1344 | 1345 | [[package]] 1346 | name = "ntapi" 1347 | version = "0.3.7" 1348 | source = "registry+https://github.com/rust-lang/crates.io-index" 1349 | checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" 1350 | dependencies = [ 1351 | "winapi", 1352 | ] 1353 | 1354 | [[package]] 1355 | name = "num_enum" 1356 | version = "0.5.7" 1357 | source = "registry+https://github.com/rust-lang/crates.io-index" 1358 | checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" 1359 | dependencies = [ 1360 | "num_enum_derive", 1361 | ] 1362 | 1363 | [[package]] 1364 | name = "num_enum_derive" 1365 | version = "0.5.7" 1366 | source = "registry+https://github.com/rust-lang/crates.io-index" 1367 | checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" 1368 | dependencies = [ 1369 | "proc-macro-crate", 1370 | "proc-macro2", 1371 | "quote", 1372 | "syn", 1373 | ] 1374 | 1375 | [[package]] 1376 | name = "objc" 1377 | version = "0.2.7" 1378 | source = "registry+https://github.com/rust-lang/crates.io-index" 1379 | checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 1380 | dependencies = [ 1381 | "malloc_buf", 1382 | ] 1383 | 1384 | [[package]] 1385 | name = "objc-foundation" 1386 | version = "0.1.1" 1387 | source = "registry+https://github.com/rust-lang/crates.io-index" 1388 | checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" 1389 | dependencies = [ 1390 | "block", 1391 | "objc", 1392 | "objc_id", 1393 | ] 1394 | 1395 | [[package]] 1396 | name = "objc_id" 1397 | version = "0.1.1" 1398 | source = "registry+https://github.com/rust-lang/crates.io-index" 1399 | checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" 1400 | dependencies = [ 1401 | "objc", 1402 | ] 1403 | 1404 | [[package]] 1405 | name = "once_cell" 1406 | version = "1.10.0" 1407 | source = "registry+https://github.com/rust-lang/crates.io-index" 1408 | checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" 1409 | 1410 | [[package]] 1411 | name = "ordered-multimap" 1412 | version = "0.3.1" 1413 | source = "registry+https://github.com/rust-lang/crates.io-index" 1414 | checksum = "1c672c7ad9ec066e428c00eb917124a06f08db19e2584de982cc34b1f4c12485" 1415 | dependencies = [ 1416 | "dlv-list", 1417 | "hashbrown", 1418 | ] 1419 | 1420 | [[package]] 1421 | name = "ordered-stream" 1422 | version = "0.0.1" 1423 | source = "registry+https://github.com/rust-lang/crates.io-index" 1424 | checksum = "44630c059eacfd6e08bdaa51b1db2ce33119caa4ddc1235e923109aa5f25ccb1" 1425 | dependencies = [ 1426 | "futures-core", 1427 | "pin-project-lite", 1428 | ] 1429 | 1430 | [[package]] 1431 | name = "osmesa-sys" 1432 | version = "0.1.2" 1433 | source = "registry+https://github.com/rust-lang/crates.io-index" 1434 | checksum = "88cfece6e95d2e717e0872a7f53a8684712ad13822a7979bc760b9c77ec0013b" 1435 | dependencies = [ 1436 | "shared_library", 1437 | ] 1438 | 1439 | [[package]] 1440 | name = "owned_ttf_parser" 1441 | version = "0.15.0" 1442 | source = "registry+https://github.com/rust-lang/crates.io-index" 1443 | checksum = "4fb1e509cfe7a12db2a90bfa057dfcdbc55a347f5da677c506b53dd099cfec9d" 1444 | dependencies = [ 1445 | "ttf-parser", 1446 | ] 1447 | 1448 | [[package]] 1449 | name = "pango-sys" 1450 | version = "0.15.10" 1451 | source = "registry+https://github.com/rust-lang/crates.io-index" 1452 | checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" 1453 | dependencies = [ 1454 | "glib-sys", 1455 | "gobject-sys", 1456 | "libc", 1457 | "system-deps", 1458 | ] 1459 | 1460 | [[package]] 1461 | name = "parking" 1462 | version = "2.0.0" 1463 | source = "registry+https://github.com/rust-lang/crates.io-index" 1464 | checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" 1465 | 1466 | [[package]] 1467 | name = "parking_lot" 1468 | version = "0.11.2" 1469 | source = "registry+https://github.com/rust-lang/crates.io-index" 1470 | checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" 1471 | dependencies = [ 1472 | "instant", 1473 | "lock_api", 1474 | "parking_lot_core", 1475 | ] 1476 | 1477 | [[package]] 1478 | name = "parking_lot_core" 1479 | version = "0.8.5" 1480 | source = "registry+https://github.com/rust-lang/crates.io-index" 1481 | checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" 1482 | dependencies = [ 1483 | "cfg-if 1.0.0", 1484 | "instant", 1485 | "libc", 1486 | "redox_syscall", 1487 | "smallvec", 1488 | "winapi", 1489 | ] 1490 | 1491 | [[package]] 1492 | name = "percent-encoding" 1493 | version = "2.1.0" 1494 | source = "registry+https://github.com/rust-lang/crates.io-index" 1495 | checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" 1496 | 1497 | [[package]] 1498 | name = "pin-project-lite" 1499 | version = "0.2.9" 1500 | source = "registry+https://github.com/rust-lang/crates.io-index" 1501 | checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" 1502 | 1503 | [[package]] 1504 | name = "pin-utils" 1505 | version = "0.1.0" 1506 | source = "registry+https://github.com/rust-lang/crates.io-index" 1507 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1508 | 1509 | [[package]] 1510 | name = "pkg-config" 1511 | version = "0.3.25" 1512 | source = "registry+https://github.com/rust-lang/crates.io-index" 1513 | checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" 1514 | 1515 | [[package]] 1516 | name = "polling" 1517 | version = "2.2.0" 1518 | source = "registry+https://github.com/rust-lang/crates.io-index" 1519 | checksum = "685404d509889fade3e86fe3a5803bca2ec09b0c0778d5ada6ec8bf7a8de5259" 1520 | dependencies = [ 1521 | "cfg-if 1.0.0", 1522 | "libc", 1523 | "log", 1524 | "wepoll-ffi", 1525 | "winapi", 1526 | ] 1527 | 1528 | [[package]] 1529 | name = "ppv-lite86" 1530 | version = "0.2.16" 1531 | source = "registry+https://github.com/rust-lang/crates.io-index" 1532 | checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" 1533 | 1534 | [[package]] 1535 | name = "prefetch-hash-cracker" 1536 | version = "0.1.0" 1537 | dependencies = [ 1538 | "eframe", 1539 | "itertools", 1540 | "rfd", 1541 | ] 1542 | 1543 | [[package]] 1544 | name = "proc-macro-crate" 1545 | version = "1.1.3" 1546 | source = "registry+https://github.com/rust-lang/crates.io-index" 1547 | checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" 1548 | dependencies = [ 1549 | "thiserror", 1550 | "toml", 1551 | ] 1552 | 1553 | [[package]] 1554 | name = "proc-macro2" 1555 | version = "1.0.37" 1556 | source = "registry+https://github.com/rust-lang/crates.io-index" 1557 | checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1" 1558 | dependencies = [ 1559 | "unicode-xid", 1560 | ] 1561 | 1562 | [[package]] 1563 | name = "quick-xml" 1564 | version = "0.22.0" 1565 | source = "registry+https://github.com/rust-lang/crates.io-index" 1566 | checksum = "8533f14c8382aaad0d592c812ac3b826162128b65662331e1127b45c3d18536b" 1567 | dependencies = [ 1568 | "memchr", 1569 | ] 1570 | 1571 | [[package]] 1572 | name = "quote" 1573 | version = "1.0.18" 1574 | source = "registry+https://github.com/rust-lang/crates.io-index" 1575 | checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" 1576 | dependencies = [ 1577 | "proc-macro2", 1578 | ] 1579 | 1580 | [[package]] 1581 | name = "rand" 1582 | version = "0.8.5" 1583 | source = "registry+https://github.com/rust-lang/crates.io-index" 1584 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 1585 | dependencies = [ 1586 | "libc", 1587 | "rand_chacha", 1588 | "rand_core", 1589 | ] 1590 | 1591 | [[package]] 1592 | name = "rand_chacha" 1593 | version = "0.3.1" 1594 | source = "registry+https://github.com/rust-lang/crates.io-index" 1595 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 1596 | dependencies = [ 1597 | "ppv-lite86", 1598 | "rand_core", 1599 | ] 1600 | 1601 | [[package]] 1602 | name = "rand_core" 1603 | version = "0.6.3" 1604 | source = "registry+https://github.com/rust-lang/crates.io-index" 1605 | checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" 1606 | dependencies = [ 1607 | "getrandom", 1608 | ] 1609 | 1610 | [[package]] 1611 | name = "raw-window-handle" 1612 | version = "0.4.3" 1613 | source = "registry+https://github.com/rust-lang/crates.io-index" 1614 | checksum = "b800beb9b6e7d2df1fe337c9e3d04e3af22a124460fb4c30fcc22c9117cefb41" 1615 | dependencies = [ 1616 | "cty", 1617 | ] 1618 | 1619 | [[package]] 1620 | name = "redox_syscall" 1621 | version = "0.2.13" 1622 | source = "registry+https://github.com/rust-lang/crates.io-index" 1623 | checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" 1624 | dependencies = [ 1625 | "bitflags", 1626 | ] 1627 | 1628 | [[package]] 1629 | name = "redox_users" 1630 | version = "0.4.3" 1631 | source = "registry+https://github.com/rust-lang/crates.io-index" 1632 | checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" 1633 | dependencies = [ 1634 | "getrandom", 1635 | "redox_syscall", 1636 | "thiserror", 1637 | ] 1638 | 1639 | [[package]] 1640 | name = "regex" 1641 | version = "1.5.5" 1642 | source = "registry+https://github.com/rust-lang/crates.io-index" 1643 | checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286" 1644 | dependencies = [ 1645 | "aho-corasick", 1646 | "memchr", 1647 | "regex-syntax", 1648 | ] 1649 | 1650 | [[package]] 1651 | name = "regex-syntax" 1652 | version = "0.6.25" 1653 | source = "registry+https://github.com/rust-lang/crates.io-index" 1654 | checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" 1655 | 1656 | [[package]] 1657 | name = "rfd" 1658 | version = "0.8.2" 1659 | source = "registry+https://github.com/rust-lang/crates.io-index" 1660 | checksum = "92e3107b2e81967df7c0617e978dc656795583a73ad0ddbf645ce60109caf8c2" 1661 | dependencies = [ 1662 | "block", 1663 | "dispatch", 1664 | "glib-sys", 1665 | "gobject-sys", 1666 | "gtk-sys", 1667 | "js-sys", 1668 | "lazy_static", 1669 | "log", 1670 | "objc", 1671 | "objc-foundation", 1672 | "objc_id", 1673 | "raw-window-handle", 1674 | "wasm-bindgen", 1675 | "wasm-bindgen-futures", 1676 | "web-sys", 1677 | "windows", 1678 | ] 1679 | 1680 | [[package]] 1681 | name = "rust-ini" 1682 | version = "0.17.0" 1683 | source = "registry+https://github.com/rust-lang/crates.io-index" 1684 | checksum = "63471c4aa97a1cf8332a5f97709a79a4234698de6a1f5087faf66f2dae810e22" 1685 | dependencies = [ 1686 | "cfg-if 1.0.0", 1687 | "ordered-multimap", 1688 | ] 1689 | 1690 | [[package]] 1691 | name = "same-file" 1692 | version = "1.0.6" 1693 | source = "registry+https://github.com/rust-lang/crates.io-index" 1694 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 1695 | dependencies = [ 1696 | "winapi-util", 1697 | ] 1698 | 1699 | [[package]] 1700 | name = "scoped-tls" 1701 | version = "1.0.0" 1702 | source = "registry+https://github.com/rust-lang/crates.io-index" 1703 | checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" 1704 | 1705 | [[package]] 1706 | name = "scopeguard" 1707 | version = "1.1.0" 1708 | source = "registry+https://github.com/rust-lang/crates.io-index" 1709 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 1710 | 1711 | [[package]] 1712 | name = "serde" 1713 | version = "1.0.136" 1714 | source = "registry+https://github.com/rust-lang/crates.io-index" 1715 | checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" 1716 | dependencies = [ 1717 | "serde_derive", 1718 | ] 1719 | 1720 | [[package]] 1721 | name = "serde_derive" 1722 | version = "1.0.136" 1723 | source = "registry+https://github.com/rust-lang/crates.io-index" 1724 | checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" 1725 | dependencies = [ 1726 | "proc-macro2", 1727 | "quote", 1728 | "syn", 1729 | ] 1730 | 1731 | [[package]] 1732 | name = "serde_repr" 1733 | version = "0.1.7" 1734 | source = "registry+https://github.com/rust-lang/crates.io-index" 1735 | checksum = "98d0516900518c29efa217c298fa1f4e6c6ffc85ae29fd7f4ee48f176e1a9ed5" 1736 | dependencies = [ 1737 | "proc-macro2", 1738 | "quote", 1739 | "syn", 1740 | ] 1741 | 1742 | [[package]] 1743 | name = "sha1" 1744 | version = "0.6.1" 1745 | source = "registry+https://github.com/rust-lang/crates.io-index" 1746 | checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" 1747 | dependencies = [ 1748 | "sha1_smol", 1749 | ] 1750 | 1751 | [[package]] 1752 | name = "sha1_smol" 1753 | version = "1.0.0" 1754 | source = "registry+https://github.com/rust-lang/crates.io-index" 1755 | checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" 1756 | 1757 | [[package]] 1758 | name = "shared_library" 1759 | version = "0.1.9" 1760 | source = "registry+https://github.com/rust-lang/crates.io-index" 1761 | checksum = "5a9e7e0f2bfae24d8a5b5a66c5b257a83c7412304311512a0c054cd5e619da11" 1762 | dependencies = [ 1763 | "lazy_static", 1764 | "libc", 1765 | ] 1766 | 1767 | [[package]] 1768 | name = "slab" 1769 | version = "0.4.6" 1770 | source = "registry+https://github.com/rust-lang/crates.io-index" 1771 | checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32" 1772 | 1773 | [[package]] 1774 | name = "slotmap" 1775 | version = "1.0.6" 1776 | source = "registry+https://github.com/rust-lang/crates.io-index" 1777 | checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" 1778 | dependencies = [ 1779 | "version_check", 1780 | ] 1781 | 1782 | [[package]] 1783 | name = "smallvec" 1784 | version = "1.8.0" 1785 | source = "registry+https://github.com/rust-lang/crates.io-index" 1786 | checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" 1787 | 1788 | [[package]] 1789 | name = "smithay-client-toolkit" 1790 | version = "0.15.4" 1791 | source = "registry+https://github.com/rust-lang/crates.io-index" 1792 | checksum = "8a28f16a97fa0e8ce563b2774d1e732dd5d4025d2772c5dba0a41a0f90a29da3" 1793 | dependencies = [ 1794 | "bitflags", 1795 | "calloop", 1796 | "dlib", 1797 | "lazy_static", 1798 | "log", 1799 | "memmap2", 1800 | "nix 0.22.3", 1801 | "pkg-config", 1802 | "wayland-client", 1803 | "wayland-cursor", 1804 | "wayland-protocols", 1805 | ] 1806 | 1807 | [[package]] 1808 | name = "smithay-clipboard" 1809 | version = "0.6.5" 1810 | source = "registry+https://github.com/rust-lang/crates.io-index" 1811 | checksum = "610b551bd25378bfd2b8e7a0fcbd83d427e8f2f6a40c47ae0f70688e9949dd55" 1812 | dependencies = [ 1813 | "smithay-client-toolkit", 1814 | "wayland-client", 1815 | ] 1816 | 1817 | [[package]] 1818 | name = "socket2" 1819 | version = "0.4.4" 1820 | source = "registry+https://github.com/rust-lang/crates.io-index" 1821 | checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" 1822 | dependencies = [ 1823 | "libc", 1824 | "winapi", 1825 | ] 1826 | 1827 | [[package]] 1828 | name = "static_assertions" 1829 | version = "1.1.0" 1830 | source = "registry+https://github.com/rust-lang/crates.io-index" 1831 | checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 1832 | 1833 | [[package]] 1834 | name = "strsim" 1835 | version = "0.10.0" 1836 | source = "registry+https://github.com/rust-lang/crates.io-index" 1837 | checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" 1838 | 1839 | [[package]] 1840 | name = "syn" 1841 | version = "1.0.91" 1842 | source = "registry+https://github.com/rust-lang/crates.io-index" 1843 | checksum = "b683b2b825c8eef438b77c36a06dc262294da3d5a5813fac20da149241dcd44d" 1844 | dependencies = [ 1845 | "proc-macro2", 1846 | "quote", 1847 | "unicode-xid", 1848 | ] 1849 | 1850 | [[package]] 1851 | name = "system-deps" 1852 | version = "6.0.2" 1853 | source = "registry+https://github.com/rust-lang/crates.io-index" 1854 | checksum = "a1a45a1c4c9015217e12347f2a411b57ce2c4fc543913b14b6fe40483328e709" 1855 | dependencies = [ 1856 | "cfg-expr", 1857 | "heck", 1858 | "pkg-config", 1859 | "toml", 1860 | "version-compare", 1861 | ] 1862 | 1863 | [[package]] 1864 | name = "thiserror" 1865 | version = "1.0.30" 1866 | source = "registry+https://github.com/rust-lang/crates.io-index" 1867 | checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" 1868 | dependencies = [ 1869 | "thiserror-impl", 1870 | ] 1871 | 1872 | [[package]] 1873 | name = "thiserror-impl" 1874 | version = "1.0.30" 1875 | source = "registry+https://github.com/rust-lang/crates.io-index" 1876 | checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" 1877 | dependencies = [ 1878 | "proc-macro2", 1879 | "quote", 1880 | "syn", 1881 | ] 1882 | 1883 | [[package]] 1884 | name = "tinyvec" 1885 | version = "1.6.0" 1886 | source = "registry+https://github.com/rust-lang/crates.io-index" 1887 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 1888 | dependencies = [ 1889 | "tinyvec_macros", 1890 | ] 1891 | 1892 | [[package]] 1893 | name = "tinyvec_macros" 1894 | version = "0.1.0" 1895 | source = "registry+https://github.com/rust-lang/crates.io-index" 1896 | checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" 1897 | 1898 | [[package]] 1899 | name = "toml" 1900 | version = "0.5.9" 1901 | source = "registry+https://github.com/rust-lang/crates.io-index" 1902 | checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" 1903 | dependencies = [ 1904 | "serde", 1905 | ] 1906 | 1907 | [[package]] 1908 | name = "tracing" 1909 | version = "0.1.34" 1910 | source = "registry+https://github.com/rust-lang/crates.io-index" 1911 | checksum = "5d0ecdcb44a79f0fe9844f0c4f33a342cbcbb5117de8001e6ba0dc2351327d09" 1912 | dependencies = [ 1913 | "cfg-if 1.0.0", 1914 | "pin-project-lite", 1915 | "tracing-attributes", 1916 | "tracing-core", 1917 | ] 1918 | 1919 | [[package]] 1920 | name = "tracing-attributes" 1921 | version = "0.1.21" 1922 | source = "registry+https://github.com/rust-lang/crates.io-index" 1923 | checksum = "cc6b8ad3567499f98a1db7a752b07a7c8c7c7c34c332ec00effb2b0027974b7c" 1924 | dependencies = [ 1925 | "proc-macro2", 1926 | "quote", 1927 | "syn", 1928 | ] 1929 | 1930 | [[package]] 1931 | name = "tracing-core" 1932 | version = "0.1.26" 1933 | source = "registry+https://github.com/rust-lang/crates.io-index" 1934 | checksum = "f54c8ca710e81886d498c2fd3331b56c93aa248d49de2222ad2742247c60072f" 1935 | dependencies = [ 1936 | "lazy_static", 1937 | ] 1938 | 1939 | [[package]] 1940 | name = "ttf-parser" 1941 | version = "0.15.0" 1942 | source = "registry+https://github.com/rust-lang/crates.io-index" 1943 | checksum = "c74c96594835e10fa545e2a51e8709f30b173a092bfd6036ef2cec53376244f3" 1944 | 1945 | [[package]] 1946 | name = "unicode-bidi" 1947 | version = "0.3.8" 1948 | source = "registry+https://github.com/rust-lang/crates.io-index" 1949 | checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" 1950 | 1951 | [[package]] 1952 | name = "unicode-normalization" 1953 | version = "0.1.19" 1954 | source = "registry+https://github.com/rust-lang/crates.io-index" 1955 | checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" 1956 | dependencies = [ 1957 | "tinyvec", 1958 | ] 1959 | 1960 | [[package]] 1961 | name = "unicode-xid" 1962 | version = "0.2.2" 1963 | source = "registry+https://github.com/rust-lang/crates.io-index" 1964 | checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" 1965 | 1966 | [[package]] 1967 | name = "url" 1968 | version = "2.2.2" 1969 | source = "registry+https://github.com/rust-lang/crates.io-index" 1970 | checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" 1971 | dependencies = [ 1972 | "form_urlencoded", 1973 | "idna", 1974 | "matches", 1975 | "percent-encoding", 1976 | ] 1977 | 1978 | [[package]] 1979 | name = "version-compare" 1980 | version = "0.1.0" 1981 | source = "registry+https://github.com/rust-lang/crates.io-index" 1982 | checksum = "fe88247b92c1df6b6de80ddc290f3976dbdf2f5f5d3fd049a9fb598c6dd5ca73" 1983 | 1984 | [[package]] 1985 | name = "version_check" 1986 | version = "0.9.4" 1987 | source = "registry+https://github.com/rust-lang/crates.io-index" 1988 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 1989 | 1990 | [[package]] 1991 | name = "waker-fn" 1992 | version = "1.1.0" 1993 | source = "registry+https://github.com/rust-lang/crates.io-index" 1994 | checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" 1995 | 1996 | [[package]] 1997 | name = "walkdir" 1998 | version = "2.3.2" 1999 | source = "registry+https://github.com/rust-lang/crates.io-index" 2000 | checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" 2001 | dependencies = [ 2002 | "same-file", 2003 | "winapi", 2004 | "winapi-util", 2005 | ] 2006 | 2007 | [[package]] 2008 | name = "wasi" 2009 | version = "0.10.2+wasi-snapshot-preview1" 2010 | source = "registry+https://github.com/rust-lang/crates.io-index" 2011 | checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" 2012 | 2013 | [[package]] 2014 | name = "wasi" 2015 | version = "0.11.0+wasi-snapshot-preview1" 2016 | source = "registry+https://github.com/rust-lang/crates.io-index" 2017 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 2018 | 2019 | [[package]] 2020 | name = "wasm-bindgen" 2021 | version = "0.2.80" 2022 | source = "registry+https://github.com/rust-lang/crates.io-index" 2023 | checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad" 2024 | dependencies = [ 2025 | "cfg-if 1.0.0", 2026 | "wasm-bindgen-macro", 2027 | ] 2028 | 2029 | [[package]] 2030 | name = "wasm-bindgen-backend" 2031 | version = "0.2.80" 2032 | source = "registry+https://github.com/rust-lang/crates.io-index" 2033 | checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4" 2034 | dependencies = [ 2035 | "bumpalo", 2036 | "lazy_static", 2037 | "log", 2038 | "proc-macro2", 2039 | "quote", 2040 | "syn", 2041 | "wasm-bindgen-shared", 2042 | ] 2043 | 2044 | [[package]] 2045 | name = "wasm-bindgen-futures" 2046 | version = "0.4.30" 2047 | source = "registry+https://github.com/rust-lang/crates.io-index" 2048 | checksum = "6f741de44b75e14c35df886aff5f1eb73aa114fa5d4d00dcd37b5e01259bf3b2" 2049 | dependencies = [ 2050 | "cfg-if 1.0.0", 2051 | "js-sys", 2052 | "wasm-bindgen", 2053 | "web-sys", 2054 | ] 2055 | 2056 | [[package]] 2057 | name = "wasm-bindgen-macro" 2058 | version = "0.2.80" 2059 | source = "registry+https://github.com/rust-lang/crates.io-index" 2060 | checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5" 2061 | dependencies = [ 2062 | "quote", 2063 | "wasm-bindgen-macro-support", 2064 | ] 2065 | 2066 | [[package]] 2067 | name = "wasm-bindgen-macro-support" 2068 | version = "0.2.80" 2069 | source = "registry+https://github.com/rust-lang/crates.io-index" 2070 | checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b" 2071 | dependencies = [ 2072 | "proc-macro2", 2073 | "quote", 2074 | "syn", 2075 | "wasm-bindgen-backend", 2076 | "wasm-bindgen-shared", 2077 | ] 2078 | 2079 | [[package]] 2080 | name = "wasm-bindgen-shared" 2081 | version = "0.2.80" 2082 | source = "registry+https://github.com/rust-lang/crates.io-index" 2083 | checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744" 2084 | 2085 | [[package]] 2086 | name = "wayland-client" 2087 | version = "0.29.4" 2088 | source = "registry+https://github.com/rust-lang/crates.io-index" 2089 | checksum = "91223460e73257f697d9e23d401279123d36039a3f7a449e983f123292d4458f" 2090 | dependencies = [ 2091 | "bitflags", 2092 | "downcast-rs", 2093 | "libc", 2094 | "nix 0.22.3", 2095 | "scoped-tls", 2096 | "wayland-commons", 2097 | "wayland-scanner", 2098 | "wayland-sys", 2099 | ] 2100 | 2101 | [[package]] 2102 | name = "wayland-commons" 2103 | version = "0.29.4" 2104 | source = "registry+https://github.com/rust-lang/crates.io-index" 2105 | checksum = "94f6e5e340d7c13490eca867898c4cec5af56c27a5ffe5c80c6fc4708e22d33e" 2106 | dependencies = [ 2107 | "nix 0.22.3", 2108 | "once_cell", 2109 | "smallvec", 2110 | "wayland-sys", 2111 | ] 2112 | 2113 | [[package]] 2114 | name = "wayland-cursor" 2115 | version = "0.29.4" 2116 | source = "registry+https://github.com/rust-lang/crates.io-index" 2117 | checksum = "c52758f13d5e7861fc83d942d3d99bf270c83269575e52ac29e5b73cb956a6bd" 2118 | dependencies = [ 2119 | "nix 0.22.3", 2120 | "wayland-client", 2121 | "xcursor", 2122 | ] 2123 | 2124 | [[package]] 2125 | name = "wayland-egl" 2126 | version = "0.29.4" 2127 | source = "registry+https://github.com/rust-lang/crates.io-index" 2128 | checksum = "83281d69ee162b59031c666385e93bde4039ec553b90c4191cdb128ceea29a3a" 2129 | dependencies = [ 2130 | "wayland-client", 2131 | "wayland-sys", 2132 | ] 2133 | 2134 | [[package]] 2135 | name = "wayland-protocols" 2136 | version = "0.29.4" 2137 | source = "registry+https://github.com/rust-lang/crates.io-index" 2138 | checksum = "60147ae23303402e41fe034f74fb2c35ad0780ee88a1c40ac09a3be1e7465741" 2139 | dependencies = [ 2140 | "bitflags", 2141 | "wayland-client", 2142 | "wayland-commons", 2143 | "wayland-scanner", 2144 | ] 2145 | 2146 | [[package]] 2147 | name = "wayland-scanner" 2148 | version = "0.29.4" 2149 | source = "registry+https://github.com/rust-lang/crates.io-index" 2150 | checksum = "39a1ed3143f7a143187156a2ab52742e89dac33245ba505c17224df48939f9e0" 2151 | dependencies = [ 2152 | "proc-macro2", 2153 | "quote", 2154 | "xml-rs", 2155 | ] 2156 | 2157 | [[package]] 2158 | name = "wayland-sys" 2159 | version = "0.29.4" 2160 | source = "registry+https://github.com/rust-lang/crates.io-index" 2161 | checksum = "d9341df79a8975679188e37dab3889bfa57c44ac2cb6da166f519a81cbe452d4" 2162 | dependencies = [ 2163 | "dlib", 2164 | "lazy_static", 2165 | "pkg-config", 2166 | ] 2167 | 2168 | [[package]] 2169 | name = "web-sys" 2170 | version = "0.3.57" 2171 | source = "registry+https://github.com/rust-lang/crates.io-index" 2172 | checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283" 2173 | dependencies = [ 2174 | "js-sys", 2175 | "wasm-bindgen", 2176 | ] 2177 | 2178 | [[package]] 2179 | name = "webbrowser" 2180 | version = "0.6.0" 2181 | source = "registry+https://github.com/rust-lang/crates.io-index" 2182 | checksum = "f9c28b6b6a78440b02647358625e3febc90724126480b9da6a967b5f674b3554" 2183 | dependencies = [ 2184 | "jni", 2185 | "ndk-glue 0.6.2", 2186 | "url", 2187 | "web-sys", 2188 | "widestring", 2189 | "winapi", 2190 | ] 2191 | 2192 | [[package]] 2193 | name = "wepoll-ffi" 2194 | version = "0.1.2" 2195 | source = "registry+https://github.com/rust-lang/crates.io-index" 2196 | checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb" 2197 | dependencies = [ 2198 | "cc", 2199 | ] 2200 | 2201 | [[package]] 2202 | name = "widestring" 2203 | version = "0.5.1" 2204 | source = "registry+https://github.com/rust-lang/crates.io-index" 2205 | checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" 2206 | 2207 | [[package]] 2208 | name = "winapi" 2209 | version = "0.3.9" 2210 | source = "registry+https://github.com/rust-lang/crates.io-index" 2211 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 2212 | dependencies = [ 2213 | "winapi-i686-pc-windows-gnu", 2214 | "winapi-x86_64-pc-windows-gnu", 2215 | ] 2216 | 2217 | [[package]] 2218 | name = "winapi-i686-pc-windows-gnu" 2219 | version = "0.4.0" 2220 | source = "registry+https://github.com/rust-lang/crates.io-index" 2221 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 2222 | 2223 | [[package]] 2224 | name = "winapi-util" 2225 | version = "0.1.5" 2226 | source = "registry+https://github.com/rust-lang/crates.io-index" 2227 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 2228 | dependencies = [ 2229 | "winapi", 2230 | ] 2231 | 2232 | [[package]] 2233 | name = "winapi-x86_64-pc-windows-gnu" 2234 | version = "0.4.0" 2235 | source = "registry+https://github.com/rust-lang/crates.io-index" 2236 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 2237 | 2238 | [[package]] 2239 | name = "windows" 2240 | version = "0.35.0" 2241 | source = "registry+https://github.com/rust-lang/crates.io-index" 2242 | checksum = "08746b4b7ac95f708b3cccceb97b7f9a21a8916dd47fc99b0e6aaf7208f26fd7" 2243 | dependencies = [ 2244 | "windows_aarch64_msvc", 2245 | "windows_i686_gnu", 2246 | "windows_i686_msvc", 2247 | "windows_x86_64_gnu", 2248 | "windows_x86_64_msvc", 2249 | ] 2250 | 2251 | [[package]] 2252 | name = "windows_aarch64_msvc" 2253 | version = "0.35.0" 2254 | source = "registry+https://github.com/rust-lang/crates.io-index" 2255 | checksum = "db3bc5134e8ce0da5d64dcec3529793f1d33aee5a51fc2b4662e0f881dd463e6" 2256 | 2257 | [[package]] 2258 | name = "windows_i686_gnu" 2259 | version = "0.35.0" 2260 | source = "registry+https://github.com/rust-lang/crates.io-index" 2261 | checksum = "0343a6f35bf43a07b009b8591b78b10ea03de86b06f48e28c96206cd0f453b50" 2262 | 2263 | [[package]] 2264 | name = "windows_i686_msvc" 2265 | version = "0.35.0" 2266 | source = "registry+https://github.com/rust-lang/crates.io-index" 2267 | checksum = "1acdcbf4ca63d8e7a501be86fee744347186275ec2754d129ddeab7a1e3a02e4" 2268 | 2269 | [[package]] 2270 | name = "windows_x86_64_gnu" 2271 | version = "0.35.0" 2272 | source = "registry+https://github.com/rust-lang/crates.io-index" 2273 | checksum = "893c0924c5a990ec73cd2264d1c0cba1773a929e1a3f5dbccffd769f8c4edebb" 2274 | 2275 | [[package]] 2276 | name = "windows_x86_64_msvc" 2277 | version = "0.35.0" 2278 | source = "registry+https://github.com/rust-lang/crates.io-index" 2279 | checksum = "a29bd61f32889c822c99a8fdf2e93378bd2fae4d7efd2693fab09fcaaf7eff4b" 2280 | 2281 | [[package]] 2282 | name = "winit" 2283 | version = "0.26.1" 2284 | source = "registry+https://github.com/rust-lang/crates.io-index" 2285 | checksum = "9b43cc931d58b99461188607efd7acb2a093e65fc621f54cad78517a6063e73a" 2286 | dependencies = [ 2287 | "bitflags", 2288 | "cocoa", 2289 | "core-foundation 0.9.3", 2290 | "core-graphics 0.22.3", 2291 | "core-video-sys", 2292 | "dispatch", 2293 | "instant", 2294 | "lazy_static", 2295 | "libc", 2296 | "log", 2297 | "mio", 2298 | "ndk 0.5.0", 2299 | "ndk-glue 0.5.2", 2300 | "ndk-sys 0.2.2", 2301 | "objc", 2302 | "parking_lot", 2303 | "percent-encoding", 2304 | "raw-window-handle", 2305 | "smithay-client-toolkit", 2306 | "wasm-bindgen", 2307 | "wayland-client", 2308 | "wayland-protocols", 2309 | "web-sys", 2310 | "winapi", 2311 | "x11-dl", 2312 | ] 2313 | 2314 | [[package]] 2315 | name = "winreg" 2316 | version = "0.8.0" 2317 | source = "registry+https://github.com/rust-lang/crates.io-index" 2318 | checksum = "d107f8c6e916235c4c01cabb3e8acf7bea8ef6a63ca2e7fa0527c049badfc48c" 2319 | dependencies = [ 2320 | "winapi", 2321 | ] 2322 | 2323 | [[package]] 2324 | name = "x11-clipboard" 2325 | version = "0.5.3" 2326 | source = "registry+https://github.com/rust-lang/crates.io-index" 2327 | checksum = "473068b7b80ac86a18328824f1054e5e007898c47b5bbc281bd7abe32bc3653c" 2328 | dependencies = [ 2329 | "xcb", 2330 | ] 2331 | 2332 | [[package]] 2333 | name = "x11-dl" 2334 | version = "2.19.1" 2335 | source = "registry+https://github.com/rust-lang/crates.io-index" 2336 | checksum = "ea26926b4ce81a6f5d9d0f3a0bc401e5a37c6ae14a1bfaa8ff6099ca80038c59" 2337 | dependencies = [ 2338 | "lazy_static", 2339 | "libc", 2340 | "pkg-config", 2341 | ] 2342 | 2343 | [[package]] 2344 | name = "xcb" 2345 | version = "0.10.1" 2346 | source = "registry+https://github.com/rust-lang/crates.io-index" 2347 | checksum = "771e2b996df720cd1c6dd9ff90f62d91698fd3610cc078388d0564bdd6622a9c" 2348 | dependencies = [ 2349 | "libc", 2350 | "log", 2351 | "quick-xml", 2352 | ] 2353 | 2354 | [[package]] 2355 | name = "xcursor" 2356 | version = "0.3.4" 2357 | source = "registry+https://github.com/rust-lang/crates.io-index" 2358 | checksum = "463705a63313cd4301184381c5e8042f0a7e9b4bb63653f216311d4ae74690b7" 2359 | dependencies = [ 2360 | "nom", 2361 | ] 2362 | 2363 | [[package]] 2364 | name = "xml-rs" 2365 | version = "0.8.4" 2366 | source = "registry+https://github.com/rust-lang/crates.io-index" 2367 | checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" 2368 | 2369 | [[package]] 2370 | name = "zbus" 2371 | version = "2.1.1" 2372 | source = "registry+https://github.com/rust-lang/crates.io-index" 2373 | checksum = "7bb86f3d4592e26a48b2719742aec94f8ae6238ebde20d98183ee185d1275e9a" 2374 | dependencies = [ 2375 | "async-broadcast", 2376 | "async-channel", 2377 | "async-executor", 2378 | "async-io", 2379 | "async-lock", 2380 | "async-recursion", 2381 | "async-task", 2382 | "async-trait", 2383 | "byteorder", 2384 | "derivative", 2385 | "enumflags2", 2386 | "event-listener", 2387 | "futures-core", 2388 | "futures-sink", 2389 | "futures-util", 2390 | "hex", 2391 | "lazy_static", 2392 | "nix 0.23.1", 2393 | "once_cell", 2394 | "ordered-stream", 2395 | "rand", 2396 | "serde", 2397 | "serde_repr", 2398 | "sha1", 2399 | "static_assertions", 2400 | "winapi", 2401 | "zbus_macros", 2402 | "zbus_names", 2403 | "zvariant", 2404 | ] 2405 | 2406 | [[package]] 2407 | name = "zbus_macros" 2408 | version = "2.1.1" 2409 | source = "registry+https://github.com/rust-lang/crates.io-index" 2410 | checksum = "36823cc10fddc3c6b19f048903262dacaf8274170e9a255784bdd8b4570a8040" 2411 | dependencies = [ 2412 | "proc-macro-crate", 2413 | "proc-macro2", 2414 | "quote", 2415 | "regex", 2416 | "syn", 2417 | ] 2418 | 2419 | [[package]] 2420 | name = "zbus_names" 2421 | version = "2.1.0" 2422 | source = "registry+https://github.com/rust-lang/crates.io-index" 2423 | checksum = "45dfcdcf87b71dad505d30cc27b1b7b88a64b6d1c435648f48f9dbc1fdc4b7e1" 2424 | dependencies = [ 2425 | "serde", 2426 | "static_assertions", 2427 | "zvariant", 2428 | ] 2429 | 2430 | [[package]] 2431 | name = "zvariant" 2432 | version = "3.1.2" 2433 | source = "registry+https://github.com/rust-lang/crates.io-index" 2434 | checksum = "49ea5dc38b2058fae6a5b79009388143dadce1e91c26a67f984a0fc0381c8033" 2435 | dependencies = [ 2436 | "byteorder", 2437 | "enumflags2", 2438 | "libc", 2439 | "serde", 2440 | "static_assertions", 2441 | "zvariant_derive", 2442 | ] 2443 | 2444 | [[package]] 2445 | name = "zvariant_derive" 2446 | version = "3.1.2" 2447 | source = "registry+https://github.com/rust-lang/crates.io-index" 2448 | checksum = "8c2cecc5a61c2a053f7f653a24cd15b3b0195d7f7ddb5042c837fb32e161fb7a" 2449 | dependencies = [ 2450 | "proc-macro-crate", 2451 | "proc-macro2", 2452 | "quote", 2453 | "syn", 2454 | ] 2455 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "prefetch-hash-cracker" 3 | version = "0.2.0" 4 | edition = "2021" 5 | 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 | 8 | [dependencies] 9 | itertools = "0.10.3" 10 | eframe = "0.17.0" 11 | rfd = "0.8.1" -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Harel Segev 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Prefetch Hash Cracker 2 | 3 | ![screenshot](https://user-images.githubusercontent.com/84273110/174433530-e43fa9c8-b779-4be1-9160-0536626b5ce3.jpg) 4 | 5 | ## Motivation 6 | During the forensic analysis of a Windows machine, you may find the name of a deleted prefetch file. While its content may not be recoverable, the filename itself is often enough to find the full path of the executable for which the prefetch file was created. 7 | 8 | ## Using the tool 9 | The following fields must be provided: 10 | * *Executable name* 11 | Including the extension. It will be embedded in the prefetch filename, unless [this](#The-29-character-limit) happens. 12 | 13 | 14 | * *Prefetch hash* 15 | 8 hexadecimal digits at the end of the prefetch filename, right before the `.pf` extension. 16 | 17 | 18 | * *Hash function* 19 | * *Bodyfile* 20 | * *Mount point* 21 | 22 | ### Hash function 23 | There are 3 known prefetch hash functions: 24 | * *SCCA XP* 25 | Used in Windows XP 26 | 27 | 28 | * *SCCA Vista* 29 | Used in Windows Vista and Windows 10 30 | 31 | 32 | * *SCCA 2008* 33 | Used in Windows 7, Windows 8 and Windows 8.1 34 | 35 | 36 | ### Bodyfile 37 | A bodyfile of the volume the executable was executed from. 38 | 39 | The bodyfile format is not very restrictive, so there are a lot of variations of it - some of which are not supported. Body files created with `fls` and `MFTECmd` should work fine. 40 | 41 | ### Mount point 42 | The mount point of the bodyfile, as underlined below: 43 | 44 |
0|C:/Users/Peter/Desktop ($FILE_NAME)|62694-48-2|d/d-wx-wx-wx|...
45 | 46 | ## How does it work? 47 | The provided bodyfile is used to get the path of every folder on the volume. The tool appends the provided executable name to each of those paths to create a list of possible full paths for the executable. Each possible full path is then hashed using the provided hash function. If there's a possible full path for which the result matches the provided hash, that path is outputted. 48 | 49 | ## Limitations 50 | The following cases are not supported: 51 | * Hosting applications, such as `svchost.exe` and `mmc.exe` 52 | * Applications executed with the `/prefetch:#` flag 53 | * Applications executed from a UNC (network) path 54 | 55 | ### The 29-character limit 56 | If the executable name is longer than 29 characters (including the extension), it will be truncated in the prefetch filename. For example, executing this file: 57 | ``` 58 | This is a very long file nameSo this part will be truncated.exe 59 | ``` 60 | From the `C:\Temp` directory on a Windows 10 machine, will result in the creation of this prefetch file: 61 | ``` 62 | THIS IS A VERY LONG FILE NAME-D0B882CC.pf 63 | ``` 64 | 65 | In this case, the executable name cannot be derived from the prefetch filename, so you will not be able to provide it to the tool. 66 | 67 | ## License 68 | [MIT](https://choosealicense.com/licenses/mit/) 69 | -------------------------------------------------------------------------------- /src/bodyfile.rs: -------------------------------------------------------------------------------- 1 | /* 2 | Provides a bodyfile reader for the prefetch hash cracker 3 | Author: Harel Segev 4 | 06/10/2022 5 | */ 6 | 7 | use std::fs::File; 8 | use std::io; 9 | use std::io::{prelude::*, BufReader, Lines, ErrorKind}; 10 | use itertools::Itertools; 11 | 12 | 13 | pub struct BodyfileReader<'a> { 14 | lines: Lines>, 15 | mount_point: &'a str 16 | } 17 | 18 | impl<'a> BodyfileReader<'a> { 19 | pub fn new(bodyfile: File, mount_point: &'a str) -> Self { 20 | let reader = BufReader::new(bodyfile); 21 | let lines = reader.lines(); 22 | 23 | Self { 24 | lines, 25 | mount_point 26 | } 27 | } 28 | } 29 | 30 | impl<'a> Iterator for BodyfileReader<'a> { 31 | type Item = io::Result; 32 | 33 | fn next(&mut self) -> Option { 34 | loop { 35 | let line = self.lines.next()?; 36 | 37 | match line { 38 | Err(error) => { 39 | match error.kind() { 40 | ErrorKind::InvalidData => continue, 41 | _ => return Some(Err(error)), 42 | } 43 | }, 44 | 45 | Ok(line) => { 46 | return match line.split("|").next_tuple() { 47 | Some((_, filename, metadata_address)) => { 48 | let attribute_type = metadata_address.split("-").nth(1); 49 | 50 | if attribute_type != Some("144") { 51 | continue; 52 | } 53 | 54 | let res = strip_mount_point(self.mount_point, filename) 55 | .and_then(|res| strip_deleted(res)); 56 | 57 | Some( 58 | match res { 59 | Some(res) => 60 | Ok(res.replace("/", "\\").to_uppercase()), 61 | 62 | None => 63 | Err( 64 | io::Error::new( 65 | ErrorKind::InvalidData, 66 | "could not strip mount point" 67 | ) 68 | ) 69 | } 70 | ) 71 | } 72 | 73 | None => Some( 74 | Err( 75 | io::Error::new( 76 | ErrorKind::InvalidData, 77 | "invalid format" 78 | ) 79 | ) 80 | ) 81 | } 82 | } 83 | } 84 | } 85 | } 86 | } 87 | 88 | fn strip_mount_point<'a>(mount_point: &str, path: &'a str) -> Option<&'a str> { 89 | path.strip_prefix(mount_point).and_then(|res| { 90 | if mount_point.ends_with("/") { 91 | Some(res) 92 | } 93 | else { 94 | res.strip_prefix("/") 95 | } 96 | }) 97 | } 98 | 99 | fn strip_deleted(path: &str) -> Option<&str> { 100 | path.strip_suffix(" (deleted)").or(Some(path)) 101 | } -------------------------------------------------------------------------------- /src/errors.rs: -------------------------------------------------------------------------------- 1 | /* 2 | A custom error type for prefetch hash cracker 3 | Author: Harel Segev 4 | 06/14/2022 5 | */ 6 | 7 | use std::io; 8 | use std::fmt; 9 | use std::num; 10 | use std::error; 11 | 12 | 13 | #[derive(Debug)] 14 | pub enum PrefetchHashCrackerError { 15 | BadHash(num::ParseIntError), 16 | BodyfileError(io::Error) 17 | } 18 | 19 | impl fmt::Display for PrefetchHashCrackerError { 20 | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 21 | match *self { 22 | PrefetchHashCrackerError::BadHash(..) => 23 | write!(f, "the provided prefetch hash could not be parsed into int"), 24 | 25 | PrefetchHashCrackerError::BodyfileError(ref e) => { 26 | match e.kind() { 27 | io::ErrorKind::NotFound => 28 | write!(f, "the provided bodyfile could not be found"), 29 | 30 | _ => 31 | write!( 32 | f, 33 | "an error occurred while processing the provided bodyfile: {}", 34 | e.to_string() 35 | ) 36 | } 37 | } 38 | } 39 | } 40 | } 41 | 42 | impl error::Error for PrefetchHashCrackerError { 43 | fn source(&self) -> Option<&(dyn error::Error + 'static)> { 44 | match *self { 45 | PrefetchHashCrackerError::BadHash(ref e) => Some(e), 46 | PrefetchHashCrackerError::BodyfileError(ref e) => Some(e), 47 | } 48 | } 49 | } 50 | 51 | impl From for PrefetchHashCrackerError { 52 | fn from(error: num::ParseIntError) -> PrefetchHashCrackerError { 53 | PrefetchHashCrackerError::BadHash(error) 54 | } 55 | } 56 | 57 | impl From for PrefetchHashCrackerError { 58 | fn from(error: io::Error) -> PrefetchHashCrackerError { 59 | PrefetchHashCrackerError::BodyfileError(error) 60 | } 61 | } -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | /* 2 | Brute-Force Prefetch Hashes 3 | Author: Harel Segev 4 | 04/28/2022 5 | */ 6 | 7 | #![windows_subsystem = "windows"] 8 | 9 | mod prefetch; 10 | mod bodyfile; 11 | mod errors; 12 | 13 | type Result = std::result::Result; 14 | 15 | use std::fs::File; 16 | use std::path::PathBuf; 17 | use rfd; 18 | 19 | use eframe::{egui::CentralPanel, epi::App, NativeOptions, run_native}; 20 | use eframe::egui::{Context, TextEdit, Vec2, Visuals, ComboBox}; 21 | use eframe::epi::{Frame, Storage}; 22 | 23 | use prefetch::{PfHashFunction, DevicePaths, from_base16}; 24 | use errors::PrefetchHashCrackerError; 25 | use bodyfile::BodyfileReader; 26 | 27 | 28 | struct PrefetchHashCracker { 29 | executable: String, 30 | hash: String, 31 | 32 | bodyfile: PathBuf, 33 | mount_point: String, 34 | 35 | hash_functions: Vec, 36 | selected_function: usize, 37 | 38 | result: String 39 | } 40 | 41 | impl PrefetchHashCracker { 42 | fn new() -> Self { 43 | Self { 44 | executable: String::new(), 45 | hash: String::new(), 46 | 47 | bodyfile: PathBuf::new(), 48 | mount_point: String::new(), 49 | 50 | hash_functions: vec![ 51 | PfHashFunction::scca_vista(), 52 | PfHashFunction::scca_2008(), 53 | PfHashFunction::scca_xp() 54 | ], 55 | 56 | selected_function: 0, 57 | result: String::new() 58 | } 59 | } 60 | 61 | fn render_app(&mut self, ui: &mut eframe::egui::Ui) { 62 | ui.vertical(|ui| { 63 | ui.heading("Prefetch Hash Cracker"); 64 | ui.add_space(10.0); 65 | 66 | ui.horizontal(|ui| { 67 | ui.vertical(|ui| { 68 | ui.add(TextEdit::singleline(&mut self.executable) 69 | .hint_text("NOTEPAD.EXE") 70 | ); 71 | 72 | self.executable = self.executable.to_uppercase(); 73 | ui.label("Executable name"); 74 | }); 75 | 76 | ui.vertical(|ui| { 77 | ui.label("-"); 78 | }); 79 | 80 | ui.vertical(|ui| { 81 | ui.add(TextEdit::singleline(&mut self.hash) 82 | .hint_text("3D2AFDB4") 83 | .desired_width(120.0) 84 | ); 85 | 86 | self.hash = self.hash.to_uppercase(); 87 | ui.label("Prefetch hash"); 88 | }); 89 | 90 | ui.vertical(|ui| { 91 | ui.label(".pf"); 92 | }); 93 | 94 | ui.add_space(30.0); 95 | ui.vertical(|ui| { 96 | ComboBox::from_label( "Hash function").show_index( 97 | ui, 98 | &mut self.selected_function, 99 | self.hash_functions.len(), 100 | |i| self.hash_functions[i].to_string() 101 | ); 102 | }); 103 | }); 104 | 105 | ui.add_space(15.0); 106 | ui.horizontal(|ui| { 107 | ui.vertical(|ui| { 108 | ui.add(TextEdit::singleline( 109 | &mut self.bodyfile.display().to_string() 110 | ) 111 | .interactive(false) 112 | .desired_width(385.0) 113 | ); 114 | 115 | ui.label("Bodyfile (TSK 3.0+)"); 116 | }); 117 | 118 | ui.vertical(|ui| { 119 | if ui.button("Browse…").clicked() { 120 | if let Some(path) = rfd::FileDialog::new().pick_file() { 121 | self.bodyfile = path; 122 | } 123 | } 124 | }); 125 | 126 | ui.add_space(30.0); 127 | ui.vertical(|ui| { 128 | ui.add(TextEdit::singleline(&mut self.mount_point) 129 | .hint_text("C:") 130 | .desired_width(120.0) 131 | ); 132 | 133 | ui.label("Mount point"); 134 | }); 135 | }); 136 | 137 | ui.add_space(35.0); 138 | ui.vertical_centered(|ui| { 139 | if ui.button("Crack").clicked() { 140 | self.result = self.crack() 141 | .unwrap_or_else(|error| Some(error.to_string())) 142 | .unwrap_or("failed to crack the prefetch hash".to_owned()); 143 | } 144 | 145 | ui.add_space(5.0); 146 | ui.add(TextEdit::singleline(&mut self.result) 147 | .desired_width(620.0) 148 | ); 149 | }); 150 | }); 151 | } 152 | } 153 | 154 | impl PrefetchHashCracker { 155 | fn crack(&mut self) -> Result> { 156 | let bodyfile = File::open(&self.bodyfile)?; 157 | let reader = BodyfileReader::new(bodyfile, &self.mount_point); 158 | 159 | let hash_function = &self.hash_functions[self.selected_function]; 160 | let hash = from_base16(&self.hash)?; 161 | 162 | for folder in reader { 163 | let folder = folder?; 164 | 165 | for guess in DevicePaths::new(&folder, &self.executable) { 166 | if hash_function.hash(&guess) == hash { 167 | return Ok(Some(guess)); 168 | } 169 | } 170 | } 171 | 172 | Ok(None) 173 | } 174 | } 175 | 176 | impl App for PrefetchHashCracker { 177 | fn update(&mut self, _ctx: &Context, _frame: &Frame) { 178 | CentralPanel::default().show(_ctx, |mut ui| { 179 | self.render_app(&mut ui); 180 | }); 181 | } 182 | 183 | fn setup(&mut self, _ctx: &Context, _frame: &Frame, _storage: Option<&dyn Storage>) { 184 | _ctx.set_visuals(Visuals::dark()); 185 | } 186 | 187 | fn name(&self) -> &str { 188 | "Prefetch Hash Cracker" 189 | } 190 | } 191 | 192 | fn main() { 193 | let app = PrefetchHashCracker::new(); 194 | let mut window_options = NativeOptions::default(); 195 | window_options.initial_window_size = Some(Vec2 {x: 715.0, y: 240.0}); 196 | 197 | run_native(Box::new(app), window_options); 198 | } 199 | -------------------------------------------------------------------------------- /src/prefetch.rs: -------------------------------------------------------------------------------- 1 | /* 2 | Provides functionality for calculating prefetch hashes 3 | Author: Harel Segev 4 | 06/10/2022 5 | */ 6 | 7 | use std::num::ParseIntError; 8 | 9 | 10 | pub struct PfHashFunction { 11 | name: &'static str, 12 | function: fn(&str) -> u32 13 | } 14 | 15 | impl PfHashFunction { 16 | pub fn scca_vista() -> Self { 17 | Self { 18 | name: "SCCA Vista", 19 | function: hash::scca_vista 20 | } 21 | } 22 | 23 | pub fn scca_xp() -> Self { 24 | Self { 25 | name: "SCCA XP", 26 | function: hash::scca_xp 27 | } 28 | } 29 | 30 | pub fn scca_2008() -> Self { 31 | Self { 32 | name: "SCCA 2008", 33 | function: hash::scca_2008 34 | } 35 | } 36 | 37 | pub fn hash(&self, filename: &str) -> u32 { 38 | (self.function)(filename) 39 | } 40 | 41 | pub fn to_string(&self) -> String { 42 | self.name.to_owned() 43 | } 44 | } 45 | 46 | 47 | mod hash { 48 | fn encode_utf16_bytes(filename: &str) -> impl Iterator + '_ { 49 | filename 50 | .encode_utf16() 51 | .map(|char| char.to_le_bytes()) 52 | .flatten() 53 | } 54 | 55 | pub fn scca_vista(filename: &str) -> u32 { 56 | let mut hash_value: u32 = 314159; 57 | for byte in encode_utf16_bytes(filename) { 58 | hash_value = hash_value 59 | .wrapping_mul(37) 60 | .wrapping_add(byte as u32); 61 | } 62 | 63 | hash_value 64 | } 65 | 66 | pub fn scca_xp(filename: &str) -> u32 { 67 | let mut hash_value: u32 = 0; 68 | for byte in encode_utf16_bytes(filename) { 69 | hash_value = hash_value 70 | .wrapping_mul(37) 71 | .wrapping_add(byte as u32); 72 | } 73 | 74 | hash_value = hash_value.wrapping_mul(314159269); 75 | 76 | if (hash_value as i32) < 0 { 77 | hash_value = hash_value.wrapping_neg(); 78 | } 79 | 80 | hash_value % 1000000007 81 | } 82 | 83 | pub fn scca_2008(filename: &str) -> u32 { 84 | let mut hash_value: u32 = 314159; 85 | 86 | let filename: Vec<_> = encode_utf16_bytes(filename).collect(); 87 | let mut index: usize = 0; 88 | 89 | while index + 8 < filename.len() { 90 | let mut character_value: u32 = 0; 91 | 92 | for n in 1..=6 { 93 | character_value = character_value.wrapping_add(filename[index + n] as u32); 94 | character_value = character_value.wrapping_mul(37); 95 | } 96 | 97 | character_value = character_value.wrapping_add( 98 | (filename[index] as u32).wrapping_mul(442596621) 99 | ); 100 | 101 | character_value = character_value.wrapping_add(filename[index + 7] as u32); 102 | 103 | hash_value = character_value.wrapping_sub( 104 | hash_value.wrapping_mul(803794207) 105 | ); 106 | 107 | index += 8; 108 | } 109 | 110 | while index < filename.len() { 111 | hash_value = hash_value 112 | .wrapping_mul(37) 113 | .wrapping_add(filename[index] as u32); 114 | 115 | index += 1; 116 | } 117 | 118 | hash_value 119 | } 120 | } 121 | 122 | pub fn from_base16(hash: &str) -> Result { 123 | u32::from_str_radix(hash, 16) 124 | } 125 | 126 | pub struct DevicePaths<'a> { 127 | folder: &'a str, 128 | executable: &'a str, 129 | 130 | id: i32 131 | } 132 | 133 | impl<'a> DevicePaths<'a> { 134 | pub fn new(folder: &'a str, executable: &'a str) -> Self { 135 | Self { 136 | folder, 137 | executable, 138 | 139 | id: 0 140 | } 141 | } 142 | } 143 | 144 | impl<'a> Iterator for DevicePaths<'a> { 145 | type Item = String; 146 | 147 | fn next(&mut self) -> Option { 148 | match self.id { 149 | 0..=9 => { 150 | let (id, folder, executable) = (self.id, self.folder, self.executable); 151 | let res = format!("\\DEVICE\\HARDDISKVOLUME{id}\\{folder}\\{executable}"); 152 | 153 | self.id += 1; 154 | Some(res) 155 | } 156 | 157 | _ => None 158 | } 159 | } 160 | } --------------------------------------------------------------------------------