Full Code of capyloon/nutria for AI

main 7cd80945d4b3 cached
9803 files
94.4 MB
25.3M tokens
273812 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (101,318K chars total). Download the full file to get everything.
Repository: capyloon/nutria
Branch: main
Commit: 7cd80945d4b3
Files: 9803
Total size: 94.4 MB

Directory structure:
gitextract_f__1hgy7/

├── .github/
│   └── ISSUE_TEMPLATE/
│       └── bug_report.md
├── .gitignore
├── Android.mk
├── LICENSE
├── README.md
├── apps/
│   ├── .gitignore
│   ├── branding-b2gos/
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   ├── branding/
│   │   │   │   │   └── brand.ftl
│   │   │   │   ├── branding.ftl
│   │   │   │   └── neterror.ftl
│   │   │   └── ja/
│   │   │       ├── branding/
│   │   │       │   └── brand.ftl
│   │   │       ├── branding.ftl
│   │   │       └── neterror.ftl
│   │   ├── manifest.webmanifest
│   │   └── style/
│   │       └── branding.css
│   ├── branding-capyloon/
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   ├── branding/
│   │   │   │   │   └── brand.ftl
│   │   │   │   ├── branding.ftl
│   │   │   │   └── neterror.ftl
│   │   │   ├── ja/
│   │   │   │   ├── branding/
│   │   │   │   │   └── brand.ftl
│   │   │   │   ├── branding.ftl
│   │   │   │   └── neterror.ftl
│   │   │   └── zh-CN/
│   │   │       ├── branding.ftl
│   │   │       ├── browser/
│   │   │       │   └── appExtensionFields.ftl
│   │   │       └── neterror.ftl
│   │   ├── manifest.webmanifest
│   │   └── style/
│   │       └── branding.css
│   ├── camera/
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── bootstrap.js
│   │   │   ├── camera_base.js
│   │   │   ├── camera_gonk.js
│   │   │   ├── camera_webrtc.js
│   │   │   ├── config.js
│   │   │   └── qr_code.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   ├── ja/
│   │   │   │   └── main.ftl
│   │   │   └── zh-CN/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── qrdecoder/
│   │   │   ├── qrdecoder.js
│   │   │   └── qrdecoder.wasm
│   │   ├── style/
│   │   │   ├── desktop.css
│   │   │   ├── device.css
│   │   │   └── index.css
│   │   └── sw.js
│   ├── contacts/
│   │   ├── components/
│   │   │   ├── contact_info.css
│   │   │   └── contact_info.js
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── add_panel.js
│   │   │   ├── config.js
│   │   │   ├── dependencies.js
│   │   │   └── main.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   ├── ja/
│   │   │   │   └── main.ftl
│   │   │   └── zh-CN/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── style/
│   │   │   ├── desktop.css
│   │   │   ├── device.css
│   │   │   └── main.css
│   │   └── sw.js
│   ├── dialer/
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── config.js
│   │   │   └── main.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   ├── ja/
│   │   │   │   └── main.ftl
│   │   │   └── zh-CN/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   └── style/
│   │       ├── desktop.css
│   │       ├── device.css
│   │       └── index.css
│   ├── files/
│   │   ├── components/
│   │   │   ├── container_renderer.css
│   │   │   ├── container_renderer.js
│   │   │   ├── default_renderer.css
│   │   │   ├── default_renderer.js
│   │   │   ├── directory_picker.css
│   │   │   ├── directory_picker.js
│   │   │   ├── image_renderer.css
│   │   │   ├── image_renderer.js
│   │   │   ├── main_screen.css
│   │   │   ├── main_screen.js
│   │   │   ├── video_renderer.css
│   │   │   └── video_renderer.js
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── bootstrap.js
│   │   │   └── config.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   ├── ja/
│   │   │   │   └── main.ftl
│   │   │   └── zh-CN/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── style/
│   │   │   ├── desktop.css
│   │   │   ├── device.css
│   │   │   └── index.css
│   │   └── sw.js
│   ├── ftu/
│   │   ├── features.md
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── config.js
│   │   │   ├── datetime_panel.js
│   │   │   ├── dependencies.js
│   │   │   ├── display_panel.js
│   │   │   ├── identity_panel.js
│   │   │   ├── language_panel.js
│   │   │   ├── main.js
│   │   │   ├── privacy_panel.js
│   │   │   ├── search_panel.js
│   │   │   ├── webext_panel.js
│   │   │   └── wifi_panel.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   ├── ja/
│   │   │   │   └── main.ftl
│   │   │   └── zh-CN/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   └── style/
│   │       ├── desktop.css
│   │       ├── device.css
│   │       └── main.css
│   ├── gecko-l10n/
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── browser/
│   │   │   │       ├── appExtensionFields.ftl
│   │   │   │       └── safebrowsing/
│   │   │   │           └── blockedSite.ftl
│   │   │   └── ja/
│   │   │       └── browser/
│   │   │           ├── appExtensionFields.ftl
│   │   │           └── safebrowsing/
│   │   │               └── blockedSite.ftl
│   │   └── manifest.webmanifest
│   ├── homescreen/
│   │   ├── components/
│   │   │   ├── action_activity.css
│   │   │   ├── action_activity.js
│   │   │   ├── action_bookmark.css
│   │   │   ├── action_bookmark.js
│   │   │   ├── action_box.css
│   │   │   ├── action_box.js
│   │   │   ├── action_widget.css
│   │   │   ├── action_widget.js
│   │   │   ├── actions_wall.css
│   │   │   ├── actions_wall.js
│   │   │   ├── default_results.css
│   │   │   ├── default_results.js
│   │   │   ├── qr_dialog.css
│   │   │   ├── qr_dialog.js
│   │   │   └── resource_item.css
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── actions_store.js
│   │   │   ├── bootstrap.js
│   │   │   ├── config.js
│   │   │   ├── dependencies.js
│   │   │   ├── search/
│   │   │   │   ├── apps.js
│   │   │   │   ├── contacts.js
│   │   │   │   ├── fend.js
│   │   │   │   ├── fend_wasm.js
│   │   │   │   ├── fend_wasm_bg.wasm
│   │   │   │   ├── media.js
│   │   │   │   ├── opensearch.js
│   │   │   │   ├── places.js
│   │   │   │   ├── search_activity.js
│   │   │   │   ├── search_source.js
│   │   │   │   ├── skills.js
│   │   │   │   └── top_sites.js
│   │   │   └── search_panel.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   ├── ja/
│   │   │   │   └── main.ftl
│   │   │   └── zh-CN/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── resources/
│   │   │   ├── .gitignore
│   │   │   ├── default/
│   │   │   │   └── actions.json
│   │   │   ├── top_10k_sites.js
│   │   │   ├── update-alexa-1m.sh
│   │   │   └── update-topsites.sh
│   │   ├── style/
│   │   │   ├── desktop.css
│   │   │   ├── device.css
│   │   │   ├── index.css
│   │   │   └── search/
│   │   │       ├── media.css
│   │   │       └── places.css
│   │   └── sw.js
│   ├── keyboard/
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── config.js
│   │   │   └── main.js
│   │   ├── layouts/
│   │   │   ├── en-US.js
│   │   │   └── fr-FR.js
│   │   ├── manifest.webmanifest
│   │   └── style/
│   │       └── index.css
│   ├── mediacenter/
│   │   ├── components/
│   │   │   ├── default_results.css
│   │   │   ├── default_results.js
│   │   │   └── resource_item.css
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── bootstrap.js
│   │   │   ├── config.js
│   │   │   ├── dependencies.js
│   │   │   ├── favorites.js
│   │   │   ├── search/
│   │   │   │   ├── opensearch.js
│   │   │   │   ├── places.js
│   │   │   │   ├── search_source.js
│   │   │   │   └── top_sites.js
│   │   │   └── search_panel.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   ├── ja/
│   │   │   │   └── main.ftl
│   │   │   └── zh-CN/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── resources/
│   │   │   └── top_10k_sites.js
│   │   ├── style/
│   │   │   ├── desktop.css
│   │   │   ├── device.css
│   │   │   ├── index.css
│   │   │   └── search/
│   │   │       ├── media.css
│   │   │       └── places.css
│   │   └── sw.js
│   ├── messages/
│   │   ├── components/
│   │   │   ├── message_display.css
│   │   │   ├── message_display.js
│   │   │   ├── thread_head.css
│   │   │   └── thread_head.js
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── bootstrap.js
│   │   │   └── config.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   ├── ja/
│   │   │   │   └── main.ftl
│   │   │   └── zh-CN/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── style/
│   │   │   ├── desktop.css
│   │   │   ├── device.css
│   │   │   └── index.css
│   │   └── sw.js
│   ├── peers/
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── bootstrap.js
│   │   │   └── config.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   └── ja/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── style/
│   │   │   └── index.css
│   │   └── sw.js
│   ├── remotecontrol/
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── bootstrap.js
│   │   │   └── config.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   └── ja/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── style/
│   │   │   └── index.css
│   │   └── sw.js
│   ├── settings/
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── apps_panel.js
│   │   │   ├── config.js
│   │   │   ├── datetime_panel.js
│   │   │   ├── dependencies.js
│   │   │   ├── display_panel.js
│   │   │   ├── dweb_panel.js
│   │   │   ├── identity_panel.js
│   │   │   ├── language_panel.js
│   │   │   ├── lockscreen_panel.js
│   │   │   ├── main.js
│   │   │   ├── privacy_panel.js
│   │   │   ├── search_panel.js
│   │   │   ├── systeminfo_panel.js
│   │   │   ├── telephony_panel.js
│   │   │   ├── webext_panel.js
│   │   │   └── wifi_panel.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   ├── ja/
│   │   │   │   └── main.ftl
│   │   │   └── zh-CN/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   └── style/
│   │       ├── app_item.css
│   │       ├── desktop.css
│   │       ├── device.css
│   │       ├── main.css
│   │       └── web_extension.css
│   ├── settings.md
│   ├── shared/
│   │   ├── components/
│   │   │   ├── lit.js
│   │   │   └── lucide_icon.js
│   │   ├── fonts/
│   │   │   └── Readex_Pro/
│   │   │       ├── OFL.txt
│   │   │       └── README.txt
│   │   ├── js/
│   │   │   ├── activity_manager.js
│   │   │   ├── activity_sw.js
│   │   │   ├── api_daemon.js
│   │   │   ├── apps_manager.js
│   │   │   ├── content_manager.js
│   │   │   ├── dep_graph.js
│   │   │   ├── fluent_web.js
│   │   │   ├── injected.js
│   │   │   ├── injected_scripts/
│   │   │   │   └── netflix_tv.js
│   │   │   ├── ipfs.js
│   │   │   ├── panel_manager.js
│   │   │   ├── shoelace_setup.js
│   │   │   ├── spatial_navigation.js
│   │   │   ├── switch_setting.js
│   │   │   └── tile.js
│   │   ├── lucide/
│   │   │   └── Lucide.css
│   │   ├── manifest.webmanifest
│   │   ├── opensearch/
│   │   │   ├── brave.xml
│   │   │   ├── duckduckgo.xml
│   │   │   ├── ecosia.xml
│   │   │   ├── ipfs-search.xml
│   │   │   ├── mojeek.xml
│   │   │   └── opensearch.json
│   │   ├── resources/
│   │   │   ├── apn.json
│   │   │   ├── languages.json
│   │   │   ├── tosdr_org.json
│   │   │   └── tz.json
│   │   ├── shoelace/
│   │   │   ├── chunks/
│   │   │   │   ├── chunk.23HDCGKH.js
│   │   │   │   ├── chunk.24R5WE5A.js
│   │   │   │   ├── chunk.27ILGUWR.js
│   │   │   │   ├── chunk.2MCJQUSU.js
│   │   │   │   ├── chunk.2SZPKEN5.js
│   │   │   │   ├── chunk.2XMW5A5T.js
│   │   │   │   ├── chunk.34HYYZYW.js
│   │   │   │   ├── chunk.34S4OTPW.js
│   │   │   │   ├── chunk.36T65R7Z.js
│   │   │   │   ├── chunk.3A33BUSS.js
│   │   │   │   ├── chunk.3GITBIC4.js
│   │   │   │   ├── chunk.3K4U45R6.js
│   │   │   │   ├── chunk.3KCPXO34.js
│   │   │   │   ├── chunk.3MK3XHG7.js
│   │   │   │   ├── chunk.3OR6KPRS.js
│   │   │   │   ├── chunk.3TFKS637.js
│   │   │   │   ├── chunk.3TH5U7GS.js
│   │   │   │   ├── chunk.3Y6SB6QS.js
│   │   │   │   ├── chunk.43P53PKZ.js
│   │   │   │   ├── chunk.45QSH7JE.js
│   │   │   │   ├── chunk.466L6EFI.js
│   │   │   │   ├── chunk.4AGXO3EP.js
│   │   │   │   ├── chunk.4AL4ELCP.js
│   │   │   │   ├── chunk.4FM4N6Z2.js
│   │   │   │   ├── chunk.4M5XFOS7.js
│   │   │   │   ├── chunk.4N33ARUV.js
│   │   │   │   ├── chunk.4P5INGMM.js
│   │   │   │   ├── chunk.4PLZZP5P.js
│   │   │   │   ├── chunk.52GJFLW5.js
│   │   │   │   ├── chunk.55WP6TJR.js
│   │   │   │   ├── chunk.5H6S5K32.js
│   │   │   │   ├── chunk.5HFAXYOW.js
│   │   │   │   ├── chunk.5N5HUQFF.js
│   │   │   │   ├── chunk.5NRBQ6G4.js
│   │   │   │   ├── chunk.5OAEXGXA.js
│   │   │   │   ├── chunk.5QCEXB5W.js
│   │   │   │   ├── chunk.5UWXIW7Q.js
│   │   │   │   ├── chunk.5XKCLU7M.js
│   │   │   │   ├── chunk.63UPDLBW.js
│   │   │   │   ├── chunk.6LJMKLWZ.js
│   │   │   │   ├── chunk.6MBM5MRH.js
│   │   │   │   ├── chunk.6OLIJM6I.js
│   │   │   │   ├── chunk.6SLWKGTQ.js
│   │   │   │   ├── chunk.73DES5UF.js
│   │   │   │   ├── chunk.7KSQ6COJ.js
│   │   │   │   ├── chunk.7M4O7FFO.js
│   │   │   │   ├── chunk.7S64EEJW.js
│   │   │   │   ├── chunk.7WOVQUDP.js
│   │   │   │   ├── chunk.A3SSAVPV.js
│   │   │   │   ├── chunk.A4SOQOK5.js
│   │   │   │   ├── chunk.AFG7IAJY.js
│   │   │   │   ├── chunk.AKJPEIE3.js
│   │   │   │   ├── chunk.APA2CA2D.js
│   │   │   │   ├── chunk.AU5L77ON.js
│   │   │   │   ├── chunk.B3SICWSY.js
│   │   │   │   ├── chunk.B46HFF3C.js
│   │   │   │   ├── chunk.B4BZKR24.js
│   │   │   │   ├── chunk.BB3IFNZA.js
│   │   │   │   ├── chunk.BSXBTNGI.js
│   │   │   │   ├── chunk.BT5IXD6R.js
│   │   │   │   ├── chunk.BXWBYEBW.js
│   │   │   │   ├── chunk.C3WTUMID.js
│   │   │   │   ├── chunk.CEOSQBTO.js
│   │   │   │   ├── chunk.CFQVVM2L.js
│   │   │   │   ├── chunk.CWNX3TEY.js
│   │   │   │   ├── chunk.D4G3YB54.js
│   │   │   │   ├── chunk.DAPUP5RK.js
│   │   │   │   ├── chunk.DNRKD6AZ.js
│   │   │   │   ├── chunk.DOEQE6VP.js
│   │   │   │   ├── chunk.DOJPHVG6.js
│   │   │   │   ├── chunk.DOYC4G7X.js
│   │   │   │   ├── chunk.EFUIYJLS.js
│   │   │   │   ├── chunk.EMZVW7NJ.js
│   │   │   │   ├── chunk.EP23WFU3.js
│   │   │   │   ├── chunk.ESFFGLAX.js
│   │   │   │   ├── chunk.F4R62TH3.js
│   │   │   │   ├── chunk.F4VGSDIW.js
│   │   │   │   ├── chunk.FDFOFJDR.js
│   │   │   │   ├── chunk.FSFPD2YS.js
│   │   │   │   ├── chunk.FZX37GM3.js
│   │   │   │   ├── chunk.G2S23ZBL.js
│   │   │   │   ├── chunk.G4FTAQJB.js
│   │   │   │   ├── chunk.GCBHRONF.js
│   │   │   │   ├── chunk.GCUAIUGA.js
│   │   │   │   ├── chunk.GL3UMKIL.js
│   │   │   │   ├── chunk.GQDASYGT.js
│   │   │   │   ├── chunk.HA5LKTK7.js
│   │   │   │   ├── chunk.HAL7R4WT.js
│   │   │   │   ├── chunk.HF7GESMZ.js
│   │   │   │   ├── chunk.HPQ3PGLN.js
│   │   │   │   ├── chunk.HPWGIFMG.js
│   │   │   │   ├── chunk.HQAAUCQS.js
│   │   │   │   ├── chunk.HYCAXDPP.js
│   │   │   │   ├── chunk.IANYG5DU.js
│   │   │   │   ├── chunk.IHSUO777.js
│   │   │   │   ├── chunk.IQJYZEEZ.js
│   │   │   │   ├── chunk.IVBH34CJ.js
│   │   │   │   ├── chunk.JJNPZ52S.js
│   │   │   │   ├── chunk.JJXJQJAR.js
│   │   │   │   ├── chunk.JM3VXD4X.js
│   │   │   │   ├── chunk.JRG3SNOO.js
│   │   │   │   ├── chunk.JRL6WSW3.js
│   │   │   │   ├── chunk.JS5TXHUY.js
│   │   │   │   ├── chunk.KAB3KNWB.js
│   │   │   │   ├── chunk.KAS54FN5.js
│   │   │   │   ├── chunk.KKXA2ANL.js
│   │   │   │   ├── chunk.KPTXXHUL.js
│   │   │   │   ├── chunk.KRDDWTEW.js
│   │   │   │   ├── chunk.LB5X72JH.js
│   │   │   │   ├── chunk.LEE6HRXW.js
│   │   │   │   ├── chunk.LN7FMIHJ.js
│   │   │   │   ├── chunk.LYHKREWF.js
│   │   │   │   ├── chunk.LYVO77VG.js
│   │   │   │   ├── chunk.M2U2QT2K.js
│   │   │   │   ├── chunk.M55ZWT6F.js
│   │   │   │   ├── chunk.MGGPZXNU.js
│   │   │   │   ├── chunk.MGJX4QUE.js
│   │   │   │   ├── chunk.MKSGYDJ7.js
│   │   │   │   ├── chunk.MMH6PRFE.js
│   │   │   │   ├── chunk.MNWM7R7R.js
│   │   │   │   ├── chunk.MTYRJPGI.js
│   │   │   │   ├── chunk.NFJPZESI.js
│   │   │   │   ├── chunk.NH3SRVOC.js
│   │   │   │   ├── chunk.NHG6WGRJ.js
│   │   │   │   ├── chunk.NINJUQ3O.js
│   │   │   │   ├── chunk.NKJH6YIR.js
│   │   │   │   ├── chunk.NLMDSZVG.js
│   │   │   │   ├── chunk.NRDSDFDA.js
│   │   │   │   ├── chunk.NT6GBT3X.js
│   │   │   │   ├── chunk.NUUXJW3X.js
│   │   │   │   ├── chunk.NYIIDP5N.js
│   │   │   │   ├── chunk.O27EHOBW.js
│   │   │   │   ├── chunk.OIZNBQJN.js
│   │   │   │   ├── chunk.ONJD6DZB.js
│   │   │   │   ├── chunk.ONM5DPSJ.js
│   │   │   │   ├── chunk.OOUCCK4P.js
│   │   │   │   ├── chunk.OQXQSIH6.js
│   │   │   │   ├── chunk.OZPGMRHW.js
│   │   │   │   ├── chunk.P7ZG6EMR.js
│   │   │   │   ├── chunk.PCNTRSPK.js
│   │   │   │   ├── chunk.PCVNFXVK.js
│   │   │   │   ├── chunk.PCYEP4ET.js
│   │   │   │   ├── chunk.PI42AQQ3.js
│   │   │   │   ├── chunk.PNPJ7KDG.js
│   │   │   │   ├── chunk.PO3FKNES.js
│   │   │   │   ├── chunk.POVJIEB4.js
│   │   │   │   ├── chunk.QGC672JX.js
│   │   │   │   ├── chunk.QGKYNSKB.js
│   │   │   │   ├── chunk.QL5C2XOW.js
│   │   │   │   ├── chunk.QM4FQJJW.js
│   │   │   │   ├── chunk.QNMV47GO.js
│   │   │   │   ├── chunk.QPSNFEB2.js
│   │   │   │   ├── chunk.QZS7VZAH.js
│   │   │   │   ├── chunk.R3O4O6CQ.js
│   │   │   │   ├── chunk.RBTTBYTX.js
│   │   │   │   ├── chunk.RC6CGOZM.js
│   │   │   │   ├── chunk.RIBKWZXP.js
│   │   │   │   ├── chunk.RK73WSZS.js
│   │   │   │   ├── chunk.RRPF2VTE.js
│   │   │   │   ├── chunk.RV7OT463.js
│   │   │   │   ├── chunk.SWKYFDKR.js
│   │   │   │   ├── chunk.TDLFM7SW.js
│   │   │   │   ├── chunk.TH6UOT5H.js
│   │   │   │   ├── chunk.TNAJWR3J.js
│   │   │   │   ├── chunk.TSIZV5MY.js
│   │   │   │   ├── chunk.TXDANX46.js
│   │   │   │   ├── chunk.TZV7TKPW.js
│   │   │   │   ├── chunk.U52RAU7L.js
│   │   │   │   ├── chunk.U7BVLTSM.js
│   │   │   │   ├── chunk.UCEQC7L4.js
│   │   │   │   ├── chunk.UGWBMCKI.js
│   │   │   │   ├── chunk.UJXCOATR.js
│   │   │   │   ├── chunk.URBIOJXY.js
│   │   │   │   ├── chunk.UT2XRHAI.js
│   │   │   │   ├── chunk.UUPFKID5.js
│   │   │   │   ├── chunk.UYM4DCTI.js
│   │   │   │   ├── chunk.V6HXGH33.js
│   │   │   │   ├── chunk.VDIWJNQA.js
│   │   │   │   ├── chunk.VQDGOPN6.js
│   │   │   │   ├── chunk.VRUGIFWG.js
│   │   │   │   ├── chunk.VS5JEND2.js
│   │   │   │   ├── chunk.WF7GQGBH.js
│   │   │   │   ├── chunk.WF7WDFGJ.js
│   │   │   │   ├── chunk.WIWW2C4C.js
│   │   │   │   ├── chunk.WMFHBY7P.js
│   │   │   │   ├── chunk.WSMZ72DB.js
│   │   │   │   ├── chunk.WW6OHWMA.js
│   │   │   │   ├── chunk.X3BMLFMG.js
│   │   │   │   ├── chunk.X3PVKXAH.js
│   │   │   │   ├── chunk.XAJ2ADMX.js
│   │   │   │   ├── chunk.XAOA43RZ.js
│   │   │   │   ├── chunk.XFEYAMGW.js
│   │   │   │   ├── chunk.XJUZ5D7H.js
│   │   │   │   ├── chunk.XK5IPZIA.js
│   │   │   │   ├── chunk.XKOG42H3.js
│   │   │   │   ├── chunk.XNEONNEJ.js
│   │   │   │   ├── chunk.XQ4KBI5G.js
│   │   │   │   ├── chunk.XQWIVF2H.js
│   │   │   │   ├── chunk.XR5X7BVH.js
│   │   │   │   ├── chunk.XZMYMJVO.js
│   │   │   │   ├── chunk.YCHBWCKL.js
│   │   │   │   ├── chunk.YIKIE7BV.js
│   │   │   │   ├── chunk.YIYIQEKO.js
│   │   │   │   ├── chunk.YLY2FIZH.js
│   │   │   │   ├── chunk.YWWKTKUY.js
│   │   │   │   ├── chunk.YZETUBD6.js
│   │   │   │   ├── chunk.Z3NORRUK.js
│   │   │   │   ├── chunk.ZDAKW6TD.js
│   │   │   │   ├── chunk.ZGGXSEU7.js
│   │   │   │   ├── chunk.ZL53POKZ.js
│   │   │   │   └── chunk.ZQNN32RD.js
│   │   │   ├── components/
│   │   │   │   ├── alert/
│   │   │   │   │   ├── alert.component.js
│   │   │   │   │   ├── alert.js
│   │   │   │   │   └── alert.styles.js
│   │   │   │   ├── animated-image/
│   │   │   │   │   ├── animated-image.component.js
│   │   │   │   │   ├── animated-image.js
│   │   │   │   │   └── animated-image.styles.js
│   │   │   │   ├── animation/
│   │   │   │   │   ├── animation.component.js
│   │   │   │   │   ├── animation.js
│   │   │   │   │   ├── animation.styles.js
│   │   │   │   │   └── animations.js
│   │   │   │   ├── avatar/
│   │   │   │   │   ├── avatar.component.js
│   │   │   │   │   ├── avatar.js
│   │   │   │   │   └── avatar.styles.js
│   │   │   │   ├── badge/
│   │   │   │   │   ├── badge.component.js
│   │   │   │   │   ├── badge.js
│   │   │   │   │   └── badge.styles.js
│   │   │   │   ├── breadcrumb/
│   │   │   │   │   ├── breadcrumb.component.js
│   │   │   │   │   ├── breadcrumb.js
│   │   │   │   │   └── breadcrumb.styles.js
│   │   │   │   ├── breadcrumb-item/
│   │   │   │   │   ├── breadcrumb-item.component.js
│   │   │   │   │   ├── breadcrumb-item.js
│   │   │   │   │   └── breadcrumb-item.styles.js
│   │   │   │   ├── button/
│   │   │   │   │   ├── button.component.js
│   │   │   │   │   ├── button.js
│   │   │   │   │   └── button.styles.js
│   │   │   │   ├── button-group/
│   │   │   │   │   ├── button-group.component.js
│   │   │   │   │   ├── button-group.js
│   │   │   │   │   └── button-group.styles.js
│   │   │   │   ├── card/
│   │   │   │   │   ├── card.component.js
│   │   │   │   │   ├── card.js
│   │   │   │   │   └── card.styles.js
│   │   │   │   ├── carousel/
│   │   │   │   │   ├── autoplay-controller.js
│   │   │   │   │   ├── carousel.component.js
│   │   │   │   │   ├── carousel.js
│   │   │   │   │   ├── carousel.styles.js
│   │   │   │   │   └── scroll-controller.js
│   │   │   │   ├── carousel-item/
│   │   │   │   │   ├── carousel-item.component.js
│   │   │   │   │   ├── carousel-item.js
│   │   │   │   │   └── carousel-item.styles.js
│   │   │   │   ├── checkbox/
│   │   │   │   │   ├── checkbox.component.js
│   │   │   │   │   ├── checkbox.js
│   │   │   │   │   └── checkbox.styles.js
│   │   │   │   ├── color-picker/
│   │   │   │   │   ├── color-picker.component.js
│   │   │   │   │   ├── color-picker.js
│   │   │   │   │   └── color-picker.styles.js
│   │   │   │   ├── copy-button/
│   │   │   │   │   ├── copy-button.component.js
│   │   │   │   │   ├── copy-button.js
│   │   │   │   │   └── copy-button.styles.js
│   │   │   │   ├── details/
│   │   │   │   │   ├── details.component.js
│   │   │   │   │   ├── details.js
│   │   │   │   │   └── details.styles.js
│   │   │   │   ├── dialog/
│   │   │   │   │   ├── dialog.component.js
│   │   │   │   │   ├── dialog.js
│   │   │   │   │   └── dialog.styles.js
│   │   │   │   ├── divider/
│   │   │   │   │   ├── divider.component.js
│   │   │   │   │   ├── divider.js
│   │   │   │   │   └── divider.styles.js
│   │   │   │   ├── drawer/
│   │   │   │   │   ├── drawer.component.js
│   │   │   │   │   ├── drawer.js
│   │   │   │   │   └── drawer.styles.js
│   │   │   │   ├── dropdown/
│   │   │   │   │   ├── dropdown.component.js
│   │   │   │   │   ├── dropdown.js
│   │   │   │   │   └── dropdown.styles.js
│   │   │   │   ├── format-bytes/
│   │   │   │   │   ├── format-bytes.component.js
│   │   │   │   │   └── format-bytes.js
│   │   │   │   ├── format-date/
│   │   │   │   │   ├── format-date.component.js
│   │   │   │   │   └── format-date.js
│   │   │   │   ├── format-number/
│   │   │   │   │   ├── format-number.component.js
│   │   │   │   │   └── format-number.js
│   │   │   │   ├── icon/
│   │   │   │   │   ├── icon.component.js
│   │   │   │   │   ├── icon.js
│   │   │   │   │   ├── icon.styles.js
│   │   │   │   │   ├── library.default.js
│   │   │   │   │   ├── library.js
│   │   │   │   │   └── library.system.js
│   │   │   │   ├── icon-button/
│   │   │   │   │   ├── icon-button.component.js
│   │   │   │   │   ├── icon-button.js
│   │   │   │   │   └── icon-button.styles.js
│   │   │   │   ├── image-comparer/
│   │   │   │   │   ├── image-comparer.component.js
│   │   │   │   │   ├── image-comparer.js
│   │   │   │   │   └── image-comparer.styles.js
│   │   │   │   ├── include/
│   │   │   │   │   ├── include.component.js
│   │   │   │   │   ├── include.js
│   │   │   │   │   ├── include.styles.js
│   │   │   │   │   └── request.js
│   │   │   │   ├── input/
│   │   │   │   │   ├── input.component.js
│   │   │   │   │   ├── input.js
│   │   │   │   │   └── input.styles.js
│   │   │   │   ├── menu/
│   │   │   │   │   ├── menu.component.js
│   │   │   │   │   ├── menu.js
│   │   │   │   │   └── menu.styles.js
│   │   │   │   ├── menu-item/
│   │   │   │   │   ├── menu-item.component.js
│   │   │   │   │   ├── menu-item.js
│   │   │   │   │   ├── menu-item.styles.js
│   │   │   │   │   └── submenu-controller.js
│   │   │   │   ├── menu-label/
│   │   │   │   │   ├── menu-label.component.js
│   │   │   │   │   ├── menu-label.js
│   │   │   │   │   └── menu-label.styles.js
│   │   │   │   ├── mutation-observer/
│   │   │   │   │   ├── mutation-observer.component.js
│   │   │   │   │   ├── mutation-observer.js
│   │   │   │   │   └── mutation-observer.styles.js
│   │   │   │   ├── option/
│   │   │   │   │   ├── option.component.js
│   │   │   │   │   ├── option.js
│   │   │   │   │   └── option.styles.js
│   │   │   │   ├── popup/
│   │   │   │   │   ├── popup.component.js
│   │   │   │   │   ├── popup.js
│   │   │   │   │   └── popup.styles.js
│   │   │   │   ├── progress-bar/
│   │   │   │   │   ├── progress-bar.component.js
│   │   │   │   │   ├── progress-bar.js
│   │   │   │   │   └── progress-bar.styles.js
│   │   │   │   ├── progress-ring/
│   │   │   │   │   ├── progress-ring.component.js
│   │   │   │   │   ├── progress-ring.js
│   │   │   │   │   └── progress-ring.styles.js
│   │   │   │   ├── qr-code/
│   │   │   │   │   ├── qr-code.component.js
│   │   │   │   │   ├── qr-code.js
│   │   │   │   │   └── qr-code.styles.js
│   │   │   │   ├── radio/
│   │   │   │   │   ├── radio.component.js
│   │   │   │   │   ├── radio.js
│   │   │   │   │   └── radio.styles.js
│   │   │   │   ├── radio-button/
│   │   │   │   │   ├── radio-button.component.js
│   │   │   │   │   ├── radio-button.js
│   │   │   │   │   └── radio-button.styles.js
│   │   │   │   ├── radio-group/
│   │   │   │   │   ├── radio-group.component.js
│   │   │   │   │   ├── radio-group.js
│   │   │   │   │   └── radio-group.styles.js
│   │   │   │   ├── range/
│   │   │   │   │   ├── range.component.js
│   │   │   │   │   ├── range.js
│   │   │   │   │   └── range.styles.js
│   │   │   │   ├── rating/
│   │   │   │   │   ├── rating.component.js
│   │   │   │   │   ├── rating.js
│   │   │   │   │   └── rating.styles.js
│   │   │   │   ├── relative-time/
│   │   │   │   │   ├── relative-time.component.js
│   │   │   │   │   └── relative-time.js
│   │   │   │   ├── resize-observer/
│   │   │   │   │   ├── resize-observer.component.js
│   │   │   │   │   ├── resize-observer.js
│   │   │   │   │   └── resize-observer.styles.js
│   │   │   │   ├── select/
│   │   │   │   │   ├── select.component.js
│   │   │   │   │   ├── select.js
│   │   │   │   │   └── select.styles.js
│   │   │   │   ├── skeleton/
│   │   │   │   │   ├── skeleton.component.js
│   │   │   │   │   ├── skeleton.js
│   │   │   │   │   └── skeleton.styles.js
│   │   │   │   ├── spinner/
│   │   │   │   │   ├── spinner.component.js
│   │   │   │   │   ├── spinner.js
│   │   │   │   │   └── spinner.styles.js
│   │   │   │   ├── split-panel/
│   │   │   │   │   ├── split-panel.component.js
│   │   │   │   │   ├── split-panel.js
│   │   │   │   │   └── split-panel.styles.js
│   │   │   │   ├── switch/
│   │   │   │   │   ├── switch.component.js
│   │   │   │   │   ├── switch.js
│   │   │   │   │   └── switch.styles.js
│   │   │   │   ├── tab/
│   │   │   │   │   ├── tab.component.js
│   │   │   │   │   ├── tab.js
│   │   │   │   │   └── tab.styles.js
│   │   │   │   ├── tab-group/
│   │   │   │   │   ├── tab-group.component.js
│   │   │   │   │   ├── tab-group.js
│   │   │   │   │   └── tab-group.styles.js
│   │   │   │   ├── tab-panel/
│   │   │   │   │   ├── tab-panel.component.js
│   │   │   │   │   ├── tab-panel.js
│   │   │   │   │   └── tab-panel.styles.js
│   │   │   │   ├── tag/
│   │   │   │   │   ├── tag.component.js
│   │   │   │   │   ├── tag.js
│   │   │   │   │   └── tag.styles.js
│   │   │   │   ├── textarea/
│   │   │   │   │   ├── textarea.component.js
│   │   │   │   │   ├── textarea.js
│   │   │   │   │   └── textarea.styles.js
│   │   │   │   ├── tooltip/
│   │   │   │   │   ├── tooltip.component.js
│   │   │   │   │   ├── tooltip.js
│   │   │   │   │   └── tooltip.styles.js
│   │   │   │   ├── tree/
│   │   │   │   │   ├── tree.component.js
│   │   │   │   │   ├── tree.js
│   │   │   │   │   └── tree.styles.js
│   │   │   │   ├── tree-item/
│   │   │   │   │   ├── tree-item.component.js
│   │   │   │   │   ├── tree-item.js
│   │   │   │   │   └── tree-item.styles.js
│   │   │   │   └── visually-hidden/
│   │   │   │       ├── visually-hidden.component.js
│   │   │   │       ├── visually-hidden.js
│   │   │   │       └── visually-hidden.styles.js
│   │   │   ├── shoelace-autoloader.js
│   │   │   ├── shoelace.js
│   │   │   ├── themes/
│   │   │   │   ├── dark.css
│   │   │   │   ├── dark.styles.js
│   │   │   │   ├── light.css
│   │   │   │   └── light.styles.js
│   │   │   ├── translations/
│   │   │   │   ├── da.js
│   │   │   │   ├── de-ch.js
│   │   │   │   ├── de.js
│   │   │   │   ├── en-gb.js
│   │   │   │   ├── en.js
│   │   │   │   ├── es.js
│   │   │   │   ├── fa.js
│   │   │   │   ├── fr.js
│   │   │   │   ├── he.js
│   │   │   │   ├── hr.js
│   │   │   │   ├── hu.js
│   │   │   │   ├── ja.js
│   │   │   │   ├── nl.js
│   │   │   │   ├── pl.js
│   │   │   │   ├── pt.js
│   │   │   │   ├── ru.js
│   │   │   │   ├── sv.js
│   │   │   │   ├── tr.js
│   │   │   │   ├── zh-cn.js
│   │   │   │   └── zh-tw.js
│   │   │   └── utilities/
│   │   │       ├── animation-registry.js
│   │   │       ├── animation.js
│   │   │       ├── base-path.js
│   │   │       ├── form.js
│   │   │       ├── icon-library.js
│   │   │       └── localize.js
│   │   ├── style/
│   │   │   ├── fonts.css
│   │   │   └── themes/
│   │   │       └── default/
│   │   │           └── theme.css
│   │   ├── tiles/
│   │   │   └── draw/
│   │   │       └── index.html
│   │   └── xac/
│   │       ├── bridge.js
│   │       ├── frame.html
│   │       └── peer.js
│   ├── system/
│   │   ├── components/
│   │   │   ├── activity_chooser.css
│   │   │   ├── activity_chooser.js
│   │   │   ├── app_icon.css
│   │   │   ├── apps_list.css
│   │   │   ├── apps_list.js
│   │   │   ├── audio_volume_indicator.css
│   │   │   ├── audio_volume_indicator.js
│   │   │   ├── browser_action_popup.css
│   │   │   ├── browser_action_popup.js
│   │   │   ├── confirm_dialog.css
│   │   │   ├── confirm_dialog.js
│   │   │   ├── content_window.css
│   │   │   ├── content_window.js
│   │   │   ├── context_menu.css
│   │   │   ├── context_menu.js
│   │   │   ├── input_method.css
│   │   │   ├── input_method.js
│   │   │   ├── lock_screen.css
│   │   │   ├── lock_screen.js
│   │   │   ├── media_controller.css
│   │   │   ├── media_controller.js
│   │   │   ├── notification.js
│   │   │   ├── places_item.css
│   │   │   ├── publish_dialog.css
│   │   │   ├── publish_dialog.js
│   │   │   ├── quick_settings.css
│   │   │   ├── quick_settings.js
│   │   │   ├── reboot_menu.css
│   │   │   ├── reboot_menu.js
│   │   │   ├── select_ui.css
│   │   │   ├── select_ui.js
│   │   │   ├── site_info.css
│   │   │   ├── site_info.js
│   │   │   ├── status_bar.css
│   │   │   ├── status_bar.js
│   │   │   ├── status_icons.css
│   │   │   ├── status_icons.js
│   │   │   ├── text_share.css
│   │   │   ├── text_share.js
│   │   │   ├── ucan.js
│   │   │   ├── ucan_dialog.css
│   │   │   ├── url_edit.css
│   │   │   ├── url_edit.js
│   │   │   ├── wakeup_screen.css
│   │   │   ├── wakeup_screen.js
│   │   │   ├── web_extensions.js
│   │   │   ├── window_manager.css
│   │   │   └── window_manager.js
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── actions_dispatcher.js
│   │   │   ├── activity_handler.js
│   │   │   ├── audio_volume/
│   │   │   │   ├── gonk.js
│   │   │   │   └── linux.js
│   │   │   ├── battery.js
│   │   │   ├── bootstrap.js
│   │   │   ├── config.js
│   │   │   ├── dependencies.js
│   │   │   ├── downloads.js
│   │   │   ├── embedding.js
│   │   │   ├── filecoin.js
│   │   │   ├── flashlight.js
│   │   │   ├── haptic_feedback.js
│   │   │   ├── input_method.js
│   │   │   ├── ipfs_publisher.js
│   │   │   ├── keys.js
│   │   │   ├── notifications.js
│   │   │   ├── p2p.js
│   │   │   ├── power_manager.js
│   │   │   ├── remote_control.js
│   │   │   ├── tiles.js
│   │   │   ├── ua_store.js
│   │   │   ├── wallpaper_manager.js
│   │   │   └── web_extensions_delegate.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   ├── ja/
│   │   │   │   └── main.ftl
│   │   │   └── zh-CN/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── neterror/
│   │   │   ├── config.js
│   │   │   ├── index.html
│   │   │   ├── main.js
│   │   │   └── style.css
│   │   ├── style/
│   │   │   ├── desktop.css
│   │   │   ├── device.css
│   │   │   └── index.css
│   │   ├── sw.js
│   │   ├── swproxy/
│   │   │   ├── helper.js
│   │   │   ├── proxy.html
│   │   │   └── proxy.js
│   │   └── third-party/
│   │       └── node-vibrant/
│   │           └── vibrant.md
│   ├── terminal/
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── config.js
│   │   │   └── main.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   └── ja/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── style/
│   │   │   └── main.css
│   │   └── xterm.js/
│   │       ├── xterm-addon-fit.js
│   │       ├── xterm-addon-web-links.js
│   │       ├── xterm.css
│   │       └── xterm.js
│   ├── theme-capyloon/
│   │   ├── manifest.webmanifest
│   │   └── style.css
│   ├── theme-teal/
│   │   ├── manifest.webmanifest
│   │   └── style.css
│   ├── tiles/
│   │   ├── ace/
│   │   │   ├── ace.js
│   │   │   ├── ext-beautify.js
│   │   │   ├── ext-code_lens.js
│   │   │   ├── ext-elastic_tabstops_lite.js
│   │   │   ├── ext-emmet.js
│   │   │   ├── ext-error_marker.js
│   │   │   ├── ext-hardwrap.js
│   │   │   ├── ext-keybinding_menu.js
│   │   │   ├── ext-language_tools.js
│   │   │   ├── ext-linking.js
│   │   │   ├── ext-modelist.js
│   │   │   ├── ext-options.js
│   │   │   ├── ext-prompt.js
│   │   │   ├── ext-rtl.js
│   │   │   ├── ext-searchbox.js
│   │   │   ├── ext-settings_menu.js
│   │   │   ├── ext-spellcheck.js
│   │   │   ├── ext-split.js
│   │   │   ├── ext-static_highlight.js
│   │   │   ├── ext-statusbar.js
│   │   │   ├── ext-textarea.js
│   │   │   ├── ext-themelist.js
│   │   │   ├── ext-whitespace.js
│   │   │   ├── keybinding-emacs.js
│   │   │   ├── keybinding-sublime.js
│   │   │   ├── keybinding-vim.js
│   │   │   ├── keybinding-vscode.js
│   │   │   ├── mode-abap.js
│   │   │   ├── mode-abc.js
│   │   │   ├── mode-actionscript.js
│   │   │   ├── mode-ada.js
│   │   │   ├── mode-alda.js
│   │   │   ├── mode-apache_conf.js
│   │   │   ├── mode-apex.js
│   │   │   ├── mode-applescript.js
│   │   │   ├── mode-aql.js
│   │   │   ├── mode-asciidoc.js
│   │   │   ├── mode-asl.js
│   │   │   ├── mode-assembly_x86.js
│   │   │   ├── mode-autohotkey.js
│   │   │   ├── mode-batchfile.js
│   │   │   ├── mode-bibtex.js
│   │   │   ├── mode-c9search.js
│   │   │   ├── mode-c_cpp.js
│   │   │   ├── mode-cirru.js
│   │   │   ├── mode-clojure.js
│   │   │   ├── mode-cobol.js
│   │   │   ├── mode-coffee.js
│   │   │   ├── mode-coldfusion.js
│   │   │   ├── mode-crystal.js
│   │   │   ├── mode-csharp.js
│   │   │   ├── mode-csound_document.js
│   │   │   ├── mode-csound_orchestra.js
│   │   │   ├── mode-csound_score.js
│   │   │   ├── mode-csp.js
│   │   │   ├── mode-css.js
│   │   │   ├── mode-curly.js
│   │   │   ├── mode-d.js
│   │   │   ├── mode-dart.js
│   │   │   ├── mode-diff.js
│   │   │   ├── mode-django.js
│   │   │   ├── mode-dockerfile.js
│   │   │   ├── mode-dot.js
│   │   │   ├── mode-drools.js
│   │   │   ├── mode-edifact.js
│   │   │   ├── mode-eiffel.js
│   │   │   ├── mode-ejs.js
│   │   │   ├── mode-elixir.js
│   │   │   ├── mode-elm.js
│   │   │   ├── mode-erlang.js
│   │   │   ├── mode-forth.js
│   │   │   ├── mode-fortran.js
│   │   │   ├── mode-fsharp.js
│   │   │   ├── mode-fsl.js
│   │   │   ├── mode-ftl.js
│   │   │   ├── mode-gcode.js
│   │   │   ├── mode-gherkin.js
│   │   │   ├── mode-gitignore.js
│   │   │   ├── mode-glsl.js
│   │   │   ├── mode-gobstones.js
│   │   │   ├── mode-golang.js
│   │   │   ├── mode-graphqlschema.js
│   │   │   ├── mode-groovy.js
│   │   │   ├── mode-haml.js
│   │   │   ├── mode-handlebars.js
│   │   │   ├── mode-haskell.js
│   │   │   ├── mode-haskell_cabal.js
│   │   │   ├── mode-haxe.js
│   │   │   ├── mode-hjson.js
│   │   │   ├── mode-html.js
│   │   │   ├── mode-html_elixir.js
│   │   │   ├── mode-html_ruby.js
│   │   │   ├── mode-ini.js
│   │   │   ├── mode-io.js
│   │   │   ├── mode-ion.js
│   │   │   ├── mode-jack.js
│   │   │   ├── mode-jade.js
│   │   │   ├── mode-java.js
│   │   │   ├── mode-javascript.js
│   │   │   ├── mode-jexl.js
│   │   │   ├── mode-json.js
│   │   │   ├── mode-json5.js
│   │   │   ├── mode-jsoniq.js
│   │   │   ├── mode-jsp.js
│   │   │   ├── mode-jssm.js
│   │   │   ├── mode-jsx.js
│   │   │   ├── mode-julia.js
│   │   │   ├── mode-kotlin.js
│   │   │   ├── mode-latex.js
│   │   │   ├── mode-latte.js
│   │   │   ├── mode-less.js
│   │   │   ├── mode-liquid.js
│   │   │   ├── mode-lisp.js
│   │   │   ├── mode-livescript.js
│   │   │   ├── mode-logiql.js
│   │   │   ├── mode-logtalk.js
│   │   │   ├── mode-lsl.js
│   │   │   ├── mode-lua.js
│   │   │   ├── mode-luapage.js
│   │   │   ├── mode-lucene.js
│   │   │   ├── mode-makefile.js
│   │   │   ├── mode-markdown.js
│   │   │   ├── mode-mask.js
│   │   │   ├── mode-matlab.js
│   │   │   ├── mode-maze.js
│   │   │   ├── mode-mediawiki.js
│   │   │   ├── mode-mel.js
│   │   │   ├── mode-mips.js
│   │   │   ├── mode-mixal.js
│   │   │   ├── mode-mushcode.js
│   │   │   ├── mode-mysql.js
│   │   │   ├── mode-nginx.js
│   │   │   ├── mode-nim.js
│   │   │   ├── mode-nix.js
│   │   │   ├── mode-nsis.js
│   │   │   ├── mode-nunjucks.js
│   │   │   ├── mode-objectivec.js
│   │   │   ├── mode-ocaml.js
│   │   │   ├── mode-partiql.js
│   │   │   ├── mode-pascal.js
│   │   │   ├── mode-perl.js
│   │   │   ├── mode-pgsql.js
│   │   │   ├── mode-php.js
│   │   │   ├── mode-php_laravel_blade.js
│   │   │   ├── mode-pig.js
│   │   │   ├── mode-plain_text.js
│   │   │   ├── mode-plsql.js
│   │   │   ├── mode-powershell.js
│   │   │   ├── mode-praat.js
│   │   │   ├── mode-prisma.js
│   │   │   ├── mode-prolog.js
│   │   │   ├── mode-properties.js
│   │   │   ├── mode-protobuf.js
│   │   │   ├── mode-puppet.js
│   │   │   ├── mode-python.js
│   │   │   ├── mode-qml.js
│   │   │   ├── mode-r.js
│   │   │   ├── mode-raku.js
│   │   │   ├── mode-razor.js
│   │   │   ├── mode-rdoc.js
│   │   │   ├── mode-red.js
│   │   │   ├── mode-redshift.js
│   │   │   ├── mode-rhtml.js
│   │   │   ├── mode-robot.js
│   │   │   ├── mode-rst.js
│   │   │   ├── mode-ruby.js
│   │   │   ├── mode-rust.js
│   │   │   ├── mode-sac.js
│   │   │   ├── mode-sass.js
│   │   │   ├── mode-scad.js
│   │   │   ├── mode-scala.js
│   │   │   ├── mode-scheme.js
│   │   │   ├── mode-scrypt.js
│   │   │   ├── mode-scss.js
│   │   │   ├── mode-sh.js
│   │   │   ├── mode-sjs.js
│   │   │   ├── mode-slim.js
│   │   │   ├── mode-smarty.js
│   │   │   ├── mode-smithy.js
│   │   │   ├── mode-snippets.js
│   │   │   ├── mode-soy_template.js
│   │   │   ├── mode-space.js
│   │   │   ├── mode-sparql.js
│   │   │   ├── mode-sql.js
│   │   │   ├── mode-sqlserver.js
│   │   │   ├── mode-stylus.js
│   │   │   ├── mode-svg.js
│   │   │   ├── mode-swift.js
│   │   │   ├── mode-tcl.js
│   │   │   ├── mode-terraform.js
│   │   │   ├── mode-tex.js
│   │   │   ├── mode-text.js
│   │   │   ├── mode-textile.js
│   │   │   ├── mode-toml.js
│   │   │   ├── mode-tsx.js
│   │   │   ├── mode-turtle.js
│   │   │   ├── mode-twig.js
│   │   │   ├── mode-typescript.js
│   │   │   ├── mode-vala.js
│   │   │   ├── mode-vbscript.js
│   │   │   ├── mode-velocity.js
│   │   │   ├── mode-verilog.js
│   │   │   ├── mode-vhdl.js
│   │   │   ├── mode-visualforce.js
│   │   │   ├── mode-wollok.js
│   │   │   ├── mode-xml.js
│   │   │   ├── mode-xquery.js
│   │   │   ├── mode-yaml.js
│   │   │   ├── mode-zeek.js
│   │   │   ├── snippets/
│   │   │   │   ├── abap.js
│   │   │   │   ├── abc.js
│   │   │   │   ├── actionscript.js
│   │   │   │   ├── ada.js
│   │   │   │   ├── alda.js
│   │   │   │   ├── apache_conf.js
│   │   │   │   ├── apex.js
│   │   │   │   ├── applescript.js
│   │   │   │   ├── aql.js
│   │   │   │   ├── asciidoc.js
│   │   │   │   ├── asl.js
│   │   │   │   ├── assembly_x86.js
│   │   │   │   ├── autohotkey.js
│   │   │   │   ├── batchfile.js
│   │   │   │   ├── bibtex.js
│   │   │   │   ├── c9search.js
│   │   │   │   ├── c_cpp.js
│   │   │   │   ├── cirru.js
│   │   │   │   ├── clojure.js
│   │   │   │   ├── cobol.js
│   │   │   │   ├── coffee.js
│   │   │   │   ├── coldfusion.js
│   │   │   │   ├── crystal.js
│   │   │   │   ├── csharp.js
│   │   │   │   ├── csound_document.js
│   │   │   │   ├── csound_orchestra.js
│   │   │   │   ├── csound_score.js
│   │   │   │   ├── csp.js
│   │   │   │   ├── css.js
│   │   │   │   ├── curly.js
│   │   │   │   ├── d.js
│   │   │   │   ├── dart.js
│   │   │   │   ├── diff.js
│   │   │   │   ├── django.js
│   │   │   │   ├── dockerfile.js
│   │   │   │   ├── dot.js
│   │   │   │   ├── drools.js
│   │   │   │   ├── edifact.js
│   │   │   │   ├── eiffel.js
│   │   │   │   ├── ejs.js
│   │   │   │   ├── elixir.js
│   │   │   │   ├── elm.js
│   │   │   │   ├── erlang.js
│   │   │   │   ├── forth.js
│   │   │   │   ├── fortran.js
│   │   │   │   ├── fsharp.js
│   │   │   │   ├── fsl.js
│   │   │   │   ├── ftl.js
│   │   │   │   ├── gcode.js
│   │   │   │   ├── gherkin.js
│   │   │   │   ├── gitignore.js
│   │   │   │   ├── glsl.js
│   │   │   │   ├── gobstones.js
│   │   │   │   ├── golang.js
│   │   │   │   ├── graphqlschema.js
│   │   │   │   ├── groovy.js
│   │   │   │   ├── haml.js
│   │   │   │   ├── handlebars.js
│   │   │   │   ├── haskell.js
│   │   │   │   ├── haskell_cabal.js
│   │   │   │   ├── haxe.js
│   │   │   │   ├── hjson.js
│   │   │   │   ├── html.js
│   │   │   │   ├── html_elixir.js
│   │   │   │   ├── html_ruby.js
│   │   │   │   ├── ini.js
│   │   │   │   ├── io.js
│   │   │   │   ├── ion.js
│   │   │   │   ├── jack.js
│   │   │   │   ├── jade.js
│   │   │   │   ├── java.js
│   │   │   │   ├── javascript.js
│   │   │   │   ├── jexl.js
│   │   │   │   ├── json.js
│   │   │   │   ├── json5.js
│   │   │   │   ├── jsoniq.js
│   │   │   │   ├── jsp.js
│   │   │   │   ├── jssm.js
│   │   │   │   ├── jsx.js
│   │   │   │   ├── julia.js
│   │   │   │   ├── kotlin.js
│   │   │   │   ├── latex.js
│   │   │   │   ├── latte.js
│   │   │   │   ├── less.js
│   │   │   │   ├── liquid.js
│   │   │   │   ├── lisp.js
│   │   │   │   ├── livescript.js
│   │   │   │   ├── logiql.js
│   │   │   │   ├── logtalk.js
│   │   │   │   ├── lsl.js
│   │   │   │   ├── lua.js
│   │   │   │   ├── luapage.js
│   │   │   │   ├── lucene.js
│   │   │   │   ├── makefile.js
│   │   │   │   ├── markdown.js
│   │   │   │   ├── mask.js
│   │   │   │   ├── matlab.js
│   │   │   │   ├── maze.js
│   │   │   │   ├── mediawiki.js
│   │   │   │   ├── mel.js
│   │   │   │   ├── mips.js
│   │   │   │   ├── mixal.js
│   │   │   │   ├── mushcode.js
│   │   │   │   ├── mysql.js
│   │   │   │   ├── nginx.js
│   │   │   │   ├── nim.js
│   │   │   │   ├── nix.js
│   │   │   │   ├── nsis.js
│   │   │   │   ├── nunjucks.js
│   │   │   │   ├── objectivec.js
│   │   │   │   ├── ocaml.js
│   │   │   │   ├── partiql.js
│   │   │   │   ├── pascal.js
│   │   │   │   ├── perl.js
│   │   │   │   ├── pgsql.js
│   │   │   │   ├── php.js
│   │   │   │   ├── php_laravel_blade.js
│   │   │   │   ├── pig.js
│   │   │   │   ├── plain_text.js
│   │   │   │   ├── plsql.js
│   │   │   │   ├── powershell.js
│   │   │   │   ├── praat.js
│   │   │   │   ├── prisma.js
│   │   │   │   ├── prolog.js
│   │   │   │   ├── properties.js
│   │   │   │   ├── protobuf.js
│   │   │   │   ├── puppet.js
│   │   │   │   ├── python.js
│   │   │   │   ├── qml.js
│   │   │   │   ├── r.js
│   │   │   │   ├── raku.js
│   │   │   │   ├── razor.js
│   │   │   │   ├── rdoc.js
│   │   │   │   ├── red.js
│   │   │   │   ├── redshift.js
│   │   │   │   ├── rhtml.js
│   │   │   │   ├── robot.js
│   │   │   │   ├── rst.js
│   │   │   │   ├── ruby.js
│   │   │   │   ├── rust.js
│   │   │   │   ├── sac.js
│   │   │   │   ├── sass.js
│   │   │   │   ├── scad.js
│   │   │   │   ├── scala.js
│   │   │   │   ├── scheme.js
│   │   │   │   ├── scrypt.js
│   │   │   │   ├── scss.js
│   │   │   │   ├── sh.js
│   │   │   │   ├── sjs.js
│   │   │   │   ├── slim.js
│   │   │   │   ├── smarty.js
│   │   │   │   ├── smithy.js
│   │   │   │   ├── snippets.js
│   │   │   │   ├── soy_template.js
│   │   │   │   ├── space.js
│   │   │   │   ├── sparql.js
│   │   │   │   ├── sql.js
│   │   │   │   ├── sqlserver.js
│   │   │   │   ├── stylus.js
│   │   │   │   ├── svg.js
│   │   │   │   ├── swift.js
│   │   │   │   ├── tcl.js
│   │   │   │   ├── terraform.js
│   │   │   │   ├── tex.js
│   │   │   │   ├── text.js
│   │   │   │   ├── textile.js
│   │   │   │   ├── toml.js
│   │   │   │   ├── tsx.js
│   │   │   │   ├── turtle.js
│   │   │   │   ├── twig.js
│   │   │   │   ├── typescript.js
│   │   │   │   ├── vala.js
│   │   │   │   ├── vbscript.js
│   │   │   │   ├── velocity.js
│   │   │   │   ├── verilog.js
│   │   │   │   ├── vhdl.js
│   │   │   │   ├── visualforce.js
│   │   │   │   ├── wollok.js
│   │   │   │   ├── xml.js
│   │   │   │   ├── xquery.js
│   │   │   │   ├── yaml.js
│   │   │   │   └── zeek.js
│   │   │   ├── theme-ambiance.js
│   │   │   ├── theme-chaos.js
│   │   │   ├── theme-chrome.js
│   │   │   ├── theme-cloud9_day.js
│   │   │   ├── theme-cloud9_night.js
│   │   │   ├── theme-cloud9_night_low_color.js
│   │   │   ├── theme-clouds.js
│   │   │   ├── theme-clouds_midnight.js
│   │   │   ├── theme-cobalt.js
│   │   │   ├── theme-crimson_editor.js
│   │   │   ├── theme-dawn.js
│   │   │   ├── theme-dracula.js
│   │   │   ├── theme-dreamweaver.js
│   │   │   ├── theme-eclipse.js
│   │   │   ├── theme-github.js
│   │   │   ├── theme-gob.js
│   │   │   ├── theme-gruvbox.js
│   │   │   ├── theme-gruvbox_dark_hard.js
│   │   │   ├── theme-gruvbox_light_hard.js
│   │   │   ├── theme-idle_fingers.js
│   │   │   ├── theme-iplastic.js
│   │   │   ├── theme-katzenmilch.js
│   │   │   ├── theme-kr_theme.js
│   │   │   ├── theme-kuroir.js
│   │   │   ├── theme-merbivore.js
│   │   │   ├── theme-merbivore_soft.js
│   │   │   ├── theme-mono_industrial.js
│   │   │   ├── theme-monokai.js
│   │   │   ├── theme-nord_dark.js
│   │   │   ├── theme-one_dark.js
│   │   │   ├── theme-pastel_on_dark.js
│   │   │   ├── theme-solarized_dark.js
│   │   │   ├── theme-solarized_light.js
│   │   │   ├── theme-sqlserver.js
│   │   │   ├── theme-terminal.js
│   │   │   ├── theme-textmate.js
│   │   │   ├── theme-tomorrow.js
│   │   │   ├── theme-tomorrow_night.js
│   │   │   ├── theme-tomorrow_night_blue.js
│   │   │   ├── theme-tomorrow_night_bright.js
│   │   │   ├── theme-tomorrow_night_eighties.js
│   │   │   ├── theme-twilight.js
│   │   │   ├── theme-vibrant_ink.js
│   │   │   ├── theme-xcode.js
│   │   │   ├── worker-base.js
│   │   │   ├── worker-coffee.js
│   │   │   ├── worker-css.js
│   │   │   ├── worker-html.js
│   │   │   ├── worker-javascript.js
│   │   │   ├── worker-json.js
│   │   │   ├── worker-lua.js
│   │   │   ├── worker-php.js
│   │   │   ├── worker-xml.js
│   │   │   ├── worker-xquery.js
│   │   │   └── worker-yaml.js
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── bootstrap.js
│   │   │   ├── config.js
│   │   │   ├── fork_dialog.js
│   │   │   └── name_editor_dialog.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   └── ja/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── resources/
│   │   │   └── new-tile/
│   │   │       ├── index.html
│   │   │       ├── js/
│   │   │       │   ├── config.js
│   │   │       │   └── main.js
│   │   │       ├── manifest.webmanifest
│   │   │       ├── page2.html
│   │   │       ├── style/
│   │   │       │   └── main.css
│   │   │       └── sw.js
│   │   └── style/
│   │       ├── ace.css
│   │       └── index.css
│   ├── uitest/
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── bootstrap.js
│   │   │   └── config.js
│   │   ├── manifest.webmanifest
│   │   ├── resources/
│   │   │   └── new_message.ogg
│   │   ├── style/
│   │   │   ├── desktop.css
│   │   │   ├── device.css
│   │   │   └── index.css
│   │   └── sw.js
│   └── widgets/
│       ├── manifest.webmanifest
│       ├── weather/
│       │   ├── index.css
│       │   ├── index.html
│       │   ├── main.js
│       │   └── weather.js
│       └── worldclock/
│           ├── index.css
│           ├── index.html
│           └── main.js
├── attic/
│   └── chat/
│       ├── index.html
│       ├── js/
│       │   ├── config.js
│       │   └── main.js
│       ├── locales/
│       │   ├── en-US/
│       │   │   └── main.ftl
│       │   ├── ja/
│       │   │   └── main.ftl
│       │   └── zh-CN/
│       │       └── main.ftl
│       ├── manifest.webmanifest
│       ├── style/
│       │   └── main.css
│       └── sw.js
├── build-debs.sh
├── builder/
│   ├── .cargo/
│   │   └── config.toml
│   ├── .gitignore
│   ├── Cargo.toml
│   ├── install.sh
│   ├── prebuilts.json
│   ├── src/
│   │   ├── build_config.rs
│   │   ├── commands/
│   │   │   ├── common.rs
│   │   │   ├── desktop.rs
│   │   │   ├── gonk.rs
│   │   │   ├── linux.rs
│   │   │   └── mod.rs
│   │   ├── common.rs
│   │   ├── daemon_config.rs
│   │   ├── debian.rs
│   │   ├── logger.rs
│   │   ├── main.rs
│   │   ├── newapp.rs
│   │   ├── prebuilts.rs
│   │   ├── tasks.rs
│   │   ├── templates/
│   │   │   ├── config-desktop.toml
│   │   │   ├── debian/
│   │   │   │   ├── b2ghald.service
│   │   │   │   ├── capyloon-desktop.desktop
│   │   │   │   ├── capyloon-mobile.desktop
│   │   │   │   ├── capyloon-session.desktop
│   │   │   │   ├── capyloon.service
│   │   │   │   ├── config.toml
│   │   │   │   ├── control
│   │   │   │   ├── env.d/
│   │   │   │   │   ├── pinephone.sh
│   │   │   │   │   └── rpi.sh
│   │   │   │   ├── ipfsd-desktop.toml
│   │   │   │   ├── ipfsd-mobile.toml
│   │   │   │   ├── postinst
│   │   │   │   ├── preinst
│   │   │   │   ├── prerm
│   │   │   │   └── start.sh
│   │   │   ├── newapp/
│   │   │   │   ├── index.html.tmpl
│   │   │   │   ├── js/
│   │   │   │   │   ├── config.js
│   │   │   │   │   └── main.js.tmpl
│   │   │   │   ├── locales/
│   │   │   │   │   ├── en-US/
│   │   │   │   │   │   └── main.ftl
│   │   │   │   │   └── ja/
│   │   │   │   │       └── main.ftl
│   │   │   │   ├── manifest.webmanifest.tmpl
│   │   │   │   └── style/
│   │   │   │       ├── desktop.css
│   │   │   │       ├── device.css
│   │   │   │       └── main.css
│   │   │   └── user_desktop.js
│   │   └── timer.rs
│   ├── third-party/
│   │   ├── addr2line/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── bench.plot.r
│   │   │   ├── benchmark.sh
│   │   │   ├── coverage.sh
│   │   │   ├── examples/
│   │   │   │   └── addr2line.rs
│   │   │   ├── rustfmt.toml
│   │   │   ├── src/
│   │   │   │   ├── builtin_split_dwarf_loader.rs
│   │   │   │   ├── function.rs
│   │   │   │   ├── lazy.rs
│   │   │   │   └── lib.rs
│   │   │   └── tests/
│   │   │       ├── correctness.rs
│   │   │       ├── output_equivalence.rs
│   │   │       └── parse.rs
│   │   ├── adler/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-0BSD
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── RELEASE_PROCESS.md
│   │   │   ├── benches/
│   │   │   │   └── bench.rs
│   │   │   └── src/
│   │   │       ├── algo.rs
│   │   │       └── lib.rs
│   │   ├── aho-corasick/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── COPYING
│   │   │   ├── Cargo.toml
│   │   │   ├── DESIGN.md
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── UNLICENSE
│   │   │   ├── rustfmt.toml
│   │   │   └── src/
│   │   │       ├── ahocorasick.rs
│   │   │       ├── automaton.rs
│   │   │       ├── dfa.rs
│   │   │       ├── lib.rs
│   │   │       ├── macros.rs
│   │   │       ├── nfa/
│   │   │       │   ├── contiguous.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── noncontiguous.rs
│   │   │       ├── packed/
│   │   │       │   ├── api.rs
│   │   │       │   ├── ext.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── pattern.rs
│   │   │       │   ├── rabinkarp.rs
│   │   │       │   ├── teddy/
│   │   │       │   │   ├── README.md
│   │   │       │   │   ├── builder.rs
│   │   │       │   │   ├── generic.rs
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── tests.rs
│   │   │       │   └── vector.rs
│   │   │       ├── tests.rs
│   │   │       ├── transducer.rs
│   │   │       └── util/
│   │   │           ├── alphabet.rs
│   │   │           ├── buffer.rs
│   │   │           ├── byte_frequencies.rs
│   │   │           ├── debug.rs
│   │   │           ├── error.rs
│   │   │           ├── int.rs
│   │   │           ├── mod.rs
│   │   │           ├── prefilter.rs
│   │   │           ├── primitives.rs
│   │   │           ├── remapper.rs
│   │   │           ├── search.rs
│   │   │           └── special.rs
│   │   ├── alloc-no-stdlib/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── allocated_memory/
│   │   │   │   │   ├── index_macro.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── allocated_stack_memory.rs
│   │   │   │   ├── allocator.rs
│   │   │   │   ├── bin/
│   │   │   │   │   ├── example.rs
│   │   │   │   │   ├── heap_alloc.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── init.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── stack_allocator.rs
│   │   │   │   └── tests.rs
│   │   │   └── tests/
│   │   │       └── lib.rs
│   │   ├── alloc-stdlib/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── bin/
│   │   │   │   │   ├── example.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── heap_alloc.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── std_alloc.rs
│   │   │   │   └── test.rs
│   │   │   └── tests/
│   │   │       └── lib.rs
│   │   ├── anstream/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   ├── stream.rs
│   │   │   │   ├── strip.rs
│   │   │   │   └── wincon.rs
│   │   │   ├── examples/
│   │   │   │   ├── dump-stream.rs
│   │   │   │   └── query-stream.rs
│   │   │   └── src/
│   │   │       ├── adapter/
│   │   │       │   ├── mod.rs
│   │   │       │   ├── strip.rs
│   │   │       │   └── wincon.rs
│   │   │       ├── auto.rs
│   │   │       ├── buffer.rs
│   │   │       ├── fmt.rs
│   │   │       ├── lib.rs
│   │   │       ├── macros.rs
│   │   │       ├── stream.rs
│   │   │       ├── strip.rs
│   │   │       └── wincon.rs
│   │   ├── anstyle/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   └── dump-style.rs
│   │   │   └── src/
│   │   │       ├── color.rs
│   │   │       ├── effect.rs
│   │   │       ├── lib.rs
│   │   │       ├── macros.rs
│   │   │       ├── reset.rs
│   │   │       └── style.rs
│   │   ├── anstyle-parse/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── parse.rs
│   │   │   ├── examples/
│   │   │   │   └── parselog.rs
│   │   │   └── src/
│   │   │       ├── lib.rs
│   │   │       ├── params.rs
│   │   │       └── state/
│   │   │           ├── codegen.rs
│   │   │           ├── definitions.rs
│   │   │           ├── mod.rs
│   │   │           └── table.rs
│   │   ├── anstyle-query/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   └── query.rs
│   │   │   └── src/
│   │   │       ├── lib.rs
│   │   │       └── windows.rs
│   │   ├── anstyle-wincon/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   ├── dump-wincon.rs
│   │   │   │   └── set-wincon.rs
│   │   │   └── src/
│   │   │       ├── ansi.rs
│   │   │       ├── lib.rs
│   │   │       ├── stream.rs
│   │   │       └── windows.rs
│   │   ├── async-compression/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── deny.toml
│   │   │   ├── examples/
│   │   │   │   ├── zlib_tokio_write.rs
│   │   │   │   └── zstd_gzip.rs
│   │   │   ├── src/
│   │   │   │   ├── brotli.rs
│   │   │   │   ├── codec/
│   │   │   │   │   ├── brotli/
│   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── bzip2/
│   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── deflate/
│   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── deflate64/
│   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── flate/
│   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── gzip/
│   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   ├── header.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── lzma/
│   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── xz/
│   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── xz2/
│   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── zlib/
│   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   └── zstd/
│   │   │   │   │       ├── decoder.rs
│   │   │   │   │       ├── encoder.rs
│   │   │   │   │       └── mod.rs
│   │   │   │   ├── futures/
│   │   │   │   │   ├── bufread/
│   │   │   │   │   │   ├── generic/
│   │   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   ├── macros/
│   │   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── write/
│   │   │   │   │       ├── buf_write.rs
│   │   │   │   │       ├── buf_writer.rs
│   │   │   │   │       ├── generic/
│   │   │   │   │       │   ├── decoder.rs
│   │   │   │   │       │   ├── encoder.rs
│   │   │   │   │       │   └── mod.rs
│   │   │   │   │       ├── macros/
│   │   │   │   │       │   ├── decoder.rs
│   │   │   │   │       │   ├── encoder.rs
│   │   │   │   │       │   └── mod.rs
│   │   │   │   │       └── mod.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── macros.rs
│   │   │   │   ├── tokio/
│   │   │   │   │   ├── bufread/
│   │   │   │   │   │   ├── generic/
│   │   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   ├── macros/
│   │   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── write/
│   │   │   │   │       ├── buf_write.rs
│   │   │   │   │       ├── buf_writer.rs
│   │   │   │   │       ├── generic/
│   │   │   │   │       │   ├── decoder.rs
│   │   │   │   │       │   ├── encoder.rs
│   │   │   │   │       │   └── mod.rs
│   │   │   │   │       ├── macros/
│   │   │   │   │       │   ├── decoder.rs
│   │   │   │   │       │   ├── encoder.rs
│   │   │   │   │       │   └── mod.rs
│   │   │   │   │       └── mod.rs
│   │   │   │   ├── unshared.rs
│   │   │   │   ├── util.rs
│   │   │   │   └── zstd.rs
│   │   │   └── tests/
│   │   │       ├── artifacts/
│   │   │       │   ├── dictionary-rust
│   │   │       │   ├── dictionary-rust-other
│   │   │       │   ├── lib.rs
│   │   │       │   └── lib.rs.zst
│   │   │       ├── brotli.rs
│   │   │       ├── bzip2.rs
│   │   │       ├── deflate.rs
│   │   │       ├── gzip.rs
│   │   │       ├── lzma.rs
│   │   │       ├── proptest.proptest-regressions
│   │   │       ├── proptest.rs
│   │   │       ├── utils/
│   │   │       │   ├── algos.rs
│   │   │       │   ├── impls.rs
│   │   │       │   ├── input_stream.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── test_cases.rs
│   │   │       │   ├── tokio_ext/
│   │   │       │   │   ├── copy_buf.rs
│   │   │       │   │   ├── interleave_pending.rs
│   │   │       │   │   ├── limited.rs
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── track_closed.rs
│   │   │       │   └── track_eof.rs
│   │   │       ├── xz.rs
│   │   │       ├── zlib.rs
│   │   │       ├── zstd-dict.rs
│   │   │       └── zstd.rs
│   │   ├── autocfg/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   ├── integers.rs
│   │   │   │   ├── nightly.rs
│   │   │   │   ├── paths.rs
│   │   │   │   ├── traits.rs
│   │   │   │   └── versions.rs
│   │   │   ├── src/
│   │   │   │   ├── error.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── rustc.rs
│   │   │   │   ├── tests.rs
│   │   │   │   └── version.rs
│   │   │   └── tests/
│   │   │       ├── no_std.rs
│   │   │       ├── rustflags.rs
│   │   │       ├── wrap_ignored
│   │   │       └── wrappers.rs
│   │   ├── backtrace/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── benchmarks.rs
│   │   │   ├── build.rs
│   │   │   ├── examples/
│   │   │   │   ├── backtrace.rs
│   │   │   │   └── raw.rs
│   │   │   ├── src/
│   │   │   │   ├── backtrace/
│   │   │   │   │   ├── dbghelp32.rs
│   │   │   │   │   ├── dbghelp64.rs
│   │   │   │   │   ├── libunwind.rs
│   │   │   │   │   ├── miri.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── noop.rs
│   │   │   │   ├── capture.rs
│   │   │   │   ├── dbghelp.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── print/
│   │   │   │   │   └── fuchsia.rs
│   │   │   │   ├── print.rs
│   │   │   │   ├── symbolize/
│   │   │   │   │   ├── dbghelp.rs
│   │   │   │   │   ├── gimli/
│   │   │   │   │   │   ├── coff.rs
│   │   │   │   │   │   ├── elf.rs
│   │   │   │   │   │   ├── libs_aix.rs
│   │   │   │   │   │   ├── libs_dl_iterate_phdr.rs
│   │   │   │   │   │   ├── libs_haiku.rs
│   │   │   │   │   │   ├── libs_illumos.rs
│   │   │   │   │   │   ├── libs_libnx.rs
│   │   │   │   │   │   ├── libs_macos.rs
│   │   │   │   │   │   ├── libs_windows.rs
│   │   │   │   │   │   ├── macho.rs
│   │   │   │   │   │   ├── mmap_fake.rs
│   │   │   │   │   │   ├── mmap_unix.rs
│   │   │   │   │   │   ├── mmap_windows.rs
│   │   │   │   │   │   ├── parse_running_mmaps_unix.rs
│   │   │   │   │   │   ├── stash.rs
│   │   │   │   │   │   └── xcoff.rs
│   │   │   │   │   ├── gimli.rs
│   │   │   │   │   ├── miri.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── noop.rs
│   │   │   │   ├── types.rs
│   │   │   │   └── windows.rs
│   │   │   └── tests/
│   │   │       ├── accuracy/
│   │   │       │   ├── auxiliary.rs
│   │   │       │   └── main.rs
│   │   │       ├── common/
│   │   │       │   └── mod.rs
│   │   │       ├── concurrent-panics.rs
│   │   │       ├── current-exe-mismatch.rs
│   │   │       ├── long_fn_name.rs
│   │   │       ├── sgx-image-base.rs
│   │   │       ├── skip_inner_frames.rs
│   │   │       └── smoke.rs
│   │   ├── base64/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── RELEASE-NOTES.md
│   │   │   ├── benches/
│   │   │   │   └── benchmarks.rs
│   │   │   ├── clippy.toml
│   │   │   ├── examples/
│   │   │   │   └── base64.rs
│   │   │   ├── src/
│   │   │   │   ├── alphabet.rs
│   │   │   │   ├── chunked_encoder.rs
│   │   │   │   ├── decode.rs
│   │   │   │   ├── display.rs
│   │   │   │   ├── encode.rs
│   │   │   │   ├── engine/
│   │   │   │   │   ├── general_purpose/
│   │   │   │   │   │   ├── decode.rs
│   │   │   │   │   │   ├── decode_suffix.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── naive.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── prelude.rs
│   │   │   │   ├── read/
│   │   │   │   │   ├── decoder.rs
│   │   │   │   │   ├── decoder_tests.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── tests.rs
│   │   │   │   └── write/
│   │   │   │       ├── encoder.rs
│   │   │   │       ├── encoder_string_writer.rs
│   │   │   │       ├── encoder_tests.rs
│   │   │   │       └── mod.rs
│   │   │   └── tests/
│   │   │       ├── encode.rs
│   │   │       └── tests.rs
│   │   ├── bitflags/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── CODE_OF_CONDUCT.md
│   │   │   ├── CONTRIBUTING.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── SECURITY.md
│   │   │   ├── benches/
│   │   │   │   └── parse.rs
│   │   │   ├── examples/
│   │   │   │   ├── custom_bits_type.rs
│   │   │   │   ├── custom_derive.rs
│   │   │   │   ├── fmt.rs
│   │   │   │   ├── macro_free.rs
│   │   │   │   └── serde.rs
│   │   │   ├── spec.md
│   │   │   └── src/
│   │   │       ├── example_generated.rs
│   │   │       ├── external/
│   │   │       │   ├── arbitrary.rs
│   │   │       │   ├── bytemuck.rs
│   │   │       │   └── serde.rs
│   │   │       ├── external.rs
│   │   │       ├── internal.rs
│   │   │       ├── iter.rs
│   │   │       ├── lib.rs
│   │   │       ├── parser.rs
│   │   │       ├── public.rs
│   │   │       ├── tests/
│   │   │       │   ├── all.rs
│   │   │       │   ├── bits.rs
│   │   │       │   ├── complement.rs
│   │   │       │   ├── contains.rs
│   │   │       │   ├── difference.rs
│   │   │       │   ├── empty.rs
│   │   │       │   ├── eq.rs
│   │   │       │   ├── extend.rs
│   │   │       │   ├── flags.rs
│   │   │       │   ├── fmt.rs
│   │   │       │   ├── from_bits.rs
│   │   │       │   ├── from_bits_retain.rs
│   │   │       │   ├── from_bits_truncate.rs
│   │   │       │   ├── from_name.rs
│   │   │       │   ├── insert.rs
│   │   │       │   ├── intersection.rs
│   │   │       │   ├── intersects.rs
│   │   │       │   ├── is_all.rs
│   │   │       │   ├── is_empty.rs
│   │   │       │   ├── iter.rs
│   │   │       │   ├── parser.rs
│   │   │       │   ├── remove.rs
│   │   │       │   ├── symmetric_difference.rs
│   │   │       │   └── union.rs
│   │   │       ├── tests.rs
│   │   │       └── traits.rs
│   │   ├── blake2/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── mod.rs
│   │   │   ├── src/
│   │   │   │   ├── as_bytes.rs
│   │   │   │   ├── consts.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── macros.rs
│   │   │   │   ├── simd/
│   │   │   │   │   ├── simd_opt/
│   │   │   │   │   │   ├── u32x4.rs
│   │   │   │   │   │   └── u64x4.rs
│   │   │   │   │   ├── simd_opt.rs
│   │   │   │   │   ├── simdint.rs
│   │   │   │   │   ├── simdop.rs
│   │   │   │   │   └── simdty.rs
│   │   │   │   └── simd.rs
│   │   │   └── tests/
│   │   │       ├── data/
│   │   │       │   ├── blake2b/
│   │   │       │   │   ├── fixed.blb
│   │   │       │   │   ├── mac.blb
│   │   │       │   │   └── variable.blb
│   │   │       │   └── blake2s/
│   │   │       │       ├── mac.blb
│   │   │       │       └── variable.blb
│   │   │       ├── mac.rs
│   │   │       ├── mod.rs
│   │   │       └── persona.rs
│   │   ├── block-buffer/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── lib.rs
│   │   │   │   └── sealed.rs
│   │   │   └── tests/
│   │   │       └── mod.rs
│   │   ├── brotli/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── appveyor.yml
│   │   │   ├── ci/
│   │   │   │   ├── before_deploy.ps1
│   │   │   │   ├── before_deploy.sh
│   │   │   │   ├── install.sh
│   │   │   │   └── script.sh
│   │   │   ├── examples/
│   │   │   │   ├── compress.rs
│   │   │   │   └── decompress.rs
│   │   │   ├── justfile
│   │   │   ├── research/
│   │   │   │   ├── concatenate_some.py
│   │   │   │   ├── frombase2.py
│   │   │   │   └── tobase2.py
│   │   │   ├── src/
│   │   │   │   ├── bin/
│   │   │   │   │   ├── brotli.rs
│   │   │   │   │   ├── catbrotli.rs
│   │   │   │   │   ├── integration_tests.rs
│   │   │   │   │   ├── test_broccoli.rs
│   │   │   │   │   ├── test_custom_dict.rs
│   │   │   │   │   ├── test_threading.rs
│   │   │   │   │   ├── tests.rs
│   │   │   │   │   ├── util.rs
│   │   │   │   │   └── validate.rs
│   │   │   │   ├── concat/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── enc/
│   │   │   │   │   ├── backward_references/
│   │   │   │   │   │   ├── benchmark.rs
│   │   │   │   │   │   ├── hash_to_binary_tree.rs
│   │   │   │   │   │   ├── hq.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── test.rs
│   │   │   │   │   ├── bit_cost.rs
│   │   │   │   │   ├── block_split.rs
│   │   │   │   │   ├── block_splitter.rs
│   │   │   │   │   ├── brotli_bit_stream.rs
│   │   │   │   │   ├── cluster.rs
│   │   │   │   │   ├── combined_alloc.rs
│   │   │   │   │   ├── command.rs
│   │   │   │   │   ├── compat.rs
│   │   │   │   │   ├── compress_fragment.rs
│   │   │   │   │   ├── compress_fragment_two_pass.rs
│   │   │   │   │   ├── constants.rs
│   │   │   │   │   ├── context_map_entropy.rs
│   │   │   │   │   ├── dictionary_hash.rs
│   │   │   │   │   ├── encode.rs
│   │   │   │   │   ├── entropy_encode.rs
│   │   │   │   │   ├── fast_log.rs
│   │   │   │   │   ├── find_stride.rs
│   │   │   │   │   ├── fixed_queue.rs
│   │   │   │   │   ├── histogram.rs
│   │   │   │   │   ├── input_pair.rs
│   │   │   │   │   ├── interface.rs
│   │   │   │   │   ├── ir_interpret.rs
│   │   │   │   │   ├── literal_cost.rs
│   │   │   │   │   ├── metablock.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── multithreading.rs
│   │   │   │   │   ├── parameters.rs
│   │   │   │   │   ├── pdf.rs
│   │   │   │   │   ├── prior_eval.rs
│   │   │   │   │   ├── reader.rs
│   │   │   │   │   ├── singlethreading.rs
│   │   │   │   │   ├── static_dict.rs
│   │   │   │   │   ├── static_dict_lut.rs
│   │   │   │   │   ├── stride_eval.rs
│   │   │   │   │   ├── test.rs
│   │   │   │   │   ├── threading.rs
│   │   │   │   │   ├── utf8_util.rs
│   │   │   │   │   ├── util.rs
│   │   │   │   │   ├── vectorization.rs
│   │   │   │   │   ├── weights.rs
│   │   │   │   │   ├── worker_pool.rs
│   │   │   │   │   └── writer.rs
│   │   │   │   ├── ffi/
│   │   │   │   │   ├── alloc_util.rs
│   │   │   │   │   ├── broccoli.rs
│   │   │   │   │   ├── compressor.rs
│   │   │   │   │   ├── decompressor.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── multicompress/
│   │   │   │   │       ├── mod.rs
│   │   │   │   │       └── test.rs
│   │   │   │   └── lib.rs
│   │   │   └── testdata/
│   │   │       ├── 10x10y
│   │   │       ├── 64x
│   │   │       ├── 64x.compressed
│   │   │       ├── aaabaaaa
│   │   │       ├── alice29.txt
│   │   │       ├── alice29.txt.compressed
│   │   │       ├── asyoulik.txt
│   │   │       ├── asyoulik.txt.compressed
│   │   │       ├── backward65536
│   │   │       ├── backward65536.compressed
│   │   │       ├── compressed_file
│   │   │       ├── compressed_file.compressed
│   │   │       ├── compressed_repeated
│   │   │       ├── compressed_repeated.compressed
│   │   │       ├── empty
│   │   │       ├── empty.compressed
│   │   │       ├── empty.compressed.00
│   │   │       ├── empty.compressed.01
│   │   │       ├── empty.compressed.02
│   │   │       ├── empty.compressed.03
│   │   │       ├── empty.compressed.04
│   │   │       ├── empty.compressed.05
│   │   │       ├── empty.compressed.06
│   │   │       ├── empty.compressed.07
│   │   │       ├── empty.compressed.08
│   │   │       ├── empty.compressed.09
│   │   │       ├── empty.compressed.10
│   │   │       ├── empty.compressed.11
│   │   │       ├── empty.compressed.12
│   │   │       ├── empty.compressed.13
│   │   │       ├── empty.compressed.14
│   │   │       ├── empty.compressed.15
│   │   │       ├── empty.compressed.16
│   │   │       ├── empty.compressed.17
│   │   │       ├── empty.compressed.18
│   │   │       ├── ends_with_truncated_dictionary
│   │   │       ├── monkey
│   │   │       ├── quickfox
│   │   │       ├── quickfox_repeated
│   │   │       ├── random_then_unicode
│   │   │       ├── ukkonooa
│   │   │       ├── x
│   │   │       ├── x.compressed.00
│   │   │       ├── x.compressed.01
│   │   │       ├── x.compressed.02
│   │   │       ├── x.compressed.03
│   │   │       └── xyzzy
│   │   ├── brotli-decompressor/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   └── decompress.rs
│   │   │   ├── rustfmt.toml
│   │   │   └── src/
│   │   │       ├── bin/
│   │   │       │   ├── brotli-decompressor.rs
│   │   │       │   ├── error_handling_tests.rs
│   │   │       │   ├── integration_tests.rs
│   │   │       │   ├── ipsum.brotli
│   │   │       │   ├── ipsum.raw
│   │   │       │   ├── ipsum_gen.py
│   │   │       │   └── tests.rs
│   │   │       ├── bit_reader/
│   │   │       │   └── mod.rs
│   │   │       ├── brotli_alloc.rs
│   │   │       ├── context.rs
│   │   │       ├── decode.rs
│   │   │       ├── dictionary/
│   │   │       │   └── mod.rs
│   │   │       ├── ffi/
│   │   │       │   ├── alloc_util.rs
│   │   │       │   ├── interface.rs
│   │   │       │   └── mod.rs
│   │   │       ├── huffman/
│   │   │       │   ├── mod.rs
│   │   │       │   └── tests.rs
│   │   │       ├── io_wrappers.rs
│   │   │       ├── lib.rs
│   │   │       ├── memory.rs
│   │   │       ├── prefix.rs
│   │   │       ├── reader.rs
│   │   │       ├── state.rs
│   │   │       ├── test.rs
│   │   │       ├── transform.rs
│   │   │       └── writer.rs
│   │   ├── bumpalo/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── alloc.rs
│   │   │       ├── boxed.rs
│   │   │       ├── collections/
│   │   │       │   ├── collect_in.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── raw_vec.rs
│   │   │       │   ├── str/
│   │   │       │   │   ├── lossy.rs
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── string.rs
│   │   │       │   └── vec.rs
│   │   │       └── lib.rs
│   │   ├── byteorder/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── COPYING
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── UNLICENSE
│   │   │   ├── benches/
│   │   │   │   └── bench.rs
│   │   │   ├── rustfmt.toml
│   │   │   └── src/
│   │   │       ├── io.rs
│   │   │       └── lib.rs
│   │   ├── bytes/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── SECURITY.md
│   │   │   ├── benches/
│   │   │   │   ├── buf.rs
│   │   │   │   ├── bytes.rs
│   │   │   │   └── bytes_mut.rs
│   │   │   ├── ci/
│   │   │   │   ├── miri.sh
│   │   │   │   ├── test-stable.sh
│   │   │   │   └── tsan.sh
│   │   │   ├── clippy.toml
│   │   │   ├── src/
│   │   │   │   ├── buf/
│   │   │   │   │   ├── buf_impl.rs
│   │   │   │   │   ├── buf_mut.rs
│   │   │   │   │   ├── chain.rs
│   │   │   │   │   ├── iter.rs
│   │   │   │   │   ├── limit.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── reader.rs
│   │   │   │   │   ├── take.rs
│   │   │   │   │   ├── uninit_slice.rs
│   │   │   │   │   ├── vec_deque.rs
│   │   │   │   │   └── writer.rs
│   │   │   │   ├── bytes.rs
│   │   │   │   ├── bytes_mut.rs
│   │   │   │   ├── fmt/
│   │   │   │   │   ├── debug.rs
│   │   │   │   │   ├── hex.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── loom.rs
│   │   │   │   └── serde.rs
│   │   │   └── tests/
│   │   │       ├── test_buf.rs
│   │   │       ├── test_buf_mut.rs
│   │   │       ├── test_bytes.rs
│   │   │       ├── test_bytes_odd_alloc.rs
│   │   │       ├── test_bytes_vec_alloc.rs
│   │   │       ├── test_chain.rs
│   │   │       ├── test_debug.rs
│   │   │       ├── test_iter.rs
│   │   │       ├── test_reader.rs
│   │   │       ├── test_serde.rs
│   │   │       └── test_take.rs
│   │   ├── cc/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── command_helpers.rs
│   │   │       ├── detect_compiler_family.c
│   │   │       ├── lib.rs
│   │   │       ├── parallel/
│   │   │       │   ├── async_executor.rs
│   │   │       │   ├── job_token.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── stderr.rs
│   │   │       ├── target_info.rs
│   │   │       ├── tempfile.rs
│   │   │       ├── tool.rs
│   │   │       └── windows/
│   │   │           ├── com.rs
│   │   │           ├── find_tools.rs
│   │   │           ├── mod.rs
│   │   │           ├── registry.rs
│   │   │           ├── setup_config.rs
│   │   │           ├── vs_instances.rs
│   │   │           ├── winapi.rs
│   │   │           └── windows_sys.rs
│   │   ├── cfg-if/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   └── lib.rs
│   │   │   └── tests/
│   │   │       └── xcrate.rs
│   │   ├── clap/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   ├── README.md
│   │   │   │   ├── cargo-example-derive.md
│   │   │   │   ├── cargo-example-derive.rs
│   │   │   │   ├── cargo-example.md
│   │   │   │   ├── cargo-example.rs
│   │   │   │   ├── demo.md
│   │   │   │   ├── demo.rs
│   │   │   │   ├── derive_ref/
│   │   │   │   │   ├── augment_args.rs
│   │   │   │   │   ├── augment_subcommands.rs
│   │   │   │   │   ├── flatten_hand_args.rs
│   │   │   │   │   ├── hand_subcommand.rs
│   │   │   │   │   └── interop_tests.md
│   │   │   │   ├── escaped-positional-derive.md
│   │   │   │   ├── escaped-positional-derive.rs
│   │   │   │   ├── escaped-positional.md
│   │   │   │   ├── escaped-positional.rs
│   │   │   │   ├── find.md
│   │   │   │   ├── find.rs
│   │   │   │   ├── git-derive.md
│   │   │   │   ├── git-derive.rs
│   │   │   │   ├── git.md
│   │   │   │   ├── git.rs
│   │   │   │   ├── multicall-busybox.md
│   │   │   │   ├── multicall-busybox.rs
│   │   │   │   ├── multicall-hostname.md
│   │   │   │   ├── multicall-hostname.rs
│   │   │   │   ├── pacman.md
│   │   │   │   ├── pacman.rs
│   │   │   │   ├── repl-derive.rs
│   │   │   │   ├── repl.rs
│   │   │   │   ├── tutorial_builder/
│   │   │   │   │   ├── 01_quick.md
│   │   │   │   │   ├── 01_quick.rs
│   │   │   │   │   ├── 02_app_settings.md
│   │   │   │   │   ├── 02_app_settings.rs
│   │   │   │   │   ├── 02_apps.md
│   │   │   │   │   ├── 02_apps.rs
│   │   │   │   │   ├── 02_crate.md
│   │   │   │   │   ├── 02_crate.rs
│   │   │   │   │   ├── 03_01_flag_bool.md
│   │   │   │   │   ├── 03_01_flag_bool.rs
│   │   │   │   │   ├── 03_01_flag_count.md
│   │   │   │   │   ├── 03_01_flag_count.rs
│   │   │   │   │   ├── 03_02_option.md
│   │   │   │   │   ├── 03_02_option.rs
│   │   │   │   │   ├── 03_02_option_mult.md
│   │   │   │   │   ├── 03_02_option_mult.rs
│   │   │   │   │   ├── 03_03_positional.md
│   │   │   │   │   ├── 03_03_positional.rs
│   │   │   │   │   ├── 03_03_positional_mult.md
│   │   │   │   │   ├── 03_03_positional_mult.rs
│   │   │   │   │   ├── 03_04_subcommands.md
│   │   │   │   │   ├── 03_04_subcommands.rs
│   │   │   │   │   ├── 03_05_default_values.md
│   │   │   │   │   ├── 03_05_default_values.rs
│   │   │   │   │   ├── 04_01_enum.md
│   │   │   │   │   ├── 04_01_enum.rs
│   │   │   │   │   ├── 04_01_possible.md
│   │   │   │   │   ├── 04_01_possible.rs
│   │   │   │   │   ├── 04_02_parse.md
│   │   │   │   │   ├── 04_02_parse.rs
│   │   │   │   │   ├── 04_02_validate.md
│   │   │   │   │   ├── 04_02_validate.rs
│   │   │   │   │   ├── 04_03_relations.md
│   │   │   │   │   ├── 04_03_relations.rs
│   │   │   │   │   ├── 04_04_custom.md
│   │   │   │   │   ├── 04_04_custom.rs
│   │   │   │   │   └── 05_01_assert.rs
│   │   │   │   ├── tutorial_derive/
│   │   │   │   │   ├── 01_quick.md
│   │   │   │   │   ├── 01_quick.rs
│   │   │   │   │   ├── 02_app_settings.md
│   │   │   │   │   ├── 02_app_settings.rs
│   │   │   │   │   ├── 02_apps.md
│   │   │   │   │   ├── 02_apps.rs
│   │   │   │   │   ├── 02_crate.md
│   │   │   │   │   ├── 02_crate.rs
│   │   │   │   │   ├── 03_01_flag_bool.md
│   │   │   │   │   ├── 03_01_flag_bool.rs
│   │   │   │   │   ├── 03_01_flag_count.md
│   │   │   │   │   ├── 03_01_flag_count.rs
│   │   │   │   │   ├── 03_02_option.md
│   │   │   │   │   ├── 03_02_option.rs
│   │   │   │   │   ├── 03_02_option_mult.md
│   │   │   │   │   ├── 03_02_option_mult.rs
│   │   │   │   │   ├── 03_03_positional.md
│   │   │   │   │   ├── 03_03_positional.rs
│   │   │   │   │   ├── 03_03_positional_mult.md
│   │   │   │   │   ├── 03_03_positional_mult.rs
│   │   │   │   │   ├── 03_04_subcommands.md
│   │   │   │   │   ├── 03_04_subcommands.rs
│   │   │   │   │   ├── 03_04_subcommands_alt.rs
│   │   │   │   │   ├── 03_05_default_values.md
│   │   │   │   │   ├── 03_05_default_values.rs
│   │   │   │   │   ├── 04_01_enum.md
│   │   │   │   │   ├── 04_01_enum.rs
│   │   │   │   │   ├── 04_02_parse.md
│   │   │   │   │   ├── 04_02_parse.rs
│   │   │   │   │   ├── 04_02_validate.md
│   │   │   │   │   ├── 04_02_validate.rs
│   │   │   │   │   ├── 04_03_relations.md
│   │   │   │   │   ├── 04_03_relations.rs
│   │   │   │   │   ├── 04_04_custom.md
│   │   │   │   │   ├── 04_04_custom.rs
│   │   │   │   │   └── 05_01_assert.rs
│   │   │   │   ├── typed-derive.md
│   │   │   │   └── typed-derive.rs
│   │   │   └── src/
│   │   │       ├── _cookbook/
│   │   │       │   ├── cargo_example.rs
│   │   │       │   ├── cargo_example_derive.rs
│   │   │       │   ├── escaped_positional.rs
│   │   │       │   ├── escaped_positional_derive.rs
│   │   │       │   ├── find.rs
│   │   │       │   ├── git.rs
│   │   │       │   ├── git_derive.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── multicall_busybox.rs
│   │   │       │   ├── multicall_hostname.rs
│   │   │       │   ├── pacman.rs
│   │   │       │   ├── repl.rs
│   │   │       │   ├── repl_derive.rs
│   │   │       │   └── typed_derive.rs
│   │   │       ├── _derive/
│   │   │       │   ├── _tutorial/
│   │   │       │   │   ├── chapter_0.rs
│   │   │       │   │   ├── chapter_1.rs
│   │   │       │   │   ├── chapter_2.rs
│   │   │       │   │   ├── chapter_3.rs
│   │   │       │   │   ├── chapter_4.rs
│   │   │       │   │   ├── chapter_5.rs
│   │   │       │   │   └── mod.rs
│   │   │       │   └── mod.rs
│   │   │       ├── _faq.rs
│   │   │       ├── _features.rs
│   │   │       ├── _tutorial/
│   │   │       │   ├── chapter_0.rs
│   │   │       │   ├── chapter_1.rs
│   │   │       │   ├── chapter_2.rs
│   │   │       │   ├── chapter_3.rs
│   │   │       │   ├── chapter_4.rs
│   │   │       │   ├── chapter_5.rs
│   │   │       │   └── mod.rs
│   │   │       ├── bin/
│   │   │       │   └── stdio-fixture.rs
│   │   │       └── lib.rs
│   │   ├── clap_builder/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── builder/
│   │   │       │   ├── action.rs
│   │   │       │   ├── app_settings.rs
│   │   │       │   ├── arg.rs
│   │   │       │   ├── arg_group.rs
│   │   │       │   ├── arg_predicate.rs
│   │   │       │   ├── arg_settings.rs
│   │   │       │   ├── command.rs
│   │   │       │   ├── debug_asserts.rs
│   │   │       │   ├── ext.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── os_str.rs
│   │   │       │   ├── possible_value.rs
│   │   │       │   ├── range.rs
│   │   │       │   ├── resettable.rs
│   │   │       │   ├── str.rs
│   │   │       │   ├── styled_str.rs
│   │   │       │   ├── styling.rs
│   │   │       │   ├── tests.rs
│   │   │       │   ├── value_hint.rs
│   │   │       │   └── value_parser.rs
│   │   │       ├── derive.rs
│   │   │       ├── error/
│   │   │       │   ├── context.rs
│   │   │       │   ├── format.rs
│   │   │       │   ├── kind.rs
│   │   │       │   └── mod.rs
│   │   │       ├── lib.rs
│   │   │       ├── macros.rs
│   │   │       ├── mkeymap.rs
│   │   │       ├── output/
│   │   │       │   ├── fmt.rs
│   │   │       │   ├── help.rs
│   │   │       │   ├── help_template.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── textwrap/
│   │   │       │   │   ├── core.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── word_separators.rs
│   │   │       │   │   └── wrap_algorithms.rs
│   │   │       │   └── usage.rs
│   │   │       ├── parser/
│   │   │       │   ├── arg_matcher.rs
│   │   │       │   ├── error.rs
│   │   │       │   ├── features/
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── suggestions.rs
│   │   │       │   ├── matches/
│   │   │       │   │   ├── arg_matches.rs
│   │   │       │   │   ├── matched_arg.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── value_source.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── parser.rs
│   │   │       │   └── validator.rs
│   │   │       └── util/
│   │   │           ├── any_value.rs
│   │   │           ├── color.rs
│   │   │           ├── flat_map.rs
│   │   │           ├── flat_set.rs
│   │   │           ├── graph.rs
│   │   │           ├── id.rs
│   │   │           ├── mod.rs
│   │   │           └── str_to_bool.rs
│   │   ├── clap_derive/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── attr.rs
│   │   │       ├── derives/
│   │   │       │   ├── args.rs
│   │   │       │   ├── into_app.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── parser.rs
│   │   │       │   ├── subcommand.rs
│   │   │       │   └── value_enum.rs
│   │   │       ├── dummies.rs
│   │   │       ├── item.rs
│   │   │       ├── lib.rs
│   │   │       ├── macros.rs
│   │   │       └── utils/
│   │   │           ├── doc_comments.rs
│   │   │           ├── error.rs
│   │   │           ├── mod.rs
│   │   │           ├── spanned.rs
│   │   │           └── ty.rs
│   │   ├── clap_lex/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── ext.rs
│   │   │       └── lib.rs
│   │   ├── colorchoice/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   ├── console/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── Makefile
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── ansi_parser.rs
│   │   │   ├── examples/
│   │   │   │   ├── colors.rs
│   │   │   │   ├── colors256.rs
│   │   │   │   ├── cursor_at.rs
│   │   │   │   ├── keyboard.rs
│   │   │   │   └── term.rs
│   │   │   ├── scripts/
│   │   │   │   └── wasmtime-wrapper.sh
│   │   │   ├── src/
│   │   │   │   ├── ansi.rs
│   │   │   │   ├── common_term.rs
│   │   │   │   ├── kb.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── term.rs
│   │   │   │   ├── unix_term.rs
│   │   │   │   ├── utils.rs
│   │   │   │   ├── wasm_term.rs
│   │   │   │   └── windows_term/
│   │   │   │       ├── colors.rs
│   │   │   │       └── mod.rs
│   │   │   └── tests/
│   │   │       └── data/
│   │   │           └── sample_zellij_session.log
│   │   ├── crc32fast/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── bench.rs
│   │   │   ├── build.rs
│   │   │   └── src/
│   │   │       ├── baseline.rs
│   │   │       ├── combine.rs
│   │   │       ├── lib.rs
│   │   │       ├── specialized/
│   │   │       │   ├── aarch64.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── pclmulqdq.rs
│   │   │       └── table.rs
│   │   ├── crossbeam-deque/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── deque.rs
│   │   │   │   └── lib.rs
│   │   │   └── tests/
│   │   │       ├── fifo.rs
│   │   │       ├── injector.rs
│   │   │       ├── lifo.rs
│   │   │       └── steal.rs
│   │   ├── crossbeam-epoch/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   ├── defer.rs
│   │   │   │   ├── flush.rs
│   │   │   │   └── pin.rs
│   │   │   ├── examples/
│   │   │   │   └── sanitize.rs
│   │   │   ├── src/
│   │   │   │   ├── atomic.rs
│   │   │   │   ├── collector.rs
│   │   │   │   ├── default.rs
│   │   │   │   ├── deferred.rs
│   │   │   │   ├── epoch.rs
│   │   │   │   ├── guard.rs
│   │   │   │   ├── internal.rs
│   │   │   │   ├── lib.rs
│   │   │   │   └── sync/
│   │   │   │       ├── list.rs
│   │   │   │       ├── mod.rs
│   │   │   │       ├── once_lock.rs
│   │   │   │       └── queue.rs
│   │   │   └── tests/
│   │   │       └── loom.rs
│   │   ├── crossbeam-utils/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── atomic_cell.rs
│   │   │   ├── build-common.rs
│   │   │   ├── build.rs
│   │   │   ├── no_atomic.rs
│   │   │   ├── src/
│   │   │   │   ├── atomic/
│   │   │   │   │   ├── atomic_cell.rs
│   │   │   │   │   ├── consume.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── seq_lock.rs
│   │   │   │   │   └── seq_lock_wide.rs
│   │   │   │   ├── backoff.rs
│   │   │   │   ├── cache_padded.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── sync/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── once_lock.rs
│   │   │   │   │   ├── parker.rs
│   │   │   │   │   ├── sharded_lock.rs
│   │   │   │   │   └── wait_group.rs
│   │   │   │   └── thread.rs
│   │   │   └── tests/
│   │   │       ├── atomic_cell.rs
│   │   │       ├── cache_padded.rs
│   │   │       ├── parker.rs
│   │   │       ├── sharded_lock.rs
│   │   │       ├── thread.rs
│   │   │       └── wait_group.rs
│   │   ├── crypto-common/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   ├── digest/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── core_api/
│   │   │       │   ├── ct_variable.rs
│   │   │       │   ├── rt_variable.rs
│   │   │       │   ├── wrapper.rs
│   │   │       │   └── xof_reader.rs
│   │   │       ├── core_api.rs
│   │   │       ├── dev/
│   │   │       │   ├── fixed.rs
│   │   │       │   ├── mac.rs
│   │   │       │   ├── rng.rs
│   │   │       │   ├── variable.rs
│   │   │       │   └── xof.rs
│   │   │       ├── dev.rs
│   │   │       ├── digest.rs
│   │   │       ├── lib.rs
│   │   │       └── mac.rs
│   │   ├── either/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README-crates.io.md
│   │   │   ├── README.rst
│   │   │   └── src/
│   │   │       ├── into_either.rs
│   │   │       ├── iterator.rs
│   │   │       ├── lib.rs
│   │   │       ├── serde_untagged.rs
│   │   │       └── serde_untagged_optional.rs
│   │   ├── encode_unicode/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── AUTHORS.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── RELEASES.md
│   │   │   ├── benches/
│   │   │   │   └── multiiterators.rs
│   │   │   ├── src/
│   │   │   │   ├── decoding_iterators.rs
│   │   │   │   ├── errors.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── traits.rs
│   │   │   │   ├── utf16_char.rs
│   │   │   │   ├── utf16_iterators.rs
│   │   │   │   ├── utf8_char.rs
│   │   │   │   └── utf8_iterators.rs
│   │   │   └── tests/
│   │   │       ├── errs.rs
│   │   │       ├── exhaustive.rs
│   │   │       ├── iterators.rs
│   │   │       └── oks.rs
│   │   ├── env_logger/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   ├── custom_default_format.rs
│   │   │   │   ├── custom_format.rs
│   │   │   │   ├── custom_logger.rs
│   │   │   │   ├── default.rs
│   │   │   │   ├── direct_logger.rs
│   │   │   │   ├── filters_from_code.rs
│   │   │   │   ├── in_tests.rs
│   │   │   │   └── syslog_friendly_format.rs
│   │   │   ├── src/
│   │   │   │   ├── filter/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── regex.rs
│   │   │   │   │   └── string.rs
│   │   │   │   ├── fmt/
│   │   │   │   │   ├── humantime.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── style.rs
│   │   │   │   │   └── writer/
│   │   │   │   │       ├── atty.rs
│   │   │   │   │       ├── buffer/
│   │   │   │   │       │   ├── mod.rs
│   │   │   │   │       │   ├── plain.rs
│   │   │   │   │       │   └── termcolor.rs
│   │   │   │   │       └── mod.rs
│   │   │   │   ├── lib.rs
│   │   │   │   └── logger.rs
│   │   │   └── tests/
│   │   │       ├── init-twice-retains-filter.rs
│   │   │       ├── log-in-log.rs
│   │   │       ├── log_tls_dtors.rs
│   │   │       └── regexp_filter.rs
│   │   ├── equivalent/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   ├── errno/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── clippy.toml
│   │   │   └── src/
│   │   │       ├── hermit.rs
│   │   │       ├── lib.rs
│   │   │       ├── unix.rs
│   │   │       ├── wasi.rs
│   │   │       └── windows.rs
│   │   ├── fastrand/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── bench.rs
│   │   │   ├── src/
│   │   │   │   ├── global_rng.rs
│   │   │   │   └── lib.rs
│   │   │   └── tests/
│   │   │       ├── char.rs
│   │   │       └── smoke.rs
│   │   ├── flate2/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── MAINTENANCE.md
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   ├── compress_file.rs
│   │   │   │   ├── decompress_file.rs
│   │   │   │   ├── deflatedecoder-bufread.rs
│   │   │   │   ├── deflatedecoder-read.rs
│   │   │   │   ├── deflatedecoder-write.rs
│   │   │   │   ├── deflateencoder-bufread.rs
│   │   │   │   ├── deflateencoder-read.rs
│   │   │   │   ├── deflateencoder-write.rs
│   │   │   │   ├── gzbuilder.rs
│   │   │   │   ├── gzdecoder-bufread.rs
│   │   │   │   ├── gzdecoder-read.rs
│   │   │   │   ├── gzdecoder-write.rs
│   │   │   │   ├── gzencoder-bufread.rs
│   │   │   │   ├── gzencoder-read.rs
│   │   │   │   ├── gzencoder-write.rs
│   │   │   │   ├── gzmultidecoder-bufread.rs
│   │   │   │   ├── gzmultidecoder-read.rs
│   │   │   │   ├── hello_world.txt
│   │   │   │   ├── zlibdecoder-bufread.rs
│   │   │   │   ├── zlibdecoder-read.rs
│   │   │   │   ├── zlibdecoder-write.rs
│   │   │   │   ├── zlibencoder-bufread.rs
│   │   │   │   ├── zlibencoder-read.rs
│   │   │   │   └── zlibencoder-write.rs
│   │   │   ├── src/
│   │   │   │   ├── bufreader.rs
│   │   │   │   ├── crc.rs
│   │   │   │   ├── deflate/
│   │   │   │   │   ├── bufread.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── read.rs
│   │   │   │   │   └── write.rs
│   │   │   │   ├── ffi/
│   │   │   │   │   ├── c.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── rust.rs
│   │   │   │   ├── gz/
│   │   │   │   │   ├── bufread.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── read.rs
│   │   │   │   │   └── write.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── mem.rs
│   │   │   │   ├── zio.rs
│   │   │   │   └── zlib/
│   │   │   │       ├── bufread.rs
│   │   │   │       ├── mod.rs
│   │   │   │       ├── read.rs
│   │   │   │       └── write.rs
│   │   │   └── tests/
│   │   │       ├── early-flush.rs
│   │   │       ├── empty-read.rs
│   │   │       ├── good-file.txt
│   │   │       ├── gunzip.rs
│   │   │       ├── multi.txt
│   │   │       └── zero-write.rs
│   │   ├── fnv/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── lib.rs
│   │   ├── form_urlencoded/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   ├── fs_extra/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── dir.rs
│   │   │   │   ├── error.rs
│   │   │   │   ├── file.rs
│   │   │   │   └── lib.rs
│   │   │   └── tests/
│   │   │       ├── dir.rs
│   │   │       ├── file.rs
│   │   │       └── lib.rs
│   │   ├── futures-channel/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── sync_mpsc.rs
│   │   │   ├── src/
│   │   │   │   ├── lib.rs
│   │   │   │   ├── lock.rs
│   │   │   │   ├── mpsc/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── queue.rs
│   │   │   │   │   └── sink_impl.rs
│   │   │   │   └── oneshot.rs
│   │   │   └── tests/
│   │   │       ├── channel.rs
│   │   │       ├── mpsc-close.rs
│   │   │       ├── mpsc-size_hint.rs
│   │   │       ├── mpsc.rs
│   │   │       └── oneshot.rs
│   │   ├── futures-core/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── future.rs
│   │   │       ├── lib.rs
│   │   │       ├── stream.rs
│   │   │       └── task/
│   │   │           ├── __internal/
│   │   │           │   ├── atomic_waker.rs
│   │   │           │   └── mod.rs
│   │   │           ├── mod.rs
│   │   │           └── poll.rs
│   │   ├── futures-io/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   ├── futures-sink/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   ├── futures-task/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── arc_wake.rs
│   │   │       ├── future_obj.rs
│   │   │       ├── lib.rs
│   │   │       ├── noop_waker.rs
│   │   │       ├── spawn.rs
│   │   │       ├── waker.rs
│   │   │       └── waker_ref.rs
│   │   ├── futures-util/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   ├── bilock.rs
│   │   │   │   ├── flatten_unordered.rs
│   │   │   │   ├── futures_unordered.rs
│   │   │   │   └── select.rs
│   │   │   └── src/
│   │   │       ├── abortable.rs
│   │   │       ├── async_await/
│   │   │       │   ├── join_mod.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── pending.rs
│   │   │       │   ├── poll.rs
│   │   │       │   ├── random.rs
│   │   │       │   ├── select_mod.rs
│   │   │       │   └── stream_select_mod.rs
│   │   │       ├── compat/
│   │   │       │   ├── compat01as03.rs
│   │   │       │   ├── compat03as01.rs
│   │   │       │   ├── executor.rs
│   │   │       │   └── mod.rs
│   │   │       ├── fns.rs
│   │   │       ├── future/
│   │   │       │   ├── abortable.rs
│   │   │       │   ├── either.rs
│   │   │       │   ├── future/
│   │   │       │   │   ├── catch_unwind.rs
│   │   │       │   │   ├── flatten.rs
│   │   │       │   │   ├── fuse.rs
│   │   │       │   │   ├── map.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── remote_handle.rs
│   │   │       │   │   └── shared.rs
│   │   │       │   ├── join.rs
│   │   │       │   ├── join_all.rs
│   │   │       │   ├── lazy.rs
│   │   │       │   ├── maybe_done.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── option.rs
│   │   │       │   ├── pending.rs
│   │   │       │   ├── poll_fn.rs
│   │   │       │   ├── poll_immediate.rs
│   │   │       │   ├── ready.rs
│   │   │       │   ├── select.rs
│   │   │       │   ├── select_all.rs
│   │   │       │   ├── select_ok.rs
│   │   │       │   ├── try_future/
│   │   │       │   │   ├── into_future.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── try_flatten.rs
│   │   │       │   │   └── try_flatten_err.rs
│   │   │       │   ├── try_join.rs
│   │   │       │   ├── try_join_all.rs
│   │   │       │   ├── try_maybe_done.rs
│   │   │       │   └── try_select.rs
│   │   │       ├── io/
│   │   │       │   ├── allow_std.rs
│   │   │       │   ├── buf_reader.rs
│   │   │       │   ├── buf_writer.rs
│   │   │       │   ├── chain.rs
│   │   │       │   ├── close.rs
│   │   │       │   ├── copy.rs
│   │   │       │   ├── copy_buf.rs
│   │   │       │   ├── copy_buf_abortable.rs
│   │   │       │   ├── cursor.rs
│   │   │       │   ├── empty.rs
│   │   │       │   ├── fill_buf.rs
│   │   │       │   ├── flush.rs
│   │   │       │   ├── into_sink.rs
│   │   │       │   ├── line_writer.rs
│   │   │       │   ├── lines.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── read.rs
│   │   │       │   ├── read_exact.rs
│   │   │       │   ├── read_line.rs
│   │   │       │   ├── read_to_end.rs
│   │   │       │   ├── read_to_string.rs
│   │   │       │   ├── read_until.rs
│   │   │       │   ├── read_vectored.rs
│   │   │       │   ├── repeat.rs
│   │   │       │   ├── seek.rs
│   │   │       │   ├── sink.rs
│   │   │       │   ├── split.rs
│   │   │       │   ├── take.rs
│   │   │       │   ├── window.rs
│   │   │       │   ├── write.rs
│   │   │       │   ├── write_all.rs
│   │   │       │   ├── write_all_vectored.rs
│   │   │       │   └── write_vectored.rs
│   │   │       ├── lib.rs
│   │   │       ├── lock/
│   │   │       │   ├── bilock.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── mutex.rs
│   │   │       ├── never.rs
│   │   │       ├── sink/
│   │   │       │   ├── buffer.rs
│   │   │       │   ├── close.rs
│   │   │       │   ├── drain.rs
│   │   │       │   ├── err_into.rs
│   │   │       │   ├── fanout.rs
│   │   │       │   ├── feed.rs
│   │   │       │   ├── flush.rs
│   │   │       │   ├── map_err.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── send.rs
│   │   │       │   ├── send_all.rs
│   │   │       │   ├── unfold.rs
│   │   │       │   ├── with.rs
│   │   │       │   └── with_flat_map.rs
│   │   │       ├── stream/
│   │   │       │   ├── abortable.rs
│   │   │       │   ├── empty.rs
│   │   │       │   ├── futures_ordered.rs
│   │   │       │   ├── futures_unordered/
│   │   │       │   │   ├── abort.rs
│   │   │       │   │   ├── iter.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── ready_to_run_queue.rs
│   │   │       │   │   └── task.rs
│   │   │       │   ├── iter.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── once.rs
│   │   │       │   ├── pending.rs
│   │   │       │   ├── poll_fn.rs
│   │   │       │   ├── poll_immediate.rs
│   │   │       │   ├── repeat.rs
│   │   │       │   ├── repeat_with.rs
│   │   │       │   ├── select.rs
│   │   │       │   ├── select_all.rs
│   │   │       │   ├── select_with_strategy.rs
│   │   │       │   ├── stream/
│   │   │       │   │   ├── all.rs
│   │   │       │   │   ├── any.rs
│   │   │       │   │   ├── buffer_unordered.rs
│   │   │       │   │   ├── buffered.rs
│   │   │       │   │   ├── catch_unwind.rs
│   │   │       │   │   ├── chain.rs
│   │   │       │   │   ├── chunks.rs
│   │   │       │   │   ├── collect.rs
│   │   │       │   │   ├── concat.rs
│   │   │       │   │   ├── count.rs
│   │   │       │   │   ├── cycle.rs
│   │   │       │   │   ├── enumerate.rs
│   │   │       │   │   ├── filter.rs
│   │   │       │   │   ├── filter_map.rs
│   │   │       │   │   ├── flatten.rs
│   │   │       │   │   ├── flatten_unordered.rs
│   │   │       │   │   ├── fold.rs
│   │   │       │   │   ├── for_each.rs
│   │   │       │   │   ├── for_each_concurrent.rs
│   │   │       │   │   ├── forward.rs
│   │   │       │   │   ├── fuse.rs
│   │   │       │   │   ├── into_future.rs
│   │   │       │   │   ├── map.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── next.rs
│   │   │       │   │   ├── peek.rs
│   │   │       │   │   ├── ready_chunks.rs
│   │   │       │   │   ├── scan.rs
│   │   │       │   │   ├── select_next_some.rs
│   │   │       │   │   ├── skip.rs
│   │   │       │   │   ├── skip_while.rs
│   │   │       │   │   ├── split.rs
│   │   │       │   │   ├── take.rs
│   │   │       │   │   ├── take_until.rs
│   │   │       │   │   ├── take_while.rs
│   │   │       │   │   ├── then.rs
│   │   │       │   │   ├── unzip.rs
│   │   │       │   │   └── zip.rs
│   │   │       │   ├── try_stream/
│   │   │       │   │   ├── and_then.rs
│   │   │       │   │   ├── into_async_read.rs
│   │   │       │   │   ├── into_stream.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── or_else.rs
│   │   │       │   │   ├── try_all.rs
│   │   │       │   │   ├── try_any.rs
│   │   │       │   │   ├── try_buffer_unordered.rs
│   │   │       │   │   ├── try_buffered.rs
│   │   │       │   │   ├── try_chunks.rs
│   │   │       │   │   ├── try_collect.rs
│   │   │       │   │   ├── try_concat.rs
│   │   │       │   │   ├── try_filter.rs
│   │   │       │   │   ├── try_filter_map.rs
│   │   │       │   │   ├── try_flatten.rs
│   │   │       │   │   ├── try_flatten_unordered.rs
│   │   │       │   │   ├── try_fold.rs
│   │   │       │   │   ├── try_for_each.rs
│   │   │       │   │   ├── try_for_each_concurrent.rs
│   │   │       │   │   ├── try_next.rs
│   │   │       │   │   ├── try_ready_chunks.rs
│   │   │       │   │   ├── try_skip_while.rs
│   │   │       │   │   ├── try_take_while.rs
│   │   │       │   │   └── try_unfold.rs
│   │   │       │   └── unfold.rs
│   │   │       ├── task/
│   │   │       │   ├── mod.rs
│   │   │       │   └── spawn.rs
│   │   │       └── unfold_state.rs
│   │   ├── generic-array/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── build.rs
│   │   │   └── src/
│   │   │       ├── arr.rs
│   │   │       ├── functional.rs
│   │   │       ├── hex.rs
│   │   │       ├── impl_serde.rs
│   │   │       ├── impl_zeroize.rs
│   │   │       ├── impls.rs
│   │   │       ├── iter.rs
│   │   │       ├── lib.rs
│   │   │       └── sequence.rs
│   │   ├── getrandom/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── SECURITY.md
│   │   │   ├── benches/
│   │   │   │   └── buffer.rs
│   │   │   ├── src/
│   │   │   │   ├── apple-other.rs
│   │   │   │   ├── custom.rs
│   │   │   │   ├── error.rs
│   │   │   │   ├── error_impls.rs
│   │   │   │   ├── espidf.rs
│   │   │   │   ├── fuchsia.rs
│   │   │   │   ├── getentropy.rs
│   │   │   │   ├── getrandom.rs
│   │   │   │   ├── hermit.rs
│   │   │   │   ├── js.rs
│   │   │   │   ├── lazy.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── linux_android.rs
│   │   │   │   ├── linux_android_with_fallback.rs
│   │   │   │   ├── netbsd.rs
│   │   │   │   ├── rdrand.rs
│   │   │   │   ├── solaris.rs
│   │   │   │   ├── solid.rs
│   │   │   │   ├── use_file.rs
│   │   │   │   ├── util.rs
│   │   │   │   ├── util_libc.rs
│   │   │   │   ├── vxworks.rs
│   │   │   │   ├── wasi.rs
│   │   │   │   └── windows.rs
│   │   │   └── tests/
│   │   │       ├── common/
│   │   │       │   └── mod.rs
│   │   │       ├── custom.rs
│   │   │       ├── normal.rs
│   │   │       └── rdrand.rs
│   │   ├── gimli/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── arch.rs
│   │   │       ├── common.rs
│   │   │       ├── constants.rs
│   │   │       ├── endianity.rs
│   │   │       ├── leb128.rs
│   │   │       ├── lib.rs
│   │   │       ├── read/
│   │   │       │   ├── abbrev.rs
│   │   │       │   ├── addr.rs
│   │   │       │   ├── aranges.rs
│   │   │       │   ├── cfi.rs
│   │   │       │   ├── dwarf.rs
│   │   │       │   ├── endian_reader.rs
│   │   │       │   ├── endian_slice.rs
│   │   │       │   ├── index.rs
│   │   │       │   ├── line.rs
│   │   │       │   ├── lists.rs
│   │   │       │   ├── loclists.rs
│   │   │       │   ├── lookup.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── op.rs
│   │   │       │   ├── pubnames.rs
│   │   │       │   ├── pubtypes.rs
│   │   │       │   ├── reader.rs
│   │   │       │   ├── rnglists.rs
│   │   │       │   ├── str.rs
│   │   │       │   ├── unit.rs
│   │   │       │   ├── util.rs
│   │   │       │   └── value.rs
│   │   │       ├── test_util.rs
│   │   │       └── write/
│   │   │           ├── abbrev.rs
│   │   │           ├── cfi.rs
│   │   │           ├── dwarf.rs
│   │   │           ├── endian_vec.rs
│   │   │           ├── line.rs
│   │   │           ├── loc.rs
│   │   │           ├── mod.rs
│   │   │           ├── op.rs
│   │   │           ├── range.rs
│   │   │           ├── section.rs
│   │   │           ├── str.rs
│   │   │           ├── unit.rs
│   │   │           └── writer.rs
│   │   ├── hashbrown/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   ├── bench.rs
│   │   │   │   └── insert_unique_unchecked.rs
│   │   │   ├── clippy.toml
│   │   │   ├── src/
│   │   │   │   ├── external_trait_impls/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── rayon/
│   │   │   │   │   │   ├── helpers.rs
│   │   │   │   │   │   ├── map.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── raw.rs
│   │   │   │   │   │   ├── set.rs
│   │   │   │   │   │   └── table.rs
│   │   │   │   │   ├── rkyv/
│   │   │   │   │   │   ├── hash_map.rs
│   │   │   │   │   │   ├── hash_set.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   └── serde.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── macros.rs
│   │   │   │   ├── map.rs
│   │   │   │   ├── raw/
│   │   │   │   │   ├── alloc.rs
│   │   │   │   │   ├── bitmask.rs
│   │   │   │   │   ├── generic.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── neon.rs
│   │   │   │   │   └── sse2.rs
│   │   │   │   ├── rustc_entry.rs
│   │   │   │   ├── scopeguard.rs
│   │   │   │   ├── set.rs
│   │   │   │   └── table.rs
│   │   │   └── tests/
│   │   │       ├── equivalent_trait.rs
│   │   │       ├── hasher.rs
│   │   │       ├── raw.rs
│   │   │       ├── rayon.rs
│   │   │       ├── serde.rs
│   │   │       └── set.rs
│   │   ├── heck/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── kebab.rs
│   │   │       ├── lib.rs
│   │   │       ├── lower_camel.rs
│   │   │       ├── shouty_kebab.rs
│   │   │       ├── shouty_snake.rs
│   │   │       ├── snake.rs
│   │   │       ├── title.rs
│   │   │       ├── train.rs
│   │   │       └── upper_camel.rs
│   │   ├── hermit-abi/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── errno.rs
│   │   │       ├── lib.rs
│   │   │       ├── tcplistener.rs
│   │   │       └── tcpstream.rs
│   │   ├── http/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── byte_str.rs
│   │   │   │   ├── convert.rs
│   │   │   │   ├── error.rs
│   │   │   │   ├── extensions.rs
│   │   │   │   ├── header/
│   │   │   │   │   ├── map.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── name.rs
│   │   │   │   │   └── value.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── method.rs
│   │   │   │   ├── request.rs
│   │   │   │   ├── response.rs
│   │   │   │   ├── status.rs
│   │   │   │   ├── uri/
│   │   │   │   │   ├── authority.rs
│   │   │   │   │   ├── builder.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── path.rs
│   │   │   │   │   ├── port.rs
│   │   │   │   │   ├── scheme.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   └── version.rs
│   │   │   └── tests/
│   │   │       ├── header_map.rs
│   │   │       ├── header_map_fuzz.rs
│   │   │       └── status_code.rs
│   │   ├── http-body/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── frame.rs
│   │   │   │   ├── lib.rs
│   │   │   │   └── size_hint.rs
│   │   │   └── tests/
│   │   │       └── is_end_stream.rs
│   │   ├── http-body-util/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── collected.rs
│   │   │       ├── combinators/
│   │   │       │   ├── box_body.rs
│   │   │       │   ├── collect.rs
│   │   │       │   ├── frame.rs
│   │   │       │   ├── map_err.rs
│   │   │       │   ├── map_frame.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── with_trailers.rs
│   │   │       ├── either.rs
│   │   │       ├── empty.rs
│   │   │       ├── full.rs
│   │   │       ├── lib.rs
│   │   │       ├── limited.rs
│   │   │       ├── stream.rs
│   │   │       └── util.rs
│   │   ├── httparse/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── parse.rs
│   │   │   ├── build.rs
│   │   │   ├── src/
│   │   │   │   ├── iter.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── macros.rs
│   │   │   │   └── simd/
│   │   │   │       ├── avx2.rs
│   │   │   │       ├── fallback.rs
│   │   │   │       ├── mod.rs
│   │   │   │       └── sse42.rs
│   │   │   └── tests/
│   │   │       └── uri.rs
│   │   ├── humantime/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   ├── datetime_format.rs
│   │   │   │   └── datetime_parse.rs
│   │   │   ├── bulk.yaml
│   │   │   ├── src/
│   │   │   │   ├── date.rs
│   │   │   │   ├── duration.rs
│   │   │   │   ├── lib.rs
│   │   │   │   └── wrapper.rs
│   │   │   └── vagga.yaml
│   │   ├── hyper/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   └── src/
│   │   │       ├── body/
│   │   │       │   ├── incoming.rs
│   │   │       │   ├── length.rs
│   │   │       │   └── mod.rs
│   │   │       ├── cfg.rs
│   │   │       ├── client/
│   │   │       │   ├── conn/
│   │   │       │   │   ├── http1.rs
│   │   │       │   │   ├── http2.rs
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── dispatch.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── tests.rs
│   │   │       ├── common/
│   │   │       │   ├── buf.rs
│   │   │       │   ├── date.rs
│   │   │       │   ├── io/
│   │   │       │   │   ├── compat.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── rewind.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── task.rs
│   │   │       │   ├── time.rs
│   │   │       │   └── watch.rs
│   │   │       ├── error.rs
│   │   │       ├── ext/
│   │   │       │   ├── h1_reason_phrase.rs
│   │   │       │   └── mod.rs
│   │   │       ├── ffi/
│   │   │       │   ├── body.rs
│   │   │       │   ├── client.rs
│   │   │       │   ├── error.rs
│   │   │       │   ├── http_types.rs
│   │   │       │   ├── io.rs
│   │   │       │   ├── macros.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── task.rs
│   │   │       ├── headers.rs
│   │   │       ├── lib.rs
│   │   │       ├── mock.rs
│   │   │       ├── proto/
│   │   │       │   ├── h1/
│   │   │       │   │   ├── conn.rs
│   │   │       │   │   ├── decode.rs
│   │   │       │   │   ├── dispatch.rs
│   │   │       │   │   ├── encode.rs
│   │   │       │   │   ├── io.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── role.rs
│   │   │       │   ├── h2/
│   │   │       │   │   ├── client.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── ping.rs
│   │   │       │   │   └── server.rs
│   │   │       │   └── mod.rs
│   │   │       ├── rt/
│   │   │       │   ├── bounds.rs
│   │   │       │   ├── io.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── timer.rs
│   │   │       ├── server/
│   │   │       │   ├── conn/
│   │   │       │   │   ├── http1.rs
│   │   │       │   │   ├── http2.rs
│   │   │       │   │   └── mod.rs
│   │   │       │   └── mod.rs
│   │   │       ├── service/
│   │   │       │   ├── http.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── service.rs
│   │   │       │   └── util.rs
│   │   │       ├── trace.rs
│   │   │       └── upgrade.rs
│   │   ├── hyper-rustls/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-ISC
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── RELEASING.md
│   │   │   ├── examples/
│   │   │   │   ├── client.rs
│   │   │   │   ├── openssl.cnf
│   │   │   │   ├── refresh-certificates.sh
│   │   │   │   ├── sample.pem
│   │   │   │   ├── sample.rsa
│   │   │   │   └── server.rs
│   │   │   ├── src/
│   │   │   │   ├── config.rs
│   │   │   │   ├── connector/
│   │   │   │   │   └── builder.rs
│   │   │   │   ├── connector.rs
│   │   │   │   ├── lib.rs
│   │   │   │   └── stream.rs
│   │   │   └── tests/
│   │   │       └── tests.rs
│   │   ├── hyper-util/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   └── client.rs
│   │   │   ├── src/
│   │   │   │   ├── client/
│   │   │   │   │   ├── client.rs
│   │   │   │   │   ├── legacy/
│   │   │   │   │   │   ├── client.rs
│   │   │   │   │   │   ├── connect/
│   │   │   │   │   │   │   ├── dns.rs
│   │   │   │   │   │   │   ├── http.rs
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── pool.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── service.rs
│   │   │   │   ├── common/
│   │   │   │   │   ├── exec.rs
│   │   │   │   │   ├── lazy.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── rewind.rs
│   │   │   │   │   ├── sync.rs
│   │   │   │   │   └── timer.rs
│   │   │   │   ├── error.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── rt/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tokio.rs
│   │   │   │   ├── server/
│   │   │   │   │   ├── conn/
│   │   │   │   │   │   ├── auto.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   └── service.rs
│   │   │   └── tests/
│   │   │       ├── legacy_client.rs
│   │   │       └── test_utils/
│   │   │           └── mod.rs
│   │   ├── idna/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── benches/
│   │   │   │   └── all.rs
│   │   │   ├── src/
│   │   │   │   ├── IdnaMappingTable.txt
│   │   │   │   ├── lib.rs
│   │   │   │   ├── make_uts46_mapping_table.py
│   │   │   │   ├── punycode.rs
│   │   │   │   ├── uts46.rs
│   │   │   │   └── uts46_mapping_table.rs
│   │   │   └── tests/
│   │   │       ├── IdnaTestV2.txt
│   │   │       ├── bad_punycode_tests.json
│   │   │       ├── punycode.rs
│   │   │       ├── punycode_tests.json
│   │   │       ├── tests.rs
│   │   │       ├── unit.rs
│   │   │       └── uts46.rs
│   │   ├── indexmap/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── RELEASES.md
│   │   │   ├── benches/
│   │   │   │   ├── bench.rs
│   │   │   │   └── faststring.rs
│   │   │   ├── src/
│   │   │   │   ├── arbitrary.rs
│   │   │   │   ├── borsh.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── macros.rs
│   │   │   │   ├── map/
│   │   │   │   │   ├── core/
│   │   │   │   │   │   ├── entry.rs
│   │   │   │   │   │   ├── raw.rs
│   │   │   │   │   │   └── raw_entry_v1.rs
│   │   │   │   │   ├── core.rs
│   │   │   │   │   ├── iter.rs
│   │   │   │   │   ├── mutable.rs
│   │   │   │   │   ├── serde_seq.rs
│   │   │   │   │   ├── slice.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── map.rs
│   │   │   │   ├── rayon/
│   │   │   │   │   ├── map.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── set.rs
│   │   │   │   ├── rustc.rs
│   │   │   │   ├── serde.rs
│   │   │   │   ├── set/
│   │   │   │   │   ├── iter.rs
│   │   │   │   │   ├── mutable.rs
│   │   │   │   │   ├── slice.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── set.rs
│   │   │   │   └── util.rs
│   │   │   └── tests/
│   │   │       ├── equivalent_trait.rs
│   │   │       ├── macros_full_path.rs
│   │   │       ├── quick.rs
│   │   │       └── tests.rs
│   │   ├── indicatif/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── deny.toml
│   │   │   ├── examples/
│   │   │   │   ├── cargo.rs
│   │   │   │   ├── cargowrap.rs
│   │   │   │   ├── download-continued.rs
│   │   │   │   ├── download-speed.rs
│   │   │   │   ├── download.rs
│   │   │   │   ├── fastbar.rs
│   │   │   │   ├── finebars.rs
│   │   │   │   ├── iterator.rs
│   │   │   │   ├── log.rs
│   │   │   │   ├── long-spinner.rs
│   │   │   │   ├── message.rs
│   │   │   │   ├── morebars.rs
│   │   │   │   ├── multi-tree-ext.rs
│   │   │   │   ├── multi-tree.rs
│   │   │   │   ├── multi.rs
│   │   │   │   ├── single.rs
│   │   │   │   ├── slow.rs
│   │   │   │   ├── spinner-loop.rs
│   │   │   │   ├── steady.rs
│   │   │   │   ├── tokio.rs
│   │   │   │   └── yarnish.rs
│   │   │   ├── src/
│   │   │   │   ├── draw_target.rs
│   │   │   │   ├── format.rs
│   │   │   │   ├── in_memory.rs
│   │   │   │   ├── iter.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── multi.rs
│   │   │   │   ├── progress_bar.rs
│   │   │   │   ├── rayon.rs
│   │   │   │   ├── state.rs
│   │   │   │   ├── style.rs
│   │   │   │   └── term_like.rs
│   │   │   └── tests/
│   │   │       ├── multi-autodrop.rs
│   │   │       └── render.rs
│   │   ├── instant/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── AUTHORS
│   │   │   ├── CHANGELOGS.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── lib.rs
│   │   │   │   ├── native.rs
│   │   │   │   └── wasm.rs
│   │   │   └── tests/
│   │   │       └── wasm.rs
│   │   ├── ipnet/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── RELEASES.md
│   │   │   └── src/
│   │   │       ├── ipext.rs
│   │   │       ├── ipnet.rs
│   │   │       ├── ipnet_schemars.rs
│   │   │       ├── ipnet_serde.rs
│   │   │       ├── lib.rs
│   │   │       ├── mask.rs
│   │   │       └── parser.rs
│   │   ├── is-terminal/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-MIT
│   │   │   ├── LICENSE-MIT-atty
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   ├── is_terminal_polyfill/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   ├── itoa/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── bench.rs
│   │   │   ├── src/
│   │   │   │   ├── lib.rs
│   │   │   │   └── udiv128.rs
│   │   │   └── tests/
│   │   │       └── test.rs
│   │   ├── js-sys/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── Temporal.rs
│   │   │   │   └── lib.rs
│   │   │   └── tests/
│   │   │       ├── headless.js
│   │   │       ├── headless.rs
│   │   │       └── wasm/
│   │   │           ├── Array.js
│   │   │           ├── Array.rs
│   │   │           ├── ArrayBuffer.rs
│   │   │           ├── ArrayIterator.rs
│   │   │           ├── BigInt.rs
│   │   │           ├── Boolean.rs
│   │   │           ├── DataView.rs
│   │   │           ├── Date.rs
│   │   │           ├── Error.rs
│   │   │           ├── EvalError.rs
│   │   │           ├── Function.js
│   │   │           ├── Function.rs
│   │   │           ├── Generator.js
│   │   │           ├── Generator.rs
│   │   │           ├── Intl.rs
│   │   │           ├── Iterator.js
│   │   │           ├── Iterator.rs
│   │   │           ├── JSON.rs
│   │   │           ├── JsString.js
│   │   │           ├── JsString.rs
│   │   │           ├── Map.rs
│   │   │           ├── MapIterator.rs
│   │   │           ├── Math.rs
│   │   │           ├── Number.js
│   │   │           ├── Number.rs
│   │   │           ├── Object.js
│   │   │           ├── Object.rs
│   │   │           ├── Promise.rs
│   │   │           ├── Proxy.js
│   │   │           ├── Proxy.rs
│   │   │           ├── RangeError.rs
│   │   │           ├── ReferenceError.rs
│   │   │           ├── Reflect.js
│   │   │           ├── Reflect.rs
│   │   │           ├── RegExp.rs
│   │   │           ├── Set.rs
│   │   │           ├── SetIterator.rs
│   │   │           ├── SharedArrayBuffer.js
│   │   │           ├── SharedArrayBuffer.rs
│   │   │           ├── Symbol.js
│   │   │           ├── Symbol.rs
│   │   │           ├── SyntaxError.rs
│   │   │           ├── Temporal.js
│   │   │           ├── Temporal.rs
│   │   │           ├── TypeError.rs
│   │   │           ├── TypedArray.rs
│   │   │           ├── UriError.rs
│   │   │           ├── WeakMap.rs
│   │   │           ├── WeakSet.rs
│   │   │           ├── WebAssembly.js
│   │   │           ├── WebAssembly.rs
│   │   │           ├── global_fns.rs
│   │   │           └── main.rs
│   │   ├── lazy_static/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── core_lazy.rs
│   │   │   │   ├── inline_lazy.rs
│   │   │   │   └── lib.rs
│   │   │   └── tests/
│   │   │       ├── no_std.rs
│   │   │       └── test.rs
│   │   ├── libc/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CONTRIBUTING.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── build.rs
│   │   │   ├── rustfmt.toml
│   │   │   ├── src/
│   │   │   │   ├── fixed_width_ints.rs
│   │   │   │   ├── fuchsia/
│   │   │   │   │   ├── aarch64.rs
│   │   │   │   │   ├── align.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── no_align.rs
│   │   │   │   │   ├── riscv64.rs
│   │   │   │   │   └── x86_64.rs
│   │   │   │   ├── hermit/
│   │   │   │   │   ├── aarch64.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── x86_64.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── macros.rs
│   │   │   │   ├── psp.rs
│   │   │   │   ├── sgx.rs
│   │   │   │   ├── solid/
│   │   │   │   │   ├── aarch64.rs
│   │   │   │   │   ├── arm.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── switch.rs
│   │   │   │   ├── teeos/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── unix/
│   │   │   │   │   ├── aix/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── powerpc64.rs
│   │   │   │   │   ├── align.rs
│   │   │   │   │   ├── bsd/
│   │   │   │   │   │   ├── apple/
│   │   │   │   │   │   │   ├── b32/
│   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   ├── b64/
│   │   │   │   │   │   │   │   ├── aarch64/
│   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   └── x86_64/
│   │   │   │   │   │   │   │       ├── align.rs
│   │   │   │   │   │   │   │       └── mod.rs
│   │   │   │   │   │   │   ├── long_array.rs
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   ├── freebsdlike/
│   │   │   │   │   │   │   ├── dragonfly/
│   │   │   │   │   │   │   │   ├── errno.rs
│   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   ├── freebsd/
│   │   │   │   │   │   │   │   ├── aarch64.rs
│   │   │   │   │   │   │   │   ├── arm.rs
│   │   │   │   │   │   │   │   ├── freebsd11/
│   │   │   │   │   │   │   │   │   ├── b64.rs
│   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   ├── freebsd12/
│   │   │   │   │   │   │   │   │   ├── b64.rs
│   │   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   │   └── x86_64.rs
│   │   │   │   │   │   │   │   ├── freebsd13/
│   │   │   │   │   │   │   │   │   ├── b64.rs
│   │   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   │   └── x86_64.rs
│   │   │   │   │   │   │   │   ├── freebsd14/
│   │   │   │   │   │   │   │   │   ├── b64.rs
│   │   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   │   └── x86_64.rs
│   │   │   │   │   │   │   │   ├── freebsd15/
│   │   │   │   │   │   │   │   │   ├── b64.rs
│   │   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   │   └── x86_64.rs
│   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   ├── powerpc.rs
│   │   │   │   │   │   │   │   ├── powerpc64.rs
│   │   │   │   │   │   │   │   ├── riscv64.rs
│   │   │   │   │   │   │   │   ├── x86.rs
│   │   │   │   │   │   │   │   └── x86_64/
│   │   │   │   │   │   │   │       ├── align.rs
│   │   │   │   │   │   │   │       └── mod.rs
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── netbsdlike/
│   │   │   │   │   │       ├── mod.rs
│   │   │   │   │   │       ├── netbsd/
│   │   │   │   │   │       │   ├── aarch64.rs
│   │   │   │   │   │       │   ├── arm.rs
│   │   │   │   │   │       │   ├── mips.rs
│   │   │   │   │   │       │   ├── mod.rs
│   │   │   │   │   │       │   ├── powerpc.rs
│   │   │   │   │   │       │   ├── riscv64.rs
│   │   │   │   │   │       │   ├── sparc64.rs
│   │   │   │   │   │       │   ├── x86.rs
│   │   │   │   │   │       │   └── x86_64.rs
│   │   │   │   │   │       └── openbsd/
│   │   │   │   │   │           ├── aarch64.rs
│   │   │   │   │   │           ├── arm.rs
│   │   │   │   │   │           ├── mips64.rs
│   │   │   │   │   │           ├── mod.rs
│   │   │   │   │   │           ├── powerpc.rs
│   │   │   │   │   │           ├── powerpc64.rs
│   │   │   │   │   │           ├── riscv64.rs
│   │   │   │   │   │           ├── sparc64.rs
│   │   │   │   │   │           ├── x86.rs
│   │   │   │   │   │           └── x86_64.rs
│   │   │   │   │   ├── haiku/
│   │   │   │   │   │   ├── b32.rs
│   │   │   │   │   │   ├── b64.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── native.rs
│   │   │   │   │   │   └── x86_64.rs
│   │   │   │   │   ├── hurd/
│   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   ├── b32.rs
│   │   │   │   │   │   ├── b64.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── no_align.rs
│   │   │   │   │   ├── linux_like/
│   │   │   │   │   │   ├── android/
│   │   │   │   │   │   │   ├── b32/
│   │   │   │   │   │   │   │   ├── arm.rs
│   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   └── x86/
│   │   │   │   │   │   │   │       ├── align.rs
│   │   │   │   │   │   │   │       └── mod.rs
│   │   │   │   │   │   │   ├── b64/
│   │   │   │   │   │   │   │   ├── aarch64/
│   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   ├── int128.rs
│   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   ├── riscv64/
│   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   └── x86_64/
│   │   │   │   │   │   │   │       ├── align.rs
│   │   │   │   │   │   │   │       └── mod.rs
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   ├── emscripten/
│   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   ├── lfs64.rs
│   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   └── no_align.rs
│   │   │   │   │   │   ├── linux/
│   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   ├── arch/
│   │   │   │   │   │   │   │   ├── generic/
│   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   ├── mips/
│   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   ├── powerpc/
│   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   └── sparc/
│   │   │   │   │   │   │   │       └── mod.rs
│   │   │   │   │   │   │   ├── gnu/
│   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   ├── b32/
│   │   │   │   │   │   │   │   │   ├── arm/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── csky/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── m68k/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── mips/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   │   ├── powerpc.rs
│   │   │   │   │   │   │   │   │   ├── riscv32/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── sparc/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   └── x86/
│   │   │   │   │   │   │   │   │       ├── align.rs
│   │   │   │   │   │   │   │   │       └── mod.rs
│   │   │   │   │   │   │   │   ├── b64/
│   │   │   │   │   │   │   │   │   ├── aarch64/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   ├── fallback.rs
│   │   │   │   │   │   │   │   │   │   ├── ilp32.rs
│   │   │   │   │   │   │   │   │   │   ├── int128.rs
│   │   │   │   │   │   │   │   │   │   ├── lp64.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── loongarch64/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── mips64/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   │   ├── powerpc64/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── riscv64/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── s390x.rs
│   │   │   │   │   │   │   │   │   ├── sparc64/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   └── x86_64/
│   │   │   │   │   │   │   │   │       ├── align.rs
│   │   │   │   │   │   │   │   │       ├── mod.rs
│   │   │   │   │   │   │   │   │       ├── not_x32.rs
│   │   │   │   │   │   │   │   │       └── x32.rs
│   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   └── no_align.rs
│   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   ├── musl/
│   │   │   │   │   │   │   │   ├── b32/
│   │   │   │   │   │   │   │   │   ├── arm/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── hexagon.rs
│   │   │   │   │   │   │   │   │   ├── mips/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   │   ├── powerpc.rs
│   │   │   │   │   │   │   │   │   ├── riscv32/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   └── x86/
│   │   │   │   │   │   │   │   │       ├── align.rs
│   │   │   │   │   │   │   │   │       └── mod.rs
│   │   │   │   │   │   │   │   ├── b64/
│   │   │   │   │   │   │   │   │   ├── aarch64/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   ├── int128.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── loongarch64/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── mips64.rs
│   │   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   │   ├── powerpc64.rs
│   │   │   │   │   │   │   │   │   ├── riscv64/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── s390x.rs
│   │   │   │   │   │   │   │   │   └── x86_64/
│   │   │   │   │   │   │   │   │       ├── align.rs
│   │   │   │   │   │   │   │   │       └── mod.rs
│   │   │   │   │   │   │   │   ├── lfs64.rs
│   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   ├── no_align.rs
│   │   │   │   │   │   │   ├── non_exhaustive.rs
│   │   │   │   │   │   │   └── uclibc/
│   │   │   │   │   │   │       ├── align.rs
│   │   │   │   │   │   │       ├── arm/
│   │   │   │   │   │   │       │   ├── align.rs
│   │   │   │   │   │   │       │   ├── mod.rs
│   │   │   │   │   │   │       │   └── no_align.rs
│   │   │   │   │   │   │       ├── mips/
│   │   │   │   │   │   │       │   ├── mips32/
│   │   │   │   │   │   │       │   │   ├── align.rs
│   │   │   │   │   │   │       │   │   ├── mod.rs
│   │   │   │   │   │   │       │   │   └── no_align.rs
│   │   │   │   │   │   │       │   ├── mips64/
│   │   │   │   │   │   │       │   │   ├── align.rs
│   │   │   │   │   │   │       │   │   ├── mod.rs
│   │   │   │   │   │   │       │   │   └── no_align.rs
│   │   │   │   │   │   │       │   └── mod.rs
│   │   │   │   │   │   │       ├── mod.rs
│   │   │   │   │   │   │       ├── no_align.rs
│   │   │   │   │   │   │       └── x86_64/
│   │   │   │   │   │   │           ├── l4re.rs
│   │   │   │   │   │   │           ├── mod.rs
│   │   │   │   │   │   │           └── other.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── newlib/
│   │   │   │   │   │   ├── aarch64/
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   ├── arm/
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   ├── espidf/
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   ├── generic.rs
│   │   │   │   │   │   ├── horizon/
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── no_align.rs
│   │   │   │   │   │   ├── powerpc/
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   └── vita/
│   │   │   │   │   │       └── mod.rs
│   │   │   │   │   ├── no_align.rs
│   │   │   │   │   ├── nto/
│   │   │   │   │   │   ├── aarch64.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── neutrino.rs
│   │   │   │   │   │   └── x86_64.rs
│   │   │   │   │   ├── redox/
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   └── solarish/
│   │   │   │   │       ├── compat.rs
│   │   │   │   │       ├── illumos.rs
│   │   │   │   │       ├── mod.rs
│   │   │   │   │       ├── solaris.rs
│   │   │   │   │       ├── x86.rs
│   │   │   │   │       ├── x86_64.rs
│   │   │   │   │       └── x86_common.rs
│   │   │   │   ├── vxworks/
│   │   │   │   │   ├── aarch64.rs
│   │   │   │   │   ├── arm.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── powerpc.rs
│   │   │   │   │   ├── powerpc64.rs
│   │   │   │   │   ├── x86.rs
│   │   │   │   │   └── x86_64.rs
│   │   │   │   ├── wasi.rs
│   │   │   │   ├── windows/
│   │   │   │   │   ├── gnu/
│   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── msvc/
│   │   │   │   │       └── mod.rs
│   │   │   │   └── xous.rs
│   │   │   └── tests/
│   │   │       └── const_fn.rs
│   │   ├── linux-raw-sys/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CODE_OF_CONDUCT.md
│   │   │   ├── COPYRIGHT
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-Apache-2.0_WITH_LLVM-exception
│   │   │   ├── LICENSE-MIT
│   │   │   ├── ORG_CODE_OF_CONDUCT.md
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── aarch64/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── arm/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── csky/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── elf.rs
│   │   │       ├── lib.rs
│   │   │       ├── loongarch64/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── mips/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── mips32r6/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── mips64/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── mips64r6/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── powerpc/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── powerpc64/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── riscv32/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── riscv64/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── s390x/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── sparc/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── sparc64/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── x32/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── x86/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       └── x86_64/
│   │   │           ├── errno.rs
│   │   │           ├── general.rs
│   │   │           ├── if_ether.rs
│   │   │           ├── if_packet.rs
│   │   │           ├── io_uring.rs
│   │   │           ├── ioctl.rs
│   │   │           ├── mempolicy.rs
│   │   │           ├── net.rs
│   │   │           ├── netlink.rs
│   │   │           ├── prctl.rs
│   │   │           ├── system.rs
│   │   │           └── xdp.rs
│   │   ├── log/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── value.rs
│   │   │   ├── src/
│   │   │   │   ├── __private_api.rs
│   │   │   │   ├── kv/
│   │   │   │   │   ├── error.rs
│   │   │   │   │   ├── key.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── source.rs
│   │   │   │   │   └── value.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── macros.rs
│   │   │   │   └── serde.rs
│   │   │   └── triagebot.toml
│   │   ├── memchr/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── COPYING
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── UNLICENSE
│   │   │   ├── rustfmt.toml
│   │   │   └── src/
│   │   │       ├── arch/
│   │   │       │   ├── aarch64/
│   │   │       │   │   ├── memchr.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── neon/
│   │   │       │   │       ├── memchr.rs
│   │   │       │   │       ├── mod.rs
│   │   │       │   │       └── packedpair.rs
│   │   │       │   ├── all/
│   │   │       │   │   ├── memchr.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── packedpair/
│   │   │       │   │   │   ├── default_rank.rs
│   │   │       │   │   │   └── mod.rs
│   │   │       │   │   ├── rabinkarp.rs
│   │   │       │   │   ├── shiftor.rs
│   │   │       │   │   └── twoway.rs
│   │   │       │   ├── generic/
│   │   │       │   │   ├── memchr.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── packedpair.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── wasm32/
│   │   │       │   │   ├── memchr.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── simd128/
│   │   │       │   │       ├── memchr.rs
│   │   │       │   │       ├── mod.rs
│   │   │       │   │       └── packedpair.rs
│   │   │       │   └── x86_64/
│   │   │       │       ├── avx2/
│   │   │       │       │   ├── memchr.rs
│   │   │       │       │   ├── mod.rs
│   │   │       │       │   └── packedpair.rs
│   │   │       │       ├── memchr.rs
│   │   │       │       ├── mod.rs
│   │   │       │       └── sse2/
│   │   │       │           ├── memchr.rs
│   │   │       │           ├── mod.rs
│   │   │       │           └── packedpair.rs
│   │   │       ├── cow.rs
│   │   │       ├── ext.rs
│   │   │       ├── lib.rs
│   │   │       ├── macros.rs
│   │   │       ├── memchr.rs
│   │   │       ├── memmem/
│   │   │       │   ├── mod.rs
│   │   │       │   └── searcher.rs
│   │   │       ├── tests/
│   │   │       │   ├── memchr/
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── naive.rs
│   │   │       │   │   └── prop.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── packedpair.rs
│   │   │       │   └── substring/
│   │   │       │       ├── mod.rs
│   │   │       │       ├── naive.rs
│   │   │       │       └── prop.rs
│   │   │       └── vector.rs
│   │   ├── mime/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CONTRIBUTING.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   ├── cmp.rs
│   │   │   │   ├── fmt.rs
│   │   │   │   └── parse.rs
│   │   │   └── src/
│   │   │       ├── lib.rs
│   │   │       └── parse.rs
│   │   ├── miniz_oxide/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── LICENSE-APACHE.md
│   │   │   ├── LICENSE-MIT.md
│   │   │   ├── LICENSE-ZLIB.md
│   │   │   ├── Readme.md
│   │   │   └── src/
│   │   │       ├── deflate/
│   │   │       │   ├── buffer.rs
│   │   │       │   ├── core.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── stream.rs
│   │   │       ├── inflate/
│   │   │       │   ├── core.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── output_buffer.rs
│   │   │       │   └── stream.rs
│   │   │       ├── lib.rs
│   │   │       └── shared.rs
│   │   ├── mio/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   ├── tcp_listenfd_server.rs
│   │   │   │   ├── tcp_server.rs
│   │   │   │   └── udp_server.rs
│   │   │   └── src/
│   │   │       ├── event/
│   │   │       │   ├── event.rs
│   │   │       │   ├── events.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── source.rs
│   │   │       ├── interest.rs
│   │   │       ├── io_source.rs
│   │   │       ├── lib.rs
│   │   │       ├── macros.rs
│   │   │       ├── net/
│   │   │       │   ├── mod.rs
│   │   │       │   ├── tcp/
│   │   │       │   │   ├── listener.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── stream.rs
│   │   │       │   ├── udp.rs
│   │   │       │   └── uds/
│   │   │       │       ├── datagram.rs
│   │   │       │       ├── listener.rs
│   │   │       │       ├── mod.rs
│   │   │       │       └── stream.rs
│   │   │       ├── poll.rs
│   │   │       ├── sys/
│   │   │       │   ├── mod.rs
│   │   │       │   ├── shell/
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── selector.rs
│   │   │       │   │   ├── tcp.rs
│   │   │       │   │   ├── udp.rs
│   │   │       │   │   ├── uds.rs
│   │   │       │   │   └── waker.rs
│   │   │       │   ├── unix/
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── net.rs
│   │   │       │   │   ├── pipe.rs
│   │   │       │   │   ├── selector/
│   │   │       │   │   │   ├── epoll.rs
│   │   │       │   │   │   ├── kqueue.rs
│   │   │       │   │   │   ├── mod.rs
│   │   │       │   │   │   └── poll.rs
│   │   │       │   │   ├── sourcefd.rs
│   │   │       │   │   ├── tcp.rs
│   │   │       │   │   ├── udp.rs
│   │   │       │   │   ├── uds/
│   │   │       │   │   │   ├── datagram.rs
│   │   │       │   │   │   ├── listener.rs
│   │   │       │   │   │   ├── mod.rs
│   │   │       │   │   │   ├── socketaddr.rs
│   │   │       │   │   │   └── stream.rs
│   │   │       │   │   └── waker.rs
│   │   │       │   ├── wasi/
│   │   │       │   │   └── mod.rs
│   │   │       │   └── windows/
│   │   │       │       ├── afd.rs
│   │   │       │       ├── event.rs
│   │   │       │       ├── handle.rs
│   │   │       │       ├── io_status_block.rs
│   │   │       │       ├── iocp.rs
│   │   │       │       ├── mod.rs
│   │   │       │       ├── named_pipe.rs
│   │   │       │       ├── net.rs
│   │   │       │       ├── overlapped.rs
│   │   │       │       ├── selector.rs
│   │   │       │       ├── tcp.rs
│   │   │       │       ├── udp.rs
│   │   │       │       └── waker.rs
│   │   │       ├── token.rs
│   │   │       └── waker.rs
│   │   ├── mozdevice/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   └── src/
│   │   │       ├── adb.rs
│   │   │       ├── lib.rs
│   │   │       ├── shell.rs
│   │   │       └── test.rs
│   │   ├── num_cpus/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── CONTRIBUTING.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── ci/
│   │   │   │   └── cgroups/
│   │   │   │       └── Dockerfile
│   │   │   ├── examples/
│   │   │   │   └── values.rs
│   │   │   ├── fixtures/
│   │   │   │   ├── cgroups/
│   │   │   │   │   ├── cgroups/
│   │   │   │   │   │   ├── ceil/
│   │   │   │   │   │   │   ├── cpu.cfs_period_us
│   │   │   │   │   │   │   └── cpu.cfs_quota_us
│   │   │   │   │   │   ├── good/
│   │   │   │   │   │   │   ├── cpu.cfs_period_us
│   │   │   │   │   │   │   └── cpu.cfs_quota_us
│   │   │   │   │   │   └── zero-period/
│   │   │   │   │   │       ├── cpu.cfs_period_us
│   │   │   │   │   │       └── cpu.cfs_quota_us
│   │   │   │   │   └── proc/
│   │   │   │   │       └── cgroups/
│   │   │   │   │           ├── cgroup
│   │   │   │   │           ├── mountinfo
│   │   │   │   │           ├── mountinfo_multi_opt
│   │   │   │   │           └── mountinfo_zero_opt
│   │   │   │   └── cgroups2/
│   │   │   │       ├── cgroups/
│   │   │   │       │   ├── ceil/
│   │   │   │       │   │   └── cpu.max
│   │   │   │       │   ├── good/
│   │   │   │       │   │   └── cpu.max
│   │   │   │       │   └── zero-period/
│   │   │   │       │       └── cpu.max
│   │   │   │       └── proc/
│   │   │   │           └── cgroups/
│   │   │   │               ├── cgroup
│   │   │   │               ├── cgroup_multi
│   │   │   │               └── mountinfo
│   │   │   └── src/
│   │   │       ├── lib.rs
│   │   │       └── linux.rs
│   │   ├── number_prefix/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── examples/
│   │   │   │   └── conversions.rs
│   │   │   └── src/
│   │   │       ├── lib.rs
│   │   │       └── parse.rs
│   │   ├── object/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── clippy.toml
│   │   │   ├── src/
│   │   │   │   ├── archive.rs
│   │   │   │   ├── common.rs
│   │   │   │   ├── elf.rs
│   │   │   │   ├── endian.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── macho.rs
│   │   │   │   ├── pe.rs
│   │   │   │   ├── pod.rs
│   │   │   │   ├── read/
│   │   │   │   │   ├── any.rs
│   │   │   │   │   ├── archive.rs
│   │   │   │   │   ├── coff/
│   │   │   │   │   │   ├── comdat.rs
│   │   │   │   │   │   ├── file.rs
│   │   │   │   │   │   ├── import.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── relocation.rs
│   │   │   │   │   │   ├── section.rs
│   │   │   │   │   │   └── symbol.rs
│   │   │   │   │   ├── elf/
│   │   │   │   │   │   ├── attributes.rs
│   │   │   │   │   │   ├── comdat.rs
│   │   │   │   │   │   ├── compression.rs
│   │   │   │   │   │   ├── dynamic.rs
│   │   │   │   │   │   ├── file.rs
│   │   │   │   │   │   ├── hash.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── note.rs
│   │   │   │   │   │   ├── relocation.rs
│   │   │   │   │   │   ├── section.rs
│   │   │   │   │   │   ├── segment.rs
│   │   │   │   │   │   ├── symbol.rs
│   │   │   │   │   │   └── version.rs
│   │   │   │   │   ├── macho/
│   │   │   │   │   │   ├── dyld_cache.rs
│   │   │   │   │   │   ├── fat.rs
│   │   │   │   │   │   ├── file.rs
│   │   │   │   │   │   ├── load_command.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── relocation.rs
│   │   │   │   │   │   ├── section.rs
│   │   │   │   │   │   ├── segment.rs
│   │   │   │   │   │   └── symbol.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── pe/
│   │   │   │   │   │   ├── data_directory.rs
│   │   │   │   │   │   ├── export.rs
│   │   │   │   │   │   ├── file.rs
│   │   │   │   │   │   ├── import.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── relocation.rs
│   │   │   │   │   │   ├── resource.rs
│   │   │   │   │   │   ├── rich.rs
│   │   │   │   │   │   └── section.rs
│   │   │   │   │   ├── read_cache.rs
│   │   │   │   │   ├── read_ref.rs
│   │   │   │   │   ├── traits.rs
│   │   │   │   │   ├── util.rs
│   │   │   │   │   ├── wasm.rs
│   │   │   │   │   └── xcoff/
│   │   │   │   │       ├── comdat.rs
│   │   │   │   │       ├── file.rs
│   │   │   │   │       ├── mod.rs
│   │   │   │   │       ├── relocation.rs
│   │   │   │   │       ├── section.rs
│   │   │   │   │       ├── segment.rs
│   │   │   │   │       └── symbol.rs
│   │   │   │   ├── write/
│   │   │   │   │   ├── coff/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── object.rs
│   │   │   │   │   │   └── writer.rs
│   │   │   │   │   ├── elf/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── object.rs
│   │   │   │   │   │   └── writer.rs
│   │   │   │   │   ├── macho.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── pe.rs
│   │   │   │   │   ├── string.rs
│   │   │   │   │   ├── util.rs
│   │   │   │   │   └── xcoff.rs
│   │   │   │   └── xcoff.rs
│   │   │   └── tests/
│   │   │       ├── integration.rs
│   │   │       ├── parse_self.rs
│   │   │       ├── read/
│   │   │       │   ├── coff.rs
│   │   │       │   └── mod.rs
│   │   │       └── round_trip/
│   │   │           ├── bss.rs
│   │   │           ├── coff.rs
│   │   │           ├── comdat.rs
│   │   │           ├── common.rs
│   │   │           ├── elf.rs
│   │   │           ├── macho.rs
│   │   │           ├── mod.rs
│   │   │           ├── section_flags.rs
│   │   │           └── tls.rs
│   │   ├── once_cell/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── bors.toml
│   │   │   ├── examples/
│   │   │   │   ├── bench.rs
│   │   │   │   ├── bench_acquire.rs
│   │   │   │   ├── lazy_static.rs
│   │   │   │   ├── reentrant_init_deadlocks.rs
│   │   │   │   ├── regex.rs
│   │   │   │   └── test_synchronization.rs
│   │   │   ├── src/
│   │   │   │   ├── imp_cs.rs
│   │   │   │   ├── imp_pl.rs
│   │   │   │   ├── imp_std.rs
│   │   │   │   ├── lib.rs
│   │   │   │   └── race.rs
│   │   │   └── tests/
│   │   │       └── it/
│   │   │           ├── main.rs
│   │   │           ├── race.rs
│   │   │           ├── race_once_box.rs
│   │   │           ├── sync_lazy.rs
│   │   │           ├── sync_once_cell.rs
│   │   │           ├── unsync_lazy.rs
│   │   │           └── unsync_once_cell.rs
│   │   ├── percent-encoding/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   ├── pin-project/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   ├── README.md
│   │   │   │   ├── enum-default-expanded.rs
│   │   │   │   ├── enum-default.rs
│   │   │   │   ├── not_unpin-expanded.rs
│   │   │   │   ├── not_unpin.rs
│   │   │   │   ├── pinned_drop-expanded.rs
│   │   │   │   ├── pinned_drop.rs
│   │   │   │   ├── project_replace-expanded.rs
│   │   │   │   ├── project_replace.rs
│   │   │   │   ├── struct-default-expanded.rs
│   │   │   │   ├── struct-default.rs
│   │   │   │   ├── unsafe_unpin-expanded.rs
│   │   │   │   └── unsafe_unpin.rs
│   │   │   ├── src/
│   │   │   │   └── lib.rs
│   │   │   └── tests/
│   │   │       ├── auxiliary/
│   │   │       │   └── mod.rs
│   │   │       ├── cfg.rs
│   │   │       ├── compiletest.rs
│   │   │       ├── drop_order.rs
│   │   │       ├── expand/
│   │   │       │   ├── default/
│   │   │       │   │   ├── enum.expanded.rs
│   │   │       │   │   ├── enum.rs
│   │   │       │   │   ├── struct.expanded.rs
│   │   │       │   │   ├── struct.rs
│   │   │       │   │   ├── tuple_struct.expanded.rs
│   │   │       │   │   └── tuple_struct.rs
│   │   │       │   ├── multifields/
│   │   │       │   │   ├── enum.expanded.rs
│   │   │       │   │   ├── enum.rs
│   │   │       │   │   ├── struct.expanded.rs
│   │   │       │   │   ├── struct.rs
│   │   │       │   │   ├── tuple_struct.expanded.rs
│   │   │       │   │   └── tuple_struct.rs
│   │   │       │   ├── naming/
│   │   │       │   │   ├── enum-all.expanded.rs
│   │   │       │   │   ├── enum-all.rs
│   │   │       │   │   ├── enum-mut.expanded.rs
│   │   │       │   │   ├── enum-mut.rs
│   │   │       │   │   ├── enum-none.expanded.rs
│   │   │       │   │   ├── enum-none.rs
│   │   │       │   │   ├── enum-own.expanded.rs
│   │   │       │   │   ├── enum-own.rs
│   │   │       │   │   ├── enum-ref.expanded.rs
│   │   │       │   │   ├── enum-ref.rs
│   │   │       │   │   ├── struct-all.expanded.rs
│   │   │       │   │   ├── struct-all.rs
│   │   │       │   │   ├── struct-mut.expanded.rs
│   │   │       │   │   ├── struct-mut.rs
│   │   │       │   │   ├── struct-none.expanded.rs
│   │   │       │   │   ├── struct-none.rs
│   │   │       │   │   ├── struct-own.expanded.rs
│   │   │       │   │   ├── struct-own.rs
│   │   │       │   │   ├── struct-ref.expanded.rs
│   │   │       │   │   ├── struct-ref.rs
│   │   │       │   │   ├── tuple_struct-all.expanded.rs
│   │   │       │   │   ├── tuple_struct-all.rs
│   │   │       │   │   ├── tuple_struct-mut.expanded.rs
│   │   │       │   │   ├── tuple_struct-mut.rs
│   │   │       │   │   ├── tuple_struct-none.expanded.rs
│   │   │       │   │   ├── tuple_struct-none.rs
│   │   │       │   │   ├── tuple_struct-own.expanded.rs
│   │   │       │   │   ├── tuple_struct-own.rs
│   │   │       │   │   ├── tuple_struct-ref.expanded.rs
│   │   │       │   │   └── tuple_struct-ref.rs
│   │   │       │   ├── not_unpin/
│   │   │       │   │   ├── enum.expanded.rs
│   │   │       │   │   ├── enum.rs
│   │   │       │   │   ├── struct.expanded.rs
│   │   │       │   │   ├── struct.rs
│   │   │       │   │   ├── tuple_struct.expanded.rs
│   │   │       │   │   └── tuple_struct.rs
│   │   │       │   ├── pinned_drop/
│   │   │       │   │   ├── enum.expanded.rs
│   │   │       │   │   ├── enum.rs
│   │   │       │   │   ├── struct.expanded.rs
│   │   │       │   │   ├── struct.rs
│   │   │       │   │   ├── tuple_struct.expanded.rs
│   │   │       │   │   └── tuple_struct.rs
│   │   │       │   ├── project_replace/
│   │   │       │   │   ├── enum.expanded.rs
│   │   │       │   │   ├── enum.rs
│   │   │       │   │   ├── struct.expanded.rs
│   │   │       │   │   ├── struct.rs
│   │   │       │   │   ├── tuple_struct.expanded.rs
│   │   │       │   │   └── tuple_struct.rs
│   │   │       │   ├── pub/
│   │   │       │   │   ├── enum.expanded.rs
│   │   │       │   │   ├── enum.rs
│   │   │       │   │   ├── struct.expanded.rs
│   │   │       │   │   ├── struct.rs
│   │   │       │   │   ├── tuple_struct.expanded.rs
│   │   │       │   │   └── tuple_struct.rs
│   │   │       │   └── unsafe_unpin/
│   │   │       │       ├── enum.expanded.rs
│   │   │       │       ├── enum.rs
│   │   │       │       ├── struct.expanded.rs
│   │   │       │       ├── struct.rs
│   │   │       │       ├── tuple_struct.expanded.rs
│   │   │       │       └── tuple_struct.rs
│   │   │       ├── expandtest.rs
│   │   │       ├── include/
│   │   │       │   ├── basic-safe-part.rs
│   │   │       │   └── basic.rs
│   │   │       ├── pin_project.rs
│   │   │       ├── pinned_drop.rs
│   │   │       ├── proper_unpin.rs
│   │   │       ├── repr_packed.rs
│   │   │       ├── run-pass/
│   │   │       │   ├── negative_impls.rs
│   │   │       │   └── private_in_public-enum.rs
│   │   │       ├── ui/
│   │   │       │   ├── cfg/
│   │   │       │   │   ├── cfg_attr-resolve.rs
│   │   │       │   │   ├── cfg_attr-resolve.stderr
│   │   │       │   │   ├── cfg_attr-type-mismatch.rs
│   │   │       │   │   ├── cfg_attr-type-mismatch.stderr
│   │   │       │   │   ├── packed_sneaky-span-issue-1.rs
│   │   │       │   │   ├── packed_sneaky-span-issue-1.stderr
│   │   │       │   │   ├── packed_sneaky-span-issue-2.rs
│   │   │       │   │   ├── packed_sneaky-span-issue-2.stderr
│   │   │       │   │   ├── packed_sneaky.rs
│   │   │       │   │   ├── packed_sneaky.stderr
│   │   │       │   │   ├── unsupported.rs
│   │   │       │   │   └── unsupported.stderr
│   │   │       │   ├── not_unpin/
│   │   │       │   │   ├── conflict-unpin.rs
│   │   │       │   │   ├── conflict-unpin.stderr
│   │   │       │   │   ├── impl-unsafe-unpin.rs
│   │   │       │   │   └── impl-unsafe-unpin.stderr
│   │   │       │   ├── pin_project/
│   │   │       │   │   ├── add-attr-to-struct.rs
│   │   │       │   │   ├── add-attr-to-struct.stderr
│   │   │       │   │   ├── add-pinned-field.rs
│   │   │       │   │   ├── add-pinned-field.stderr
│   │   │       │   │   ├── conflict-drop.rs
│   │   │       │   │   ├── conflict-drop.stderr
│   │   │       │   │   ├── conflict-unpin.rs
│   │   │       │   │   ├── conflict-unpin.stderr
│   │   │       │   │   ├── impl-unsafe-unpin.rs
│   │   │       │   │   ├── impl-unsafe-unpin.stderr
│   │   │       │   │   ├── import_unnamed.rs
│   │   │       │   │   ├── import_unnamed.stderr
│   │   │       │   │   ├── invalid.rs
│   │   │       │   │   ├── invalid.stderr
│   │   │       │   │   ├── overlapping_unpin_struct.rs
│   │   │       │   │   ├── overlapping_unpin_struct.stderr
│   │   │       │   │   ├── override-priv-mod.rs
│   │   │       │   │   ├── override-priv-mod.stderr
│   │   │       │   │   ├── packed-enum.rs
│   │   │       │   │   ├── packed-enum.stderr
│   │   │       │   │   ├── packed-name-value.rs
│   │   │       │   │   ├── packed-name-value.stderr
│   │   │       │   │   ├── packed.rs
│   │   │       │   │   ├── packed.stderr
│   │   │       │   │   ├── packed_sneaky-1.rs
│   │   │       │   │   ├── packed_sneaky-1.stderr
│   │   │       │   │   ├── packed_sneaky-2.rs
│   │   │       │   │   ├── packed_sneaky-2.stderr
│   │   │       │   │   ├── packed_sneaky-3.rs
│   │   │       │   │   ├── packed_sneaky-3.stderr
│   │   │       │   │   ├── packed_sneaky-4.rs
│   │   │       │   │   ├── packed_sneaky-4.stderr
│   │   │       │   │   ├── project_replace_unsized.rs
│   │   │       │   │   ├── project_replace_unsized.stderr
│   │   │       │   │   ├── project_replace_unsized_fn_params.rs
│   │   │       │   │   ├── project_replace_unsized_fn_params.stderr
│   │   │       │   │   ├── remove-attr-from-field.rs
│   │   │       │   │   ├── remove-attr-from-field.stderr
│   │   │       │   │   ├── remove-attr-from-struct.rs
│   │   │       │   │   ├── remove-attr-from-struct.stderr
│   │   │       │   │   ├── safe_packed_borrows.rs
│   │   │       │   │   ├── safe_packed_borrows.stderr
│   │   │       │   │   ├── unaligned_references.rs
│   │   │       │   │   ├── unaligned_references.stderr
│   │   │       │   │   ├── unpin_sneaky.rs
│   │   │       │   │   ├── unpin_sneaky.stderr
│   │   │       │   │   ├── visibility.rs
│   │   │       │   │   └── visibility.stderr
│   │   │       │   ├── pinned_drop/
│   │   │       │   │   ├── call-drop-inner.rs
│   │   │       │   │   ├── call-drop-inner.stderr
│   │   │       │   │   ├── conditional-drop-impl.rs
│   │   │       │   │   ├── conditional-drop-impl.stderr
│   │   │       │   │   ├── forget-pinned-drop-impl.rs
│   │   │       │   │   ├── forget-pinned-drop-impl.stderr
│   │   │       │   │   ├── invalid-self.rs
│   │   │       │   │   ├── invalid-self.stderr
│   │   │       │   │   ├── invalid.rs
│   │   │       │   │   ├── invalid.stderr
│   │   │       │   │   ├── pinned-drop-no-attr-arg.rs
│   │   │       │   │   ├── pinned-drop-no-attr-arg.stderr
│   │   │       │   │   ├── self.rs
│   │   │       │   │   ├── self.stderr
│   │   │       │   │   ├── unsafe-call.rs
│   │   │       │   │   └── unsafe-call.stderr
│   │   │       │   ├── unsafe_unpin/
│   │   │       │   │   ├── conflict-unpin.rs
│   │   │       │   │   └── conflict-unpin.stderr
│   │   │       │   └── unstable-features/
│   │   │       │       ├── README.md
│   │   │       │       ├── marker_trait_attr-feature-gate.rs
│   │   │       │       ├── marker_trait_attr-feature-gate.stderr
│   │   │       │       ├── marker_trait_attr.rs
│   │   │       │       ├── marker_trait_attr.stderr
│   │   │       │       ├── overlapping_marker_traits-feature-gate.rs
│   │   │       │       ├── overlapping_marker_traits-feature-gate.stderr
│   │   │       │       ├── overlapping_marker_traits.rs
│   │   │       │       ├── overlapping_marker_traits.stderr
│   │   │       │       ├── trivial_bounds-feature-gate.rs
│   │   │       │       ├── trivial_bounds-feature-gate.stderr
│   │   │       │       ├── trivial_bounds.rs
│   │   │       │       └── trivial_bounds.stderr
│   │   │       └── unsafe_unpin.rs
│   │   ├── pin-project-internal/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   └── src/
│   │   │       ├── error.rs
│   │   │       ├── lib.rs
│   │   │       ├── pin_project/
│   │   │       │   ├── args.rs
│   │   │       │   ├── attribute.rs
│   │   │       │   ├── derive.rs
│   │   │       │   └── mod.rs
│   │   │       ├── pinned_drop.rs
│   │   │       └── utils.rs
│   │   ├── pin-project-lite/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   └── lib.rs
│   │   │   └── tests/
│   │   │       ├── auxiliary/
│   │   │       │   └── mod.rs
│   │   │       ├── compiletest.rs
│   │   │       ├── drop_order.rs
│   │   │       ├── expand/
│   │   │       │   ├── default/
│   │   │       │   │   ├── enum.expanded.rs
│   │   │       │   │   ├── enum.rs
│   │   │       │   │   ├── struct.expanded.rs
│   │   │       │   │   └── struct.rs
│   │   │       │   ├── multifields/
│   │   │       │   │   ├── enum.expanded.rs
│   │   │       │   │   ├── enum.rs
│   │   │       │   │   ├── struct.expanded.rs
│   │   │       │   │   └── struct.rs
│   │   │       │   ├── naming/
│   │   │       │   │   ├── enum-all.expanded.rs
│   │   │       │   │   ├── enum-all.rs
│   │   │       │   │   ├── enum-mut.expanded.rs
│   │   │       │   │   ├── enum-mut.rs
│   │   │       │   │   ├── enum-none.expanded.rs
│   │   │       │   │   ├── enum-none.rs
│   │   │       │   │   ├── enum-ref.expanded.rs
│   │   │       │   │   ├── enum-ref.rs
│   │   │       │   │   ├── struct-all.expanded.rs
│   │   │       │   │   ├── struct-all.rs
│   │   │       │   │   ├── struct-mut.expanded.rs
│   │   │       │   │   ├── struct-mut.rs
│   │   │       │   │   ├── struct-none.expanded.rs
│   │   │       │   │   ├── struct-none.rs
│   │   │       │   │   ├── struct-ref.expanded.rs
│   │   │       │   │   └── struct-ref.rs
│   │   │       │   ├── not_unpin/
│   │   │       │   │   ├── enum.expanded.rs
│   │   │       │   │   ├── enum.rs
│   │   │       │   │   ├── struct.expanded.rs
│   │   │       │   │   └── struct.rs
│   │   │       │   ├── pinned_drop/
│   │   │       │   │   ├── enum.expanded.rs
│   │   │       │   │   ├── enum.rs
│   │   │       │   │   ├── struct.expanded.rs
│   │   │       │   │   └── struct.rs
│   │   │       │   └── pub/
│   │   │       │       ├── enum.expanded.rs
│   │   │       │       ├── enum.rs
│   │   │       │       ├── struct.expanded.rs
│   │   │       │       └── struct.rs
│   │   │       ├── expandtest.rs
│   │   │       ├── include/
│   │   │       │   └── basic.rs
│   │   │       ├── proper_unpin.rs
│   │   │       ├── test.rs
│   │   │       └── ui/
│   │   │           ├── pin_project/
│   │   │           │   ├── conflict-drop.rs
│   │   │           │   ├── conflict-drop.stderr
│   │   │           │   ├── conflict-unpin.rs
│   │   │           │   ├── conflict-unpin.stderr
│   │   │           │   ├── invalid-bounds.rs
│   │   │           │   ├── invalid-bounds.stderr
│   │   │           │   ├── invalid.rs
│   │   │           │   ├── invalid.stderr
│   │   │           │   ├── overlapping_lifetime_names.rs
│   │   │           │   ├── overlapping_lifetime_names.stderr
│   │   │           │   ├── overlapping_unpin_struct.rs
│   │   │           │   ├── overlapping_unpin_struct.stderr
│   │   │           │   ├── packed.rs
│   │   │           │   ├── packed.stderr
│   │   │           │   ├── unpin_sneaky.rs
│   │   │           │   ├── unpin_sneaky.stderr
│   │   │           │   ├── unsupported.rs
│   │   │           │   └── unsupported.stderr
│   │   │           └── pinned_drop/
│   │   │               ├── call-drop-inner.rs
│   │   │               ├── call-drop-inner.stderr
│   │   │               ├── conditional-drop-impl.rs
│   │   │               └── conditional-drop-impl.stderr
│   │   ├── pin-utils/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── lib.rs
│   │   │   │   ├── projection.rs
│   │   │   │   └── stack_pin.rs
│   │   │   └── tests/
│   │   │       ├── projection.rs
│   │   │       └── stack_pin.rs
│   │   ├── portable-atomic/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── build.rs
│   │   │   ├── no_atomic.rs
│   │   │   ├── src/
│   │   │   │   ├── cfgs.rs
│   │   │   │   ├── gen/
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── imp/
│   │   │   │   │   ├── arm_linux.rs
│   │   │   │   │   ├── atomic128/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── aarch64.rs
│   │   │   │   │   │   ├── detect/
│   │   │   │   │   │   │   ├── aarch64_aa64reg.rs
│   │   │   │   │   │   │   ├── aarch64_fuchsia.rs
│   │   │   │   │   │   │   ├── aarch64_macos.rs
│   │   │   │   │   │   │   ├── aarch64_windows.rs
│   │   │   │   │   │   │   ├── auxv.rs
│   │   │   │   │   │   │   ├── common.rs
│   │   │   │   │   │   │   └── x86_64.rs
│   │   │   │   │   │   ├── intrinsics.rs
│   │   │   │   │   │   ├── macros.rs
│   │   │   │   │   │   ├── powerpc64.rs
│   │   │   │   │   │   ├── s390x.rs
│   │   │   │   │   │   └── x86_64.rs
│   │   │   │   │   ├── core_atomic.rs
│   │   │   │   │   ├── fallback/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── outline_atomics.rs
│   │   │   │   │   │   ├── seq_lock.rs
│   │   │   │   │   │   ├── seq_lock_wide.rs
│   │   │   │   │   │   └── utils.rs
│   │   │   │   │   ├── float.rs
│   │   │   │   │   ├── interrupt/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── armv4t.rs
│   │   │   │   │   │   ├── armv6m.rs
│   │   │   │   │   │   ├── avr.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── msp430.rs
│   │   │   │   │   │   ├── riscv.rs
│   │   │   │   │   │   └── xtensa.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── msp430.rs
│   │   │   │   │   ├── riscv.rs
│   │   │   │   │   └── x86.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── tests/
│   │   │   │   │   ├── helper.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   └── utils.rs
│   │   │   └── version.rs
│   │   ├── proc-macro2/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── build/
│   │   │   │   └── probe.rs
│   │   │   ├── build.rs
│   │   │   ├── rust-toolchain.toml
│   │   │   ├── src/
│   │   │   │   ├── detection.rs
│   │   │   │   ├── extra.rs
│   │   │   │   ├── fallback.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── location.rs
│   │   │   │   ├── marker.rs
│   │   │   │   ├── parse.rs
│   │   │   │   ├── rcvec.rs
│   │   │   │   └── wrapper.rs
│   │   │   └── tests/
│   │   │       ├── comments.rs
│   │   │       ├── features.rs
│   │   │       ├── marker.rs
│   │   │       ├── test.rs
│   │   │       ├── test_fmt.rs
│   │   │       └── test_size.rs
│   │   ├── quote/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── rust-toolchain.toml
│   │   │   ├── src/
│   │   │   │   ├── ext.rs
│   │   │   │   ├── format.rs
│   │   │   │   ├── ident_fragment.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── runtime.rs
│   │   │   │   ├── spanned.rs
│   │   │   │   └── to_tokens.rs
│   │   │   └── tests/
│   │   │       ├── compiletest.rs
│   │   │       ├── test.rs
│   │   │       └── ui/
│   │   │           ├── does-not-have-iter-interpolated-dup.rs
│   │   │           ├── does-not-have-iter-interpolated-dup.stderr
│   │   │           ├── does-not-have-iter-interpolated.rs
│   │   │           ├── does-not-have-iter-interpolated.stderr
│   │   │           ├── does-not-have-iter-separated.rs
│   │   │           ├── does-not-have-iter-separated.stderr
│   │   │           ├── does-not-have-iter.rs
│   │   │           ├── does-not-have-iter.stderr
│   │   │           ├── not-quotable.rs
│   │   │           ├── not-quotable.stderr
│   │   │           ├── not-repeatable.rs
│   │   │           ├── not-repeatable.stderr
│   │   │           ├── wrong-type-span.rs
│   │   │           └── wrong-type-span.stderr
│   │   ├── rayon/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── FAQ.md
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── RELEASES.md
│   │   │   ├── src/
│   │   │   │   ├── array.rs
│   │   │   │   ├── collections/
│   │   │   │   │   ├── binary_heap.rs
│   │   │   │   │   ├── btree_map.rs
│   │   │   │   │   ├── btree_set.rs
│   │   │   │   │   ├── hash_map.rs
│   │   │   │   │   ├── hash_set.rs
│   │   │   │   │   ├── linked_list.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── vec_deque.rs
│   │   │   │   ├── compile_fail/
│   │   │   │   │   ├── cannot_collect_filtermap_data.rs
│   │   │   │   │   ├── cannot_zip_filtered_data.rs
│   │   │   │   │   ├── cell_par_iter.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── must_use.rs
│   │   │   │   │   ├── no_send_par_iter.rs
│   │   │   │   │   └── rc_par_iter.rs
│   │   │   │   ├── delegate.rs
│   │   │   │   ├── iter/
│   │   │   │   │   ├── blocks.rs
│   │   │   │   │   ├── chain.rs
│   │   │   │   │   ├── chunks.rs
│   │   │   │   │   ├── cloned.rs
│   │   │   │   │   ├── collect/
│   │   │   │   │   │   ├── consumer.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── test.rs
│   │   │   │   │   ├── copied.rs
│   │   │   │   │   ├── empty.rs
│   │   │   │   │   ├── enumerate.rs
│   │   │   │   │   ├── extend.rs
│   │   │   │   │   ├── filter.rs
│   │   │   │   │   ├── filter_map.rs
│   │   │   │   │   ├── find.rs
│   │   │   │   │   ├── find_first_last/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── test.rs
│   │   │   │   │   ├── flat_map.rs
│   │   │   │   │   ├── flat_map_iter.rs
│   │   │   │   │   ├── flatten.rs
│   │   │   │   │   ├── flatten_iter.rs
│   │   │   │   │   ├── fold.rs
│   │   │   │   │   ├── fold_chunks.rs
│   │   │   │   │   ├── fold_chunks_with.rs
│   │   │   │   │   ├── for_each.rs
│   │   │   │   │   ├── from_par_iter.rs
│   │   │   │   │   ├── inspect.rs
│   │   │   │   │   ├── interleave.rs
│   │   │   │   │   ├── interleave_shortest.rs
│   │   │   │   │   ├── intersperse.rs
│   │   │   │   │   ├── len.rs
│   │   │   │   │   ├── map.rs
│   │   │   │   │   ├── map_with.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── multizip.rs
│   │   │   │   │   ├── noop.rs
│   │   │   │   │   ├── once.rs
│   │   │   │   │   ├── panic_fuse.rs
│   │   │   │   │   ├── par_bridge.rs
│   │   │   │   │   ├── plumbing/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── positions.rs
│   │   │   │   │   ├── product.rs
│   │   │   │   │   ├── reduce.rs
│   │   │   │   │   ├── repeat.rs
│   │   │   │   │   ├── rev.rs
│   │   │   │   │   ├── skip.rs
│   │   │   │   │   ├── skip_any.rs
│   │   │   │   │   ├── skip_any_while.rs
│   │   │   │   │   ├── splitter.rs
│   │   │   │   │   ├── step_by.rs
│   │   │   │   │   ├── sum.rs
│   │   │   │   │   ├── take.rs
│   │   │   │   │   ├── take_any.rs
│   │   │   │   │   ├── take_any_while.rs
│   │   │   │   │   ├── test.rs
│   │   │   │   │   ├── try_fold.rs
│   │   │   │   │   ├── try_reduce.rs
│   │   │   │   │   ├── try_reduce_with.rs
│   │   │   │   │   ├── unzip.rs
│   │   │   │   │   ├── update.rs
│   │   │   │   │   ├── walk_tree.rs
│   │   │   │   │   ├── while_some.rs
│   │   │   │   │   ├── zip.rs
│   │   │   │   │   └── zip_eq.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── math.rs
│   │   │   │   ├── option.rs
│   │   │   │   ├── par_either.rs
│   │   │   │   ├── prelude.rs
│   │   │   │   ├── private.rs
│   │   │   │   ├── range.rs
│   │   │   │   ├── range_inclusive.rs
│   │   │   │   ├── result.rs
│   │   │   │   ├── slice/
│   │   │   │   │   ├── chunk_by.rs
│   │   │   │   │   ├── chunks.rs
│   │   │   │   │   ├── mergesort.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── quicksort.rs
│   │   │   │   │   ├── rchunks.rs
│   │   │   │   │   └── test.rs
│   │   │   │   ├── split_producer.rs
│   │   │   │   ├── str.rs
│   │   │   │   ├── string.rs
│   │   │   │   └── vec.rs
│   │   │   └── tests/
│   │   │       ├── chars.rs
│   │   │       ├── clones.rs
│   │   │       ├── collect.rs
│   │   │       ├── cross-pool.rs
│   │   │       ├── debug.rs
│   │   │       ├── drain_vec.rs
│   │   │       ├── intersperse.rs
│   │   │       ├── issue671-unzip.rs
│   │   │       ├── issue671.rs
│   │   │       ├── iter_panic.rs
│   │   │       ├── named-threads.rs
│   │   │       ├── octillion.rs
│   │   │       ├── par_bridge_recursion.rs
│   │   │       ├── producer_split_at.rs
│   │   │       ├── sort-panic-safe.rs
│   │   │       └── str.rs
│   │   ├── rayon-core/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── build.rs
│   │   │   ├── src/
│   │   │   │   ├── broadcast/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── test.rs
│   │   │   │   ├── compile_fail/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── quicksort_race1.rs
│   │   │   │   │   ├── quicksort_race2.rs
│   │   │   │   │   ├── quicksort_race3.rs
│   │   │   │   │   ├── rc_return.rs
│   │   │   │   │   ├── rc_upvar.rs
│   │   │   │   │   └── scope_join_bad.rs
│   │   │   │   ├── job.rs
│   │   │   │   ├── join/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── test.rs
│   │   │   │   ├── latch.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── private.rs
│   │   │   │   ├── registry.rs
│   │   │   │   ├── scope/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── test.rs
│   │   │   │   ├── sleep/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── counters.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── spawn/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── test.rs
│   │   │   │   ├── test.rs
│   │   │   │   ├── thread_pool/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── test.rs
│   │   │   │   └── unwind.rs
│   │   │   └── tests/
│   │   │       ├── double_init_fail.rs
│   │   │       ├── init_zero_threads.rs
│   │   │       ├── scope_join.rs
│   │   │       ├── scoped_threadpool.rs
│   │   │       ├── simple_panic.rs
│   │   │       ├── stack_overflow_crash.rs
│   │   │       └── use_current_thread.rs
│   │   ├── regex/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── Cross.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── UNICODE.md
│   │   │   ├── bench/
│   │   │   │   └── README.md
│   │   │   ├── record/
│   │   │   │   ├── README.md
│   │   │   │   ├── compile-test/
│   │   │   │   │   ├── 2023-04-19_1.7.3.csv
│   │   │   │   │   ├── 2023-04-20_master.csv
│   │   │   │   │   ├── 2023-07-05.csv
│   │   │   │   │   └── README.md
│   │   │   │   └── old-bench-log/
│   │   │   │       ├── 01-lazy-dfa/
│   │   │   │       │   ├── dynamic
│   │   │   │       │   ├── dynamic-no-lazy-dfa
│   │   │   │       │   ├── native
│   │   │   │       │   ├── nfa
│   │   │   │       │   └── pcre
│   │   │   │       ├── 02-set/
│   │   │   │       │   └── dynamic
│   │   │   │       ├── 03-bytes/
│   │   │   │       │   ├── onig
│   │   │   │       │   ├── pcre
│   │   │   │       │   ├── rust
│   │   │   │       │   └── rust-bytes
│   │   │   │       ├── 04/
│   │   │   │       │   ├── onig
│   │   │   │       │   ├── pcre1-jit
│   │   │   │       │   ├── pcre2-jit
│   │   │   │       │   ├── re2
│   │   │   │       │   ├── rust
│   │   │   │       │   └── tcl
│   │   │   │       ├── 05/
│   │   │   │       │   ├── onig
│   │   │   │       │   ├── onig-vs-rust
│   │   │   │       │   ├── pcre1
│   │   │   │       │   ├── pcre1-vs-rust
│   │   │   │       │   ├── pcre2
│   │   │   │       │   ├── pcre2-vs-rust
│   │   │   │       │   ├── re2
│   │   │   │       │   ├── re2-vs-rust
│   │   │   │       │   ├── rust
│   │   │   │       │   ├── tcl
│   │   │   │       │   └── tcl-vs-rust
│   │   │   │       ├── 06/
│   │   │   │       │   ├── dphobos-dmd
│   │   │   │       │   ├── dphobos-dmd-ct
│   │   │   │       │   ├── dphobos-ldc
│   │   │   │       │   ├── dphobos-ldc-ct
│   │   │   │       │   ├── pcre1
│   │   │   │       │   ├── pcre2
│   │   │   │       │   ├── re2
│   │   │   │       │   └── rust
│   │   │   │       ├── 07/
│   │   │   │       │   ├── boost
│   │   │   │       │   ├── dphobos-dmd
│   │   │   │       │   ├── dphobos-dmd-ct
│   │   │   │       │   ├── oniguruma
│   │   │   │       │   ├── pcre1
│   │   │   │       │   ├── pcre2
│   │   │   │       │   ├── re2
│   │   │   │       │   ├── rust
│   │   │   │       │   ├── rust-bytes
│   │   │   │       │   ├── stdcpp
│   │   │   │       │   ├── stdcpp-libcxx
│   │   │   │       │   └── tcl
│   │   │   │       ├── 08-new-memmem/
│   │   │   │       │   ├── rust-after-01
│   │   │   │       │   ├── rust-after-02
│   │   │   │       │   ├── rust-before-01
│   │   │   │       │   └── rust-before-02
│   │   │   │       ├── 09-new-baseline/
│   │   │   │       │   ├── pcre2
│   │   │   │       │   ├── re2
│   │   │   │       │   ├── rust
│   │   │   │       │   └── rust-bytes
│   │   │   │       ├── 10-last-frontier/
│   │   │   │       │   ├── rust-after-literal.log
│   │   │   │       │   ├── rust-before-literal.log
│   │   │   │       │   ├── rust-bytes-after-literal.log
│   │   │   │       │   └── rust-bytes-before-literal.log
│   │   │   │       ├── 11-regex-1.7.3/
│   │   │   │       │   ├── rust
│   │   │   │       │   └── rust-bytes
│   │   │   │       ├── 12-regex-1.8.1/
│   │   │   │       │   ├── rust
│   │   │   │       │   └── rust-bytes
│   │   │   │       ├── 13-regex-1.9.0/
│   │   │   │       │   ├── rust
│   │   │   │       │   └── rust-bytes
│   │   │   │       ├── README.md
│   │   │   │       └── old/
│   │   │   │           ├── 01-before
│   │   │   │           ├── 02-new-syntax-crate
│   │   │   │           ├── 03-new-syntax-crate
│   │   │   │           ├── 04-fixed-benchmark
│   │   │   │           ├── 05-thread-caching
│   │   │   │           ├── 06-major-dynamic
│   │   │   │           ├── 06-major-macro
│   │   │   │           ├── 07-prefix-improvements
│   │   │   │           ├── 08-case-fixes
│   │   │   │           ├── 09-before-compiler-rewrite
│   │   │   │           ├── 10-compiler-rewrite
│   │   │   │           ├── 11-compiler-rewrite
│   │   │   │           ├── 12-executor
│   │   │   │           ├── 12-executor-bytes
│   │   │   │           └── 13-cache-byte-range-suffixes
│   │   │   ├── rustfmt.toml
│   │   │   ├── src/
│   │   │   │   ├── builders.rs
│   │   │   │   ├── bytes.rs
│   │   │   │   ├── error.rs
│   │   │   │   ├── find_byte.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── pattern.rs
│   │   │   │   ├── regex/
│   │   │   │   │   ├── bytes.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── string.rs
│   │   │   │   └── regexset/
│   │   │   │       ├── bytes.rs
│   │   │   │       ├── mod.rs
│   │   │   │       └── string.rs
│   │   │   ├── test
│   │   │   ├── testdata/
│   │   │   │   ├── README.md
│   │   │   │   ├── anchored.toml
│   │   │   │   ├── bytes.toml
│   │   │   │   ├── crazy.toml
│   │   │   │   ├── crlf.toml
│   │   │   │   ├── earliest.toml
│   │   │   │   ├── empty.toml
│   │   │   │   ├── expensive.toml
│   │   │   │   ├── flags.toml
│   │   │   │   ├── fowler/
│   │   │   │   │   ├── basic.toml
│   │   │   │   │   ├── dat/
│   │   │   │   │   │   └── README
│   │   │   │   │   ├── nullsubexpr.toml
│   │   │   │   │   └── repetition.toml
│   │   │   │   ├── iter.toml
│   │   │   │   ├── leftmost-all.toml
│   │   │   │   ├── line-terminator.toml
│   │   │   │   ├── misc.toml
│   │   │   │   ├── multiline.toml
│   │   │   │   ├── no-unicode.toml
│   │   │   │   ├── overlapping.toml
│   │   │   │   ├── regex-lite.toml
│   │   │   │   ├── regression.toml
│   │   │   │   ├── set.toml
│   │   │   │   ├── substring.toml
│   │   │   │   ├── unicode.toml
│   │   │   │   ├── utf8.toml
│   │   │   │   ├── word-boundary-special.toml
│   │   │   │   └── word-boundary.toml
│   │   │   └── tests/
│   │   │       ├── fuzz/
│   │   │       │   ├── mod.rs
│   │   │       │   └── testdata/
│   │   │       │       ├── crash-7eb3351f0965e5d6c1cb98aa8585949ef96531ff
│   │   │       │       ├── crash-8760b19b25d74e3603d4c643e9c7404fdd3631f9
│   │   │       │       ├── crash-cd33b13df59ea9d74503986f9d32a270dd43cc04
│   │   │       │       ├── minimized-from-8760b19b25d74e3603d4c643e9c7404fdd3631f9
│   │   │       │       ├── slow-unit-3ab758ea520027fefd3f00e1384d9aeef155739e
│   │   │       │       ├── slow-unit-5345fccadf3812c53c3ccc7af5aa2741b7b2106c
│   │   │       │       ├── slow-unit-6bd643eec330166e4ada91da2d3f284268481085
│   │   │       │       ├── slow-unit-93c73a43581f205f9aaffd9c17e52b34b17becd0
│   │   │       │       ├── slow-unit-9ca9cc9929fee1fcbb847a78384effb8b98ea18a
│   │   │       │       └── slow-unit-b8a052f4254802edbe5f569b6ce6e9b6c927e9d6
│   │   │       ├── lib.rs
│   │   │       ├── misc.rs
│   │   │       ├── regression.rs
│   │   │       ├── regression_fuzz.rs
│   │   │       ├── replace.rs
│   │   │       ├── searcher.rs
│   │   │       ├── suite_bytes.rs
│   │   │       ├── suite_bytes_set.rs
│   │   │       ├── suite_string.rs
│   │   │       └── suite_string_set.rs
│   │   ├── regex-automata/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── dfa/
│   │   │   │   │   ├── accel.rs
│   │   │   │   │   ├── automaton.rs
│   │   │   │   │   ├── dense.rs
│   │   │   │   │   ├── determinize.rs
│   │   │   │   │   ├── minimize.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── onepass.rs
│   │   │   │   │   ├── regex.rs
│   │   │   │   │   ├── remapper.rs
│   │   │   │   │   ├── search.rs
│   │   │   │   │   ├── sparse.rs
│   │   │   │   │   

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

** Environment **
- Desktop Linux
- Desktop Mac
- Device

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Additional context**
Add any other context about the problem here.


================================================
FILE: .gitignore
================================================
/prebuilts
/.cache
pgp-key.*
/apt-repo/**
*.deb


================================================
FILE: Android.mk
================================================
#
# Builds the apps and installs them in /system/b2g/webapps
#

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE       := nutria
LOCAL_MODULE_CLASS := DATA
LOCAL_MODULE_TAGS  := optional
LOCAL_MODULE_PATH  := $(TARGET_OUT)
include $(BUILD_SYSTEM)/base_rules.mk

B2G_DEFAULTS := $(abspath $(TARGET_OUT)/b2g/defaults)
NUTRIA_PATH ?= nutria

# Use a device specific preferences file if possible, and fallback on the gsi one otherwise.
PREF_PATH := $(abspath $(NUTRIA_PATH)/defaults/pref/$(TARGET_PRODUCT).js)

ifneq ("$(wildcard $(PREF_PATH))","")
PREF_FILE_NAME := "$(TARGET_PRODUCT).js"
else
PREF_FILE_NAME := "gsi.js"
endif

$(LOCAL_BUILT_MODULE):
	@echo "Packaging Nutria apps..."
	(cd $(NUTRIA_PATH)/builder ; \
	 NUTRIA_APPS_ROOT=$(abspath $(NUTRIA_PATH)/apps) \
         $(SHELL) install.sh $(B2G_DEFAULTS)/../)
	@echo "Installing frontend..."
	@touch $(TARGET_OUT_INTERMEDIATES)/DATA/nutria_intermediates/nutria
	# Copy the custom prefs file.
	@mkdir -p $(B2G_DEFAULTS)/pref
	@cp $(NUTRIA_PATH)/defaults/pref/common.js $(B2G_DEFAULTS)/pref/common.js
	@cp $(NUTRIA_PATH)/defaults/pref/$(PREF_FILE_NAME) $(B2G_DEFAULTS)/pref/$(PREF_FILE_NAME)
	# Copy the default settings
	@cp $(NUTRIA_PATH)/defaults/default-settings.json $(B2G_DEFAULTS)/settings.json
	# Create a "buffer file" to have spare room on the system partition.
	dd if=/dev/urandom of=$(B2G_DEFAULTS)/delete_me_when_disk_full bs=1M count=100


================================================
FILE: LICENSE
================================================
                    GNU AFFERO GENERAL PUBLIC LICENSE
                       Version 3, 19 November 2007

 Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

                            Preamble

  The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.

  The licenses for most software and other practical works are designed
to take away your freedom to share and change the works.  By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.

  Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.

  A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate.  Many developers of free software are heartened and
encouraged by the resulting cooperation.  However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.

  The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community.  It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server.  Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.

  An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals.  This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.

  The precise terms and conditions for copying, distribution and
modification follow.

                       TERMS AND CONDITIONS

  0. Definitions.

  "This License" refers to version 3 of the GNU Affero General Public License.

  "Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.

  "The Program" refers to any copyrightable work licensed under this
License.  Each licensee is addressed as "you".  "Licensees" and
"recipients" may be individuals or organizations.

  To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy.  The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.

  A "covered work" means either the unmodified Program or a work based
on the Program.

  To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy.  Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.

  To "convey" a work means any kind of propagation that enables other
parties to make or receive copies.  Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.

  An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License.  If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.

  1. Source Code.

  The "source code" for a work means the preferred form of the work
for making modifications to it.  "Object code" means any non-source
form of a work.

  A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.

  The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form.  A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.

  The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities.  However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work.  For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.

  The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.

  The Corresponding Source for a work in source code form is that
same work.

  2. Basic Permissions.

  All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met.  This License explicitly affirms your unlimited
permission to run the unmodified Program.  The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work.  This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.

  You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force.  You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright.  Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.

  Conveying under any other circumstances is permitted solely under
the conditions stated below.  Sublicensing is not allowed; section 10
makes it unnecessary.

  3. Protecting Users' Legal Rights From Anti-Circumvention Law.

  No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.

  When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.

  4. Conveying Verbatim Copies.

  You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.

  You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.

  5. Conveying Modified Source Versions.

  You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:

    a) The work must carry prominent notices stating that you modified
    it, and giving a relevant date.

    b) The work must carry prominent notices stating that it is
    released under this License and any conditions added under section
    7.  This requirement modifies the requirement in section 4 to
    "keep intact all notices".

    c) You must license the entire work, as a whole, under this
    License to anyone who comes into possession of a copy.  This
    License will therefore apply, along with any applicable section 7
    additional terms, to the whole of the work, and all its parts,
    regardless of how they are packaged.  This License gives no
    permission to license the work in any other way, but it does not
    invalidate such permission if you have separately received it.

    d) If the work has interactive user interfaces, each must display
    Appropriate Legal Notices; however, if the Program has interactive
    interfaces that do not display Appropriate Legal Notices, your
    work need not make them do so.

  A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit.  Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.

  6. Conveying Non-Source Forms.

  You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:

    a) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by the
    Corresponding Source fixed on a durable physical medium
    customarily used for software interchange.

    b) Convey the object code in, or embodied in, a physical product
    (including a physical distribution medium), accompanied by a
    written offer, valid for at least three years and valid for as
    long as you offer spare parts or customer support for that product
    model, to give anyone who possesses the object code either (1) a
    copy of the Corresponding Source for all the software in the
    product that is covered by this License, on a durable physical
    medium customarily used for software interchange, for a price no
    more than your reasonable cost of physically performing this
    conveying of source, or (2) access to copy the
    Corresponding Source from a network server at no charge.

    c) Convey individual copies of the object code with a copy of the
    written offer to provide the Corresponding Source.  This
    alternative is allowed only occasionally and noncommercially, and
    only if you received the object code with such an offer, in accord
    with subsection 6b.

    d) Convey the object code by offering access from a designated
    place (gratis or for a charge), and offer equivalent access to the
    Corresponding Source in the same way through the same place at no
    further charge.  You need not require recipients to copy the
    Corresponding Source along with the object code.  If the place to
    copy the object code is a network server, the Corresponding Source
    may be on a different server (operated by you or a third party)
    that supports equivalent copying facilities, provided you maintain
    clear directions next to the object code saying where to find the
    Corresponding Source.  Regardless of what server hosts the
    Corresponding Source, you remain obligated to ensure that it is
    available for as long as needed to satisfy these requirements.

    e) Convey the object code using peer-to-peer transmission, provided
    you inform other peers where the object code and Corresponding
    Source of the work are being offered to the general public at no
    charge under subsection 6d.

  A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.

  A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling.  In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage.  For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product.  A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.

  "Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source.  The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.

  If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information.  But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).

  The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed.  Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.

  Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.

  7. Additional Terms.

  "Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law.  If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.

  When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it.  (Additional permissions may be written to require their own
removal in certain cases when you modify the work.)  You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.

  Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:

    a) Disclaiming warranty or limiting liability differently from the
    terms of sections 15 and 16 of this License; or

    b) Requiring preservation of specified reasonable legal notices or
    author attributions in that material or in the Appropriate Legal
    Notices displayed by works containing it; or

    c) Prohibiting misrepresentation of the origin of that material, or
    requiring that modified versions of such material be marked in
    reasonable ways as different from the original version; or

    d) Limiting the use for publicity purposes of names of licensors or
    authors of the material; or

    e) Declining to grant rights under trademark law for use of some
    trade names, trademarks, or service marks; or

    f) Requiring indemnification of licensors and authors of that
    material by anyone who conveys the material (or modified versions of
    it) with contractual assumptions of liability to the recipient, for
    any liability that these contractual assumptions directly impose on
    those licensors and authors.

  All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10.  If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term.  If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.

  If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.

  Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.

  8. Termination.

  You may not propagate or modify a covered work except as expressly
provided under this License.  Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).

  However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.

  Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.

  Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License.  If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.

  9. Acceptance Not Required for Having Copies.

  You are not required to accept this License in order to receive or
run a copy of the Program.  Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance.  However,
nothing other than this License grants you permission to propagate or
modify any covered work.  These actions infringe copyright if you do
not accept this License.  Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.

  10. Automatic Licensing of Downstream Recipients.

  Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License.  You are not responsible
for enforcing compliance by third parties with this License.

  An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations.  If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.

  You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License.  For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.

  11. Patents.

  A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based.  The
work thus licensed is called the contributor's "contributor version".

  A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version.  For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.

  Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.

  In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement).  To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.

  If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients.  "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.

  If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.

  A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License.  You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.

  Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.

  12. No Surrender of Others' Freedom.

  If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all.  For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.

  13. Remote Network Interaction; Use with the GNU General Public License.

  Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software.  This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.

  Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work.  The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.

  14. Revised Versions of this License.

  The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time.  Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

  Each version is given a distinguishing version number.  If the
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation.  If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.

  If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.

  Later license versions may give you additional or different
permissions.  However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.

  15. Disclaimer of Warranty.

  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. Limitation of Liability.

  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.

  17. Interpretation of Sections 15 and 16.

  If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

                     END OF TERMS AND CONDITIONS

            How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU Affero General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Affero General Public License for more details.

    You should have received a copy of the GNU Affero General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.

Also add information on how to contact you by electronic and paper mail.

  If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source.  For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code.  There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.

  You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
<https://www.gnu.org/licenses/>.


================================================
FILE: README.md
================================================
# Nutria: An Experimental Web Based OS Frontend

This repo contains a suite of apps and their build system. Several running mode are available:

- Gonk based devices (build from https://github.com/capyloon/B2G).
- Linux mobile form factor emulator.
- Linux desktop form factor.
- Linux desktop session.
- Linux TV, large screen form factor.

The included build system is available by running the `jackady` (spelled like the French "Jacques a dit") command. This lets you run locally in development or production mode, and manage device operations.

If you want to contribute, please read the [Contributing Guide](./docs/contributing.md) and [Debugging Guide](./docs/debugging.md).

[
<img src="./screenshots/mobile-1.webp" width=240 alt="Mobile Version" title="Nutria in Mobile Mode">
<img src="./screenshots/desktop-1.webp" width=400 alt="Desktop Version" title="Nutria in Desktop Mode">
](https://capyloon.org)

# Prerequisites

In order to develop locally, you need a stable Rust toolchain installed (eg. from https://rustup.rs/) since the first invocation of `jackady` will compile the build system.

Creating debian packages requires the `dpkg-deb` command from the `dpkg` package.

# Quick Start

Once your Rust toolchain is installed, you can get a running system with these 2 commands:

1. `./jackady update-prebuilts`
2. `./jackady dev`

You can then make changes to apps and see the results live, except for the system UI and the homescreen which require a restart.

# Build commands

Running `jackady` without arguments shows the list of available commands:

```
USAGE:
    jackady [OPTIONS] <SUBCOMMAND>

OPTIONS:
    -h, --help       Print help information
    -v, --verbose    Enable verbose output
    -V, --version    Print version information

SUBCOMMANDS:
    clean               Cleans up the output directory
    deb                 Desktop: creates a debian package
    dev                 Desktop: runs without packaging apps
    help                Print this message or the help of the given subcommand(s)
    install             Desktop: package the apps into a given directory
    new-app             Creates a new app based on a scaffolding template
    prod                Desktop: runs with packaged apps
    push                Gonk: push the packaged apps to the device
    push-b2g            Gonk: push Gecko to the device
    reset-data          Gonk: reset the user data on the device
    reset-time          Gonk: reset the time on device
    restart             Gonk: force a restart of the api-daemon and b2g
    update-prebuilts    Download prebuilt versions of the needed binaries
```

`jackady` also relies on some environment variables to be set to control its behavior:
| Variable | Description | Default value |
| ------------------------ | ----------------------------------------------------------------------------------------------- | ------------------------------------------ |
| NUTRIA_OUTPUT_ROOT | The path where build artefacts are created. | `./builder/output` |
| NUTRIA_API_DAEMON_ROOT | The path to a checkout of the [`api-daemon` crate](https://github.com/capyloon/api-daemon). | |
| NUTRIA_API_DAEMON_BINARY | The path to the `api-daemon` executable built for the desktop platform. | `./prebuilts/${HOST_TARGET}/api-daemon` |
| NUTRIA_API_DAEMON_PORT | The port on which the api-daemon should run. | 80 but needs to be set to 8081 on desktop. |
| NUTRIA_APPS_ROOT | The path to the apps directory. | `./apps` |
| NUTRIA_APPSCMD_BINARY | The path to the `appscmd` executable built for the target platform. | `./prebuilts/${HOST_TARGET}/appscmd` |
| NUTRIA_B2GHALD_BINARY | The path to a taget version of the `b2ghald` executable. Only required for debian packaging. | |
| NUTRIA_B2GHALCTL_BINARY | The path to a target version of the `b2ghalctl` executable. Only required for debian packaging. | |
| NUTRIA_B2G_BINARY | The path to the b2g binary used for running on desktop. | `./b2g` |
| NUTRIA_B2G_PACKAGE | The path to a b2g package that will be pushed to a device. | |
| NUTRIA_PREBUILTS_JSON | The path to a json file describing where to find prebuilts artifacts. | |
| NUTRIA_LINUX_USER | The username to use when connecting to a remote Linux device. | mobian |
| NUTRIA_LINUX_HOST | The hostname or ip of the remote Linux device | pinephone |
| NUTRIA_LINUX_DISABLED | Set this variable to any value to disable detection of Linux devices. | |

## The `clean` command

This removes all build artefacts from the selected output directory. Note that this includes all data from development and production profiles.

## The `deb` command

This will create a debian package under `NUTRIA_OUTPUT_ROOT/debian/`.

This package provides the desktop session, as well as the mobile & desktop simulators. Note that when installed from the debian package, they all share the same profile data.

The following options are supported:

```
USAGE:
    jackady deb [OPTIONS]

OPTIONS:
    -d, --device <DEVICE>    The target device [possible values: desktop, pinephone]
    -h, --help               Print help information
    -V, --version            Print version information

```

## The `dev` command

This command runs the desktop simulator in development mode: apps are not packaged, and changes done to them in the `NUTRIA_APPS_ROOT` directory are immediately visible when reloading the apps. Changes to the system app still require a full restart.

The following options are supported:

```
USAGE:
    jackady dev [OPTIONS]

OPTIONS:
    -d, --debug          Run under gdb if set
    -h, --help           Print help information
        --size <SIZE>    The screen size to emulate. Formatted such as 800x600
        --type <TYPE>    The type of device to emulate. Valid values are 'desktop' and 'mobile'
    -V, --version        Print version information
```

## The `prod` command

This command runs the desktop emulator in production mode, with apps packaged in zips.

The following options are supported:

```
USAGE:
    jackady prod [OPTIONS]

OPTIONS:
    -d, --debug          Run under gdb if set
    -h, --help           Print help information
        --size <SIZE>    The screen size to emulate. Formatted such as 800x600
        --type <TYPE>    The type of device to emulate. Valid values are 'desktop' and 'mobile'
    -V, --version        Print version information
```

## The `install` command

This command takes a mandatory parameter that is the path where the packaged apps will be written. This command is used by the Android build system.

## The `push` command

This command will push the specified apps to the device, effectively updating them. Two special cases are taken into account:

1. If the `system` app is updated, b2g and the api-daemon are restarted.
2. If the `homescreen` app is updated, the current running one is killed which triggers a reload.

The following options are supported:

```
USAGE:
    jackady push [APPS]

ARGS:
    <APPS>    An optional comma separated list of apps

OPTIONS:
    -h, --help       Print help information
    -V, --version    Print version information
```

## The `push-b2g` command

This command will push a new b2g runtime to the device.

The following options are supported:

```
USAGE:
    jackady push-b2g <PATH>

ARGS:
    <PATH>    The full path to the Gecko package (eg. /home/user/b2g-98.0.en-US.linux-android-
              aarch64.tar.bz2)

OPTIONS:
    -h, --help       Print help information
    -V, --version    Print version information
```

## The `reset-data` command

This command deletes all profile data used by b2g and the api-daemon on device.

## The `reset-time` command

This command set the device time to be the same as the current host.

## The `restart` command

This command forces a restart of b2g and the api-daemon.

## The `update-prebuilts` command

This command will fetch prebuilt binaries for your platform and setup environment variables accordingly.
The downloaded resources are cached in the `.cache` directory.

By default `jackady` uses the resources linked to in the [prebuilts.json](./builder/prebuilts.json) file.
It is also possible to use other prebuilt resources by setting the `NUTRIA_PREBUILTS_JSON` environement variable properly.

The following options are supported:

```
USAGE:
    jackady update-prebuilts [OPTIONS]

OPTIONS:
    -h, --help               Print help information
    -t, --target <TARGET>    The target for which to fetch binaries. Defaults to the current host
    -V, --version            Print version information
```

## The `new-app` command

This command will create a basic app with a manifest. The expected parameters are:

```
USAGE:
    jackady new-app <NAME>

ARGS:
    <NAME>    The new app name

OPTIONS:
    -h, --help    Print help information
```

# Using custom prebuilt binaries and porting to a new target

The `./jackady update-prebuilts` downloads and install a set of needed binaries:

- `b2g`, the web runtime. Built from https://github.com/capyloon/gecko-b2g/tree/capyloon
- `api-daemon`, a daemon used to expose non standard apis to web pages. Built from https://github.com/capyloon/gecko-b2g/tree/capyloon
- `ipfsd`, the local IPFS node. Built from https://github.com/capyloon/beetle/tree/capyloon
- `b2ghald`, a daemon to control some low level apis (eg. screen brightness) on Linux. Built from https://github.com/capyloon/b2ghald

Prebuilts are currently provided for a number of architectures: `x86_64-unknown-linux-gnu`, `aarch64-unknown-linux-gnu`, `x86_64-apple-darwin` and `aarch64-apple-darwin`.

If you want to test a custom version of one of these binaries or build them for a different targets, you can follow similar steps as the shipped prebuilts that are all cross-compiled from a Ubuntu x86_64 host.

## b2g

You first need to create a `mozconfig` file with target specific changes. It is very likely that you can base yours on one of the existing mozconfig:

- `mozconfig-b2g-mobian` targets `aarch64-unknown-linux-gnu` for PinePhone and Librem5.
- `mozconfig-b2g-desktop` and `mozconfig-b2g-optdesktop` configure debug and release builds for `x86_64-unknown-linux-gnu`.
- `mozconfig-darwin-*` are cross-compilation setup for MacOS.

Here's an example shell script to drive a debug x86_64 build:

```shell
#!/bin/bash

export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none

export PATH=$HOME/.mozbuild/clang/bin:$PATH

export RUSTUP_TOOLCHAIN=stable

export MOZCONFIG=./mozconfig-b2g-desktop
export MOZ_OBJDIR=./obj-b2g-desktop/

./mach build $1
```

This will provide a b2g binary in `${MOZ_OBJDIR}/dist/bin/b2g`.

## api-daemon

Check https://github.com/capyloon/api-daemon/blob/main/daily.sh to add a new target.

The binary will be under ./target/$TARGET_TRIPLE/release/api-daemon

## ipfsd

Check https://github.com/capyloon/beetle/blob/capyloon/daily.sh to add a new target.

The binary will be under ./target/$TARGET_TRIPLE/release/iroh-one

## b2ghald (optional, even on Linux)

Check https://github.com/capyloon/b2ghald/blob/main/daily.sh to add a new target.

The binary will be under ./target/$TARGET_TRIPLE/release/b2ghald

## Using the new binaries

To use the new binaries, once you have run `./jackady update-prebuilts` you can edit the file `./prebuilts/env` and set the values of the following environement variable to match the paths to your binaries:

- NUTRIA_B2G_BINARY
- NUTRIA_API_DAEMON_BINARY
- NUTRIA_IPFSD_BINARY
- NUTRIA_B2GHALD_BINARY

Happy hacking!


================================================
FILE: apps/.gitignore
================================================
webapps.json
.vscode/

================================================
FILE: apps/branding-b2gos/locales/en-US/branding/brand.ftl
================================================
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

# Based on https://searchfox.org/mozilla-central/source/browser/branding/official/locales/en-US/brand.ftl

-brand-shorter-name = B2G OS
-brand-short-name = B2G OS
-brand-shortcut-name = B2G OS
-brand-full-name = B2G OS
# This brand name can be used in messages where the product name needs to
# remain unchanged across different versions (Nightly, Beta, etc.).
-brand-product-name = B2G OS
-vendor-short-name = B2G OS
trademarkInfo = B2G OS and the B2G OS logos are trademarks of the B2G OS community.


================================================
FILE: apps/branding-b2gos/locales/en-US/branding.ftl
================================================
# Logo screen
logo-title = b2gOS
logo-subtitle = Powered by
logo-starting = Starting…
logo-shutdown = Shutting down…
logo-reboot = Restarting…

# FTU start screen
ftu-welcome = Welcome!
ftu-intro-1 = Thank you for choosing b2gOS! In the following screens we'll guide you to configure your device.
ftu-intro-2 = If you change your mind later, you'll be able to change these parameters in the Settings application.


================================================
FILE: apps/branding-b2gos/locales/en-US/neterror.ftl
================================================
# about:neterror localization.

-brand-name = b2gOS

neterror-title = Oops, we failed to load the site :(
neterror-reload = Try Again

neterror-dnsNotFound = {-brand-name} can't find the server at {$url}
neterror-connectionFailed = {-brand-name} failed to connect to {$url}
neterror-invalidConnection = {-brand-name} encountered an invalid connection with {$url}


================================================
FILE: apps/branding-b2gos/locales/ja/branding/brand.ftl
================================================
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

# Based on https://searchfox.org/mozilla-central/source/browser/branding/official/locales/en-US/brand.ftl

-brand-shorter-name = B2G OS
-brand-short-name = B2G OS
-brand-shortcut-name = B2G OS
-brand-full-name = B2G OS
# This brand name can be used in messages where the product name needs to
# remain unchanged across different versions (Nightly, Beta, etc.).
-brand-product-name = B2G OS
-vendor-short-name = B2G OS
trademarkInfo = B2G OS および B2G OS ロゴは B2G OS コミュニティの登録商標です。


================================================
FILE: apps/branding-b2gos/locales/ja/branding.ftl
================================================
# Logo screen
logo-title = b2gOS
logo-subtitle = Powered by
logo-starting = 起動中…
logo-shutdown = シャットダウン中…
logo-reboot = 再起動中…

# FTU start screen
ftu-welcome = ようこそ!
ftu-intro-1 = b2gOS を選んでいただきありがとうございます! 次の画面で端末の設定をご案内します。
ftu-intro-2 = これらのパラメーターは、後で設定アプリで変更できます。


================================================
FILE: apps/branding-b2gos/locales/ja/neterror.ftl
================================================
# about:neterror localization.

-brand-name = b2gOS

neterror-title = サイトの読み込みに失敗しました :(
neterror-reload = 再試行

neterror-dnsNotFound = {$url} のサーバーを見つけられませんでした
neterror-connectionFailed = {$url} への接続に失敗しました
neterror-invalidConnection = {$url} で不正な接続に遭遇しました


================================================
FILE: apps/branding-b2gos/manifest.webmanifest
================================================
{
  "name": "branding-b2gos",
  "description": "Default b2gos branding",
  "b2g_features": {
    "core": true,
    "role": "system",
    "developer": {
      "name": "The b2gOS team"
    }
  },
  "version": "1.0"
}


================================================
FILE: apps/branding-b2gos/style/branding.css
================================================
/* Style for the b2gOS default branding */

:root {
  --logo-text-color: darkslategray;
  --logo-background-color: wheat;
}

#logo {
  background: radial-gradient(circle, beige 0%, cyan 100%);
  color: rgb(65, 64, 64);
  font-weight: 900;
}

#logo div.title {
  font-size: 48px;
}

#logo div.subtitle {
  font-size: 14px;
}

#logo div.image {
  width: 128px;
  height: 128px;
  animation: logo-anim 6s linear infinite;
  background-image: url(../resources/logo.webp);
  background-size: contain;
}

@keyframes logo-anim {
  25% {
    transform: rotate(-25deg);
  }
  50% {
    transform: rotate(0deg);
  }
  75% {
    transform: rotate(25deg);
  }
  100% {
    transform: rotate(0deg);
  }
}

/* FTU app styling */

.ftu #logo {
  background: none;
}

.ftu #logo div.title {
  font-size: 64px;
  background: linear-gradient(to bottom right, black, gray);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

.ftu #logo div.subtitle {
  display: none;
}

body.ftu {
  background: beige;
  color: var(--logo-text-color);

  --ftu-background: beige;
  --ftu-color: var(--logo-text-color);
}


================================================
FILE: apps/branding-capyloon/locales/en-US/branding/brand.ftl
================================================
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

# Based on https://searchfox.org/mozilla-central/source/browser/branding/official/locales/en-US/brand.ftl

-brand-shorter-name = Capyloon
-brand-short-name = Capyloon
-brand-shortcut-name = Capyloon
-brand-full-name = Capyloon
# This brand name can be used in messages where the product name needs to
# remain unchanged across different versions (Nightly, Beta, etc.).
-brand-product-name = Capyloon
-vendor-short-name = Capyloon
trademarkInfo = Capyloon and the Capyloon logos are trademarks of Capyloon LLC.


================================================
FILE: apps/branding-capyloon/locales/en-US/branding.ftl
================================================
# Logo screen
logo-title = Capyloon
logo-subtitle = Reclaim Your Web!
logo-starting = Starting…
logo-shutdown = Shutting down…
logo-reboot = Restarting…

# FTU start screen
ftu-welcome = Welcome!
ftu-intro-1 = Thank you for choosing Capyloon! In the following screens we'll guide you to configure your device.
ftu-intro-2 = If you change your mind later, you'll be able to change these parameters in the Settings application.


================================================
FILE: apps/branding-capyloon/locales/en-US/neterror.ftl
================================================
# about:neterror localization.

-brand-name = Capyloon

neterror-title = Oops, we failed to load the site :(
neterror-reload = Try Again

neterror-dnsNotFound = {-brand-name} can't find the server at {$url}
neterror-connectionFailed = {-brand-name} failed to connect to {$url}
neterror-invalidConnection = {-brand-name} encountered an invalid connection with {$url}


================================================
FILE: apps/branding-capyloon/locales/ja/branding/brand.ftl
================================================
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

# Based on https://searchfox.org/mozilla-central/source/browser/branding/official/locales/en-US/brand.ftl

-brand-shorter-name = Capyloon
-brand-short-name = Capyloon
-brand-shortcut-name = Capyloon
-brand-full-name = Capyloon
# This brand name can be used in messages where the product name needs to
# remain unchanged across different versions (Nightly, Beta, etc.).
-brand-product-name = Capyloon
-vendor-short-name = Capyloon
trademarkInfo = Capyloon および Capyloon ロゴは Capyloon LLC. の登録商標です。


================================================
FILE: apps/branding-capyloon/locales/ja/branding.ftl
================================================
# Logo screen
logo-title = Capyloon
logo-subtitle = ウェブを取り戻せ!
logo-starting = 起動中…
logo-shutdown = シャットダウン中…
logo-reboot = 再起動中…

# FTU start screen
ftu-welcome = ようこそ!
ftu-intro-1 = Capyloon を選んでいただきありがとうございます! 次の画面で端末の設定をご案内します。
ftu-intro-2 = これらのパラメーターは、後で設定アプリで変更できます。


================================================
FILE: apps/branding-capyloon/locales/ja/neterror.ftl
================================================
# about:neterror localization.

-brand-name = Capyloon

neterror-title = サイトの読み込みに失敗しました :(
neterror-reload = 再試行

neterror-dnsNotFound = {$url} のサーバーを見つけられませんでした
neterror-connectionFailed = {$url} への接続に失敗しました
neterror-invalidConnection = {$url} で不正な接続に遭遇しました


================================================
FILE: apps/branding-capyloon/locales/zh-CN/branding.ftl
================================================
# Logo screen
logo-title = Capyloon
logo-subtitle = Reclaim Your Web!
logo-starting = 正在启动…
logo-shutdown = 正在关机…
logo-reboot = 正在重启…

# FTU start screen
ftu-welcome = 欢迎!
ftu-intro-1 = 感谢您选择Capyloon!在接下来的屏幕中,我们将引导您配置设备。
ftu-intro-2 = 如果您稍后改变主意,可以在“设置”应用程序中更改这些参数。

================================================
FILE: apps/branding-capyloon/locales/zh-CN/browser/appExtensionFields.ftl
================================================
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

## Theme names and descriptions used in the Themes panel in about:addons

# "Auto" is short for automatic. It can be localized without limitations.
extension-default-theme-name-auto=System theme — auto
extension-default-theme-description=Follow the operating system setting for buttons, menus, and windows.

extension-firefox-compact-light-name=Light
extension-firefox-compact-light-description=A theme with a light color scheme.

extension-firefox-compact-dark-name=Dark
extension-firefox-compact-dark-description=A theme with a dark color scheme.

extension-firefox-alpenglow-name=Firefox Alpenglow
extension-firefox-alpenglow-description=Use a colorful appearance for buttons, menus, and windows.

## Colorway Themes
## These themes are variants of a colorway. The colorway is specified in the
## $colorway-name variable.
## Variables
##   $colorway-name (String) The name of a colorway (e.g. Graffiti, Elemental).

extension-colorways-soft-name={ $colorway-name } — Soft
extension-colorways-balanced-name={ $colorway-name } — Balanced
# "Bold" is used in the sense of bravery or courage, not in the sense of
# emphasized text.
extension-colorways-bold-name={ $colorway-name } — Bold


================================================
FILE: apps/branding-capyloon/locales/zh-CN/neterror.ftl
================================================
# about:neterror localization.

-brand-name = Capyloon

neterror-title = 哎呀,我们无法加载该网站 :(
neterror-reload = 重试

neterror-dnsNotFound = {-brand-name} 找不到服务器 {$url}
neterror-connectionFailed = {-brand-name} 无法连接到 {$url}
neterror-invalidConnection = {-brand-name} 与 {$url} 遇到了无效的连接


================================================
FILE: apps/branding-capyloon/manifest.webmanifest
================================================
{
  "name": "branding-capyloon",
  "description": "Capyloon branding",
  "b2g_features": {
    "core": true,
    "role": "system",
    "developer": {
      "name": "The capyloon team"
    }
  },
  "version": "1.0"
}


================================================
FILE: apps/branding-capyloon/style/branding.css
================================================
/* Style for the Capyloon branding */

:root {
  --logo-text-color: darkslategray;
  --logo-background-color: wheat;
  --logo-grad-start: red;
  --logo-grad-end: orange;
}

@font-face {
  font-family: "Lobster";
  font-style: normal;
  font-weight: 400;
  src: local("sans-serif"), url("./Lobster-Regular.ttf") format("truetype");
  font-display: swap;
}

#logo {
  background: black;
  color: var(--logo-text-color);
  font-weight: 900;
}

#logo div.title,
#logo div.subtitle,
#logo .action {
  font-family: "Lobster", cursive;
  background: linear-gradient(
    to bottom right,
    var(--logo-grad-start),
    var(--logo-grad-end)
  );
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

#logo div.title {
  font-size: 48px;
}

#logo div.subtitle {
  font-size: 14px;
}

/**
  mascot.png size is 880x477. Keep aspect ratio here
  since we can't use 'height: auto' when using a
  background image
  */
#logo div.image {
  width: 256px;
  height: 139px;
  background-image: url(../resources/mascot.png);
  background-size: contain;
  margin-top: 2em;
  margin-bottom: 2em;
}

/* FTU app styling */

.ftu #logo {
  background: none;
}

.ftu #logo div.title {
  font-size: 64px;
  background: linear-gradient(
    to bottom right,
    var(--logo-grad-start),
    var(--logo-grad-end)
  );
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

.ftu #logo div.subtitle {
  font-size: 22px;
  background: linear-gradient(
    to bottom right,
    var(--logo-grad-start),
    var(--logo-grad-end)
  );
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

body.ftu {
  background: linear-gradient(to bottom right, wheat, white);
  color: var(--logo-text-color);

  --ftu-background: linear-gradient(to bottom right, wheat, white);
  --ftu-color: var(--logo-text-color);
}

.branded-text {
  font-family: "Lobster", cursive;
  background: linear-gradient(
    to bottom right,
    var(--logo-grad-start),
    var(--logo-grad-end)
  );
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}


================================================
FILE: apps/camera/index.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta
      name="viewport"
      content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no"
    />
    <meta name="theme-color" content="black" />
    <title data-l10n-id="page-title"></title>

    <meta name="defaultLanguage" content="en-US" />
    <meta name="availableLanguages" content="en-US,zh-CN,ja" />
    <link rel="icon" href="icons/camera.svg" />
    <link rel="localization" href="./locales/{locale}/main.ftl" />

    <link rel="stylesheet" href="style/index.css" type="text/css" />

    <script src="js/config.js"></script>
    <script src="js/bootstrap.js"></script>
  </head>
  <body>
    <video id="preview" class="center" controls autoplay></video>
    <div id="qr-overlay" class="hidden">
      <sl-tag pill data-l10n-id="point-qr-code"></sl-tag>
    </div>
    <div id="no-camera" class="hidden">
      <sl-icon name="camera-off"></sl-icon>
      <span data-l10n-id="no-camera"></span>
    </div>
    <div id="controls" class="hidden">
      <div class="left ">
        <sl-icon id="front-back" name="switch-camera"></sl-icon>
      </div>
      <div class="center">
        <sl-icon class="hide-qr-scan" id="shutter" name="aperture"></sl-icon>
      </div>
      <div class="right">
        <div id="last-container" class="hide-qr-scan" >
          <img id="last-image" /><sl-icon name="upload"></sl-icon>
        </div>
      </div>
    </div>
  </body>
</html>


================================================
FILE: apps/camera/js/bootstrap.js
================================================
const kDeps = [
  {
    name: "main",
    kind: "virtual",
    deps: [
      "shared-fluent",
      "content manager",
      "shoelace-light-theme",
      "shoelace-setup",
      "shoelace-tag",
      "shoelace-icon",
    ],
  },
  {
    name: "api daemon core",
    kind: "sharedWindowModule",
    param: ["js/api_daemon.js", "apiDaemon", "ApiDaemon"],
  },
  {
    name: "content manager",
    kind: "sharedWindowModule",
    param: ["js/content_manager.js", "contentManager", "ContentManager"],
    deps: ["api daemon core"],
  },
  {
    name: "activity manager",
    kind: "sharedModule",
    param: ["js/activity_manager.js", ["ActivityManager"]],
  },
];

function log(msg) {
  console.log(`CameraApp: ${msg}`);
}

// A promise that resolves with the cameraManager when it's ready.
var cameraReady;

var cameraManager;

document.addEventListener("DOMContentLoaded", async () => {
  console.log(`DOMContentLoaded`);
  await depGraphLoaded;
  graph = new ParallelGraphLoader(addSharedDeps(addShoelaceDeps(kDeps)));

  var onCameraReady;
  cameraReady = new Promise((resolve) => {
    onCameraReady = resolve;
  });

  await graph.waitForDeps("activity manager");
  // Configure activity handlers.
  let activities = new ActivityManager({
    "scan-qr-code": captureQRCode,
    "pick": pickImage,
  });

  await graph.waitForDeps("main");

  await contentManager.as_superuser();

  let cameraModule;

  // Import the base class in scope.
  const baseModule = await import("./camera_base.js");
  window.CameraBase = baseModule.CameraBase;

  // Load the platform specific module.
  // When scanning a QR Code always use the webrtc fallback because it
  // reliably provides the "loadeddata" event.
  if (navigator.b2g.cameras && location.hash !== "#activity-scan-qr-code") {
    cameraModule = await import("./camera_gonk.js");
  } else {
    cameraModule = await import("./camera_webrtc.js");
  }

  cameraManager = new cameraModule.Camera(window["preview"]);

  let count = await cameraManager.getCameraCount();
  log(`Found ${count} cameras.`);
  if (count == 0) {
    window["no-camera"].classList.remove("hidden");
    return;
  }

  window["controls"].classList.remove("hidden");
  if (count == 1) {
    window["front-back"].remove();
  } else {
    window["front-back"].onclick = async () => {
      await cameraManager.nextCamera();
    };
  }

  window["shutter"].addEventListener("click", takePicture);

  // Kick-off preview with the first/default camera.
  await cameraManager.nextCamera();
  onCameraReady(cameraManager);
});

async function takePicture() {
  await cameraManager.takePicture();
}

async function pickImage() {
  return new Promise((resolve, reject) => {
    // Re-bind the shutter button
    window["shutter"].removeEventListener("click", takePicture);

    window["shutter"].onclick = async () => {
      try {
        let blob = await cameraManager.takePicture(true);
        resolve(blob);
      } catch (e) {
        reject();
      }
      window.close();
    };
  });
}

async function captureQRCode() {
  window["qr-overlay"].classList.remove("hidden");

  return new Promise(async (resolve) => {
    const { QrCodeScanner } = await import(`./qr_code.js`);
    let scanner = new QrCodeScanner(cameraReady);
    scanner.addEventListener("found", (event) => {
      // log(`QR result: ${event.detail}`);
      resolve(event.detail);
      window.close();
    });
  });
}


================================================
FILE: apps/camera/js/camera_base.js
================================================
// Base class for camera managers.

export class CameraBase {
  constructor(preview) {
    this.preview = preview;
  }

  log(msg) {
    console.log(`CameraBase: ${msg}`);
  }

  error(msg) {
    console.error(`CameraBase: ${msg}`);
  }

  // Return a proper CSS transform to apply to the video preview element based on
  // the preview stream resolution and sensor orientation.
  // Tis scales the preview to best fill the screen. We take the min
  // of x-scale and y-scale to keep the same aspect ratio.
  // We need to take into account the sensor angle here too.
  // TODO: deal with screen orientation.
  getPreviewTransform({ width = 0, height = 0, angle = 0, name = "front" }) {
    let fullWidth = window.innerWidth;
    let fullHeight = window.innerHeight;
    this.log(`preview: width=${width} height=${height} angle=${angle}`);
    this.log(`screen:  width=${fullWidth} height=${fullHeight}`);

    let xScale = 0;
    let yScale = 0;

    if (angle == 90 || angle == 270) {
      // Change of main axis.
      xScale = fullHeight / width;
      yScale = fullWidth / height;
    } else {
      xScale = fullWidth / width;
      yScale = fullHeight / height;
    }

    let scale = Math.min(xScale, yScale);

    log(
      `angle=${angle} xScale=${xScale} yScale=${yScale} screen=${fullWidth}x${fullHeight}`
    );

    // Mirror the video if using the front camera, otherwise just scale it.
    let transform = "";
    if (name === "front" || name === "user") {
      transform += `scale(-${scale}, ${scale}) `;
    } else {
      transform += `scale(${scale}) `;
    }

    // Compensate for the sensor orientation.
    transform += `rotate(${angle}deg)`;

    return transform;
  }

  // Saves a blob picture in the content manager in the "photos" container.
  async savePicture(blob) {
    let ext = blob.type == "image/jpeg" ? "jpg" : "png";

    let now = new Date();
    now = new Date(now.getTime() - now.getTimezoneOffset() * 60000);
    // Format the date such as: 2020-10-02-16-23-40
    const filename = `${now
      .toISOString()
      .slice(0, -5)
      .replace(/[:T]/g, "-")}.${ext}`;

    let container = await contentManager.ensureTopLevelContainer("photos");

    this.log(`Photos container is ${container}, adding ${filename}`);

    contentManager.create(container, filename, blob).then(
      (resource) => {
        this.log(`Photo saved in camera/${filename}`);
        document.getElementById("last-image").src =
          resource.variantUrl("default");
        let container = document.getElementById("last-container");
        container.classList.add("shown");
        container.onclick = async () => {
          // Copy the resource to the "shared on ipfs" folder and let the IPFS
          // publisher module take care of the actual upload.
          try {
            let target = await contentManager.ensureTopLevelContainer(
              "shared on ipfs"
            );
            let svc = await contentManager.getService();
            let _meta = await svc.copyResource(resource.meta.id, target);
          } catch (e) {
            this.error(JSON.stringify(e));
          }
        };
      },
      (error) => {
        this.error(`Error saving photo: ${JSON.stringify(error)}`);
      }
    );
  }

  startShutterEffect() {
    this.preview.classList.add("shutter");
  }

  endShutterEffect() {
    this.preview.classList.remove("shutter");
  }
}


================================================
FILE: apps/camera/js/camera_gonk.js
================================================
// Camera manager class for Gonk devices.

export class Camera extends CameraBase {
  // @preview is the DOM <video> element used for the preview.
  constructor(preview) {
    super(preview);
    this.log(`constructor ${preview}`);
    this.preview = preview;

    // The set of available cameras
    this.cameras = navigator.b2g.cameras.getListOfCameras();
    // Currently selected one.
    this.currentCamera = -1;

    // The current CameraControl object.
    this.camera = null;
  }

  log(msg) {
    console.log(`CameraGonk: ${msg}`);
  }

  error(msg) {
    console.error(`CameraGonk: ${msg}`);
  }

  async getCameraCount() {
    return this.cameras.length;
  }

  async nextCamera() {
    if (this.cameras.length == 0) {
      return;
    }

    if (this.currentCamera == -1) {
      this.currentCamera = 0;
    } else {
      this.currentCamera = (this.currentCamera + 1) % this.cameras.length;
    }
    await this.useCamera(this.cameras[this.currentCamera]);
  }

  async useCamera(name) {
    this.log(`useCamera ${name}`);

    if (this.preview.srcObject) {
      await this.preview.srcObject.release();
      this.preview.srcObject = null;
      this.log(`previous preview released`);
    }

    let params;
    try {
      params = await navigator.b2g.cameras.getCamera(name, {
        mode: "picture",
      });
    } catch (e) {
      this.log(`Failed to getCamera ${name}: ${e}`);
      return;
    }

    this.camera = params.camera;
    let config = params.configuration;

    this.log(`Configuration: ${JSON.stringify(config)}`);
    let previewSize = config.previewSize;

    let transform = this.getPreviewTransform({
      width: previewSize.width,
      height: previewSize.height,
      angle: this.camera.sensorAngle,
      name,
    });
    log(`Setting preview.style to "transform: ${transform}"`);
    this.preview.style = `transform: ${transform}`;
    this.preview.srcObject = this.camera;
    this.preview.play();
  }

  async takePicture(returnBlob = false) {
    if (!this.camera) {
      this.error(`Can't takePicture(): no camera available.`);
      return;
    }

    try {
      this.startShutterEffect();
      let blob = await this.camera.takePicture();
      this.log(`Got picture blob: ${blob.size} ${blob.type}`);
      this.camera.resumePreview();
      if (returnBlob) {
        return blob;
      } else {
        await this.savePicture(blob);
      }
    } catch (e) {
      this.error(`takePicture() failed: ${e}`);
      this.camera.resumePreview();
    }
    this.endShutterEffect();
  }
}


================================================
FILE: apps/camera/js/camera_webrtc.js
================================================
// Camera manager class using getUserMedia apis.

export class Camera extends CameraBase {
  // @preview is the DOM <video> element used for the preview.
  constructor(preview) {
    super(preview);
    this.log(`constructor ${preview}`);
    this.preview = preview;

    // The set of available cameras
    this.cameras = null;

    // Currently selected one.
    this.currentCamera = -1;

    // The MediaStream object for the current camera.
    this.camera = null;
  }

  log(msg) {
    console.log(`CameraWebrtc: ${msg}`);
  }

  error(msg) {
    console.error(`CameraWebrtc: ${msg}`);
  }

  async getCameraCount() {
    try {
      let devices = await navigator.mediaDevices.enumerateDevices();
      this.cameras = devices.filter((device) => {
        this.log(`getCameraCount device: ${JSON.stringify(device)}`);
        return device.kind === "videoinput";
      });
      return this.cameras.length;
    } catch (e) {
      return 0;
    }
  }

  async nextCamera() {
    if (this.cameras.length == 0) {
      return;
    }
    if (this.currentCamera == -1) {
      this.currentCamera = 0;
    } else {
      this.currentCamera = (this.currentCamera + 1) % this.cameras.length;
    }
    await this.useCamera(this.cameras[this.currentCamera]);
  }

  async useCamera(device) {
    this.log(`useCamera ${device.deviceId}`);
    let constraints = { video: { deviceId: { exact: device.deviceId } } };
    this.camera = await navigator.mediaDevices.getUserMedia(constraints);

    let videoTrack = this.camera.getVideoTracks()[0];
    this.log(`videoTrack is ${videoTrack}`);
    let settings = videoTrack.getSettings();
    this.log(`video settings for ${device.label}: ${JSON.stringify(settings)}`);

    if (this.preview.srcObject) {
      this.preview.srcObject = null;
      this.log(`previous preview released`);
    }

    let angle = 0;

    // Special case back camera detected on the Pinephone.
    if (device.label == "sun6i-csi") {
      angle = 90;
    }

    // workaround PPP bug.
    const swapDims = device.label == "imx258" || device.label == "ov8858";

    let transform = this.getPreviewTransform({
      width: swapDims ? settings.height : settings.width,
      height: swapDims ? settings.width : settings.height,
      angle,
      name: settings.facingMode,
    });
    this.log(`Setting preview.style to "transform: ${transform}"`);
    this.preview.style = `transform: ${transform}`;
    this.preview.srcObject = this.camera;
    this.preview.play();
  }

  async takePicture(returnBlob = false) {
    const imageCapture = new ImageCapture(this.camera.getVideoTracks()[0]);
    return new Promise((resolve, reject) => {
      imageCapture.onphoto = async (event) => {
        this.endShutterEffect();
        if (returnBlob) {
          resolve(event.data);
        } else {
          await this.savePicture(event.data);
          resolve();
        }
      };

      imageCapture.onerror = reject;

      this.startShutterEffect();
      imageCapture.takePhoto();
    });
  }
}


================================================
FILE: apps/camera/js/config.js
================================================
// We run on the default port on device.
const isDevice = location.port === "";

window.config = {
  isDevice,
  port: isDevice ? 80 : 8081,
};

function addStylesheet(url) {
  let link = document.createElement("link");
  link.setAttribute("rel", "stylesheet");
  link.setAttribute("href", url);
  document.head.appendChild(link);
  return link;
}

function loadScript(url, defer = false) {
  let script = document.createElement("script");
  script.setAttribute("src", url);
  if (defer) {
    script.setAttribute("defer", "true");
  }
  document.head.appendChild(script);
  return script;
}

function loadSharedScript(url) {
  return loadScript(`http://shared.localhost:${location.port}/${url}`);
}

// Load <link rel="stylesheet" href="style/{device|desktop}.css" />
addStylesheet(`/style/${isDevice ? "device" : "desktop"}.css`);

let depGraphLoaded = new Promise((resolve) => {
  loadSharedScript("js/dep_graph.js").onload = resolve;
});


================================================
FILE: apps/camera/js/qr_code.js
================================================
// QR Decoding support.
// TODO: check if we should move that into a Web Worker.

export class QrCodeScanner extends EventTarget {
  constructor(cameraReady) {
    super();
    cameraReady.then((cameraManager) => {
      this.cameraManager = cameraManager;
      this.start();
    });
    this.ready = false;
    this.module = null;
  }

  async start() {
    // hide all the controls since we will be in "automatic" mode.
    window["controls"].classList.add("hide-qr-scan");

    // Wait for some data to be loaded in the video preview.
    window.preview.addEventListener(
      "loadeddata",
      () => {
        this.ready = true;
        this.scheduleFrame();
      },
      { once: true }
    );

    await this.initWasmDecoder();
  }

  async initWasmDecoder() {
    this.module = await import(
      `http://camera.localhost:${window.config.port}/qrdecoder/qrdecoder.js`
    );
  }

  scheduleFrame() {
    window.requestAnimationFrame(() => {
      this.processFrame();
    });
  }

  async processFrame() {
    // Grab a frame, and check if it contains a QR-code.
    // If not, schedule a new frame capture.
    if (!this.ready || this.cameraManager?.currentCamera == -1) {
      this.scheduleFrame();
      return;
    }

    try {
      let bitmap = await createImageBitmap(window.preview);
      let { width, height } = bitmap;
      if (!this.ctx) {
        let canvas = new OffscreenCanvas(width, height);
        this.ctxt = canvas.getContext("2d");
      }
      this.ctxt.drawImage(bitmap, 0, 0, width, height);
      let imageData = this.ctxt.getImageData(0, 0, width, height);
      // let start = Date.now();
      let result = this.module?.decodeQr(imageData.data, width, height);
      // let elapsed = Date.now() - start;
      // console.log(`QR: decoding took ${elapsed}ms`);
      if (!result) {
        this.scheduleFrame();
      } else {
        navigator.vibrate(200);
        this.dispatchEvent(new CustomEvent("found", { detail: result }));
      }
    } catch (e) {
      // Just in case...
      log(`QR decoding error: ${e}`);
      // this.scheduleFrame();
    }
  }

  resume() {
    this.scheduleFrame();
  }
}


================================================
FILE: apps/camera/locales/en-US/main.ftl
================================================
# Main page
page-title = Camera
point-qr-code = Point At a QR Code
no-camera = No Camera Found!


================================================
FILE: apps/camera/locales/ja/main.ftl
================================================
# Main page
page-title = カメラ
point-qr-code = QR コードに合わせてください
no-camera = カメラが見つかりません


================================================
FILE: apps/camera/locales/zh-CN/main.ftl
================================================
# Main page
page-title = 相机
point-qr-code = 扫描二维码


================================================
FILE: apps/camera/manifest.webmanifest
================================================
{
  "name": "Camera",
  "description": "Take Beautiful Pictures",
  "start_url": "/index.html",
  "icons": [
    {
      "src": "/icons/camera.svg",
      "type": "image/svg",
      "sizes": "any"
    }
  ],
  "b2g_features": {
    "core": true,
    "developer": {
      "name": "The Capyloon team"
    },
    "permissions": {
      "audio-capture": {},
      "camera": {},
      "content-manager": {},
      "dweb": {},
      "themeable": {},
      "video-capture": {}
    },
    "serviceworker": {
      "script_url": "sw.js"
    },
    "activities": {
      "scan-qr-code": {
        "returnValue": true
      },
      "pick": {
        "filters": {
          "type": { "required": true, "value": ["image"] }
        },
        "returnValue": true
      }
    }
  },
  "version": "1.0"
}


================================================
FILE: apps/camera/qrdecoder/qrdecoder.js
================================================

function lowering0Callee(level, msg) {
  switch (level) {
    case "info":
      console.info(msg);
      break;
    case "debug":
      console.debug(msg);
      break;
    case "error":
      console.error(msg);
      break;
  }
}

const instantiateCore = WebAssembly.instantiate;

const utf8Decoder = new TextDecoder();

function toUint32(val) {
  return val >>> 0;
}

let dv = new DataView(new ArrayBuffer());
const dataView = (mem) =>
  dv.buffer === mem.buffer ? dv : (dv = new DataView(mem.buffer));

const fetchCompile = (url) => fetch(url).then(WebAssembly.compileStreaming);

const base64Compile = (str) =>
  WebAssembly.compile(Uint8Array.from(atob(str), (b) => b.charCodeAt(0)));

let exports0;
let exports1;
let memory0;

function lowering0(arg0, arg1, arg2) {
  let enum0;
  switch (arg0) {
    case 0: {
      enum0 = "info";
      break;
    }
    case 1: {
      enum0 = "debug";
      break;
    }
    case 2: {
      enum0 = "error";
      break;
    }
  }
  const ptr1 = arg1;
  const len1 = arg2;
  const result1 = utf8Decoder.decode(
    new Uint8Array(memory0.buffer, ptr1, len1)
  );
  lowering0Callee(enum0, result1);
}
let exports2;
let realloc0;
let postReturn0;

function decodeQr(arg0, arg1, arg2) {
  const val0 = arg0;
  const len0 = val0.byteLength;
  const ptr0 = realloc0(0, 0, 1, len0 * 1);
  const src0 = new Uint8Array(val0.buffer || val0, val0.byteOffset, len0 * 1);
  new Uint8Array(memory0.buffer, ptr0, len0 * 1).set(src0);
  const ret = exports1["decode-qr"](ptr0, len0, toUint32(arg1), toUint32(arg2));
  let variant2;
  if (dataView(memory0).getUint8(ret + 0, true)) {
    const ptr1 = dataView(memory0).getInt32(ret + 4, true);
    const len1 = dataView(memory0).getInt32(ret + 8, true);
    const result1 = utf8Decoder.decode(
      new Uint8Array(memory0.buffer, ptr1, len1)
    );
    variant2 = result1;
  } else {
    variant2 = null;
  }
  postReturn0(ret);
  return variant2;
}

export { decodeQr };

const $init = (async () => {
  const module0 = fetchCompile(
    new URL("./qrdecoder.wasm", import.meta.url)
  );
  const module1 = base64Compile(
    "AGFzbQEAAAABBwFgA39/fwADAgEABAUBcAEBAQcQAgEwAAAIJGltcG9ydHMBAAoPAQ0AIAAgASACQQARAAALAC0JcHJvZHVjZXJzAQxwcm9jZXNzZWQtYnkBDXdpdC1jb21wb25lbnQFMC43LjQ="
  );
  const module2 = base64Compile(
    "AGFzbQEAAAABBwFgA39/fwACFQIAATAAAAAIJGltcG9ydHMBcAEBAQkHAQBBAAsBAAAtCXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AQ13aXQtY29tcG9uZW50BTAuNy40ABwEbmFtZQAVFHdpdC1jb21wb25lbnQ6Zml4dXBz"
  );
  Promise.all([module0, module1, module2]).catch(() => {});
  ({ exports: exports0 } = await instantiateCore(await module1));
  ({ exports: exports1 } = await instantiateCore(await module0, {
    console: {
      msg: exports0["0"],
    },
  }));
  memory0 = exports1.memory;
  ({ exports: exports2 } = await instantiateCore(await module2, {
    "": {
      $imports: exports0.$imports,
      0: lowering0,
    },
  }));
  realloc0 = exports1.cabi_realloc;
  postReturn0 = exports1["cabi_post_decode-qr"];
})();

await $init;


================================================
FILE: apps/camera/style/desktop.css
================================================
html,
body {
  font-size: 4mm;
}

================================================
FILE: apps/camera/style/device.css
================================================
html,
body {
  font-size: 4mm;
}

================================================
FILE: apps/camera/style/index.css
================================================
html,
body {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  overflow: hidden;
  user-select: none;

  background-color: black;
  color: var(--sl-color-neutral-700);

  display: flex;
  justify-content: center;
  align-items: center;
  color: var(--sl-color-neutral-700);
}

* {
  box-sizing: border-box;
}

#controls {
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  text-align: center;
  font-size: 2em;
  padding: 0.5em;
}

#controls.hide-qr-scan *.hide-qr-scan {
  display: none;
}

#controls > * {
  flex: 1;
}

.center {
  display: flex;
  justify-content: center;
  align-items: center;
}

#preview.shutter {
  opacity: 0;
  transition: opacity 10ms ease-in;
}

#last-image {
  width: 64px;
}

#last-container {
  border: 1px solid gray;
  border-radius: 5px;
  padding: 3px;
  display: none;
  gap: 0.5em;
  align-items: center;
}

#last-container.shown {
  display: flex;
}

#qr-overlay.hidden,
#no-camera.hidden,
#controls.hidden {
  display: none;
}

#no-camera {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  font-size: 1.5em;
}

#qr-overlay {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  display: flex;
  justify-content: center;
}

#qr-overlay sl-tag {
  margin-top: 2em;
}


================================================
FILE: apps/camera/sw.js
================================================
const HAS_RETURN_VALUE_ACTIVITIES = ["pick", "scan-qr-code"];
const ACTIVITIES_DISPOSITION = { "scan-qr-code": "inline", pick: "inline" };

importScripts(`http://shared.localhost:${location.port}/js/activity_sw.js`);


================================================
FILE: apps/contacts/components/contact_info.css
================================================
/* Styling for the <contact-info> element */

:host .main {
  display: flex;
  gap: 0.5em;
  align-items: center;
  padding-left: 0.5em;
  padding-right: 0.5em;
}

:host .details {
  font-size: 1.25rem;
  line-height: 2rem;
  padding-left: 3em;
}

:host .actions {
  font-size: 1.5rem;
  display: flex;
  justify-content: right;
  gap: 1em;
}

:host *.hidden {
  display: none;
}

:host {
  border: solid var(--sl-panel-border-width) transparent;
  border-radius: var(--sl-border-radius-medium);
}

:host(:hover) {
  border: solid var(--sl-panel-border-width) var(--sl-panel-border-color);
}

:host .comm-item {
  display: flex;
  gap: 0.25em;
  align-items: center;
}

:host .did {
  font-size: var(--sl-font-size-small);
  font-weight: var(--sl-font-weight-light);
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}

:host .flex-fill {
  flex: 1;
}

:host sl-button.no-apps {
  display: none;
}


================================================
FILE: apps/contacts/components/contact_info.js
================================================
// Custom element for a <contact-info> element

export class ContactInfo extends LitElement {
  constructor(contact, apps) {
    super();
    this.contact = contact;
    this.known = [];
    this.paired = [];
    this.log(`constructor: ${contact.id} ${contact.photoUrl}`);
    this.opened = false;
    this.apps = apps;
  }

  log(msg) {
    console.log(`ContactInfo: ${msg}`);
  }

  static get properties() {
    return {
      contact: { state: true },
      known: { state: true },
      paired: { state: true },
      apps: { state: true },
    };
  }

  switchMode() {
    let details = this.shadowRoot.querySelector(".details");
    let actions = this.shadowRoot.querySelector(".actions");

    this.opened = !this.opened;
    if (this.opened) {
      details.classList.remove("hidden");
      actions.classList.remove("hidden");
    } else {
      details.classList.add("hidden");
      actions.classList.add("hidden");
    }
  }

  onAction(event) {
    let action = event.target.dataset.action;
    this.dispatchEvent(new CustomEvent(`${action}-contact`));
  }

  updatePeerInfo(known, paired) {
    this.known = known;
    this.paired = paired;
  }

  updatePeerApps(enabled) {
    this.apps = enabled;
  }

  launchTile(event) {
    let index = event.target.dataset.pairedIndex;
    let session = this.paired[index];

    this.log(`launching tile for session ${index}`);
    try {
      let act = new WebActivity("p2p-tile-start", { sessionId: session.id });
      act.start();
    } catch (e) {
      console.error(
        `p2p: failed to launch tile for session ${session.id}: ${e}`
      );
    }
    event.stopPropagation();
    event.preventDefault();
  }

  updated() {
    document.l10n.translateFragment(this.shadowRoot);
  }

  emptyArray(array) {
    let res = true;
    array.forEach((item) => {
      if (item.length > 0) {
        // console.log(`Found ${item}, len=${item.length}`);
        res = false;
      }
    });
    return res;
  }

  render() {
    let initials = this.contact.name
      .split(" ")
      .map((s) => s[0])
      .join("");

    return html`<link rel="stylesheet" href="components/contact_info.css" />
      <div class="main" @click="${this.switchMode}">
        <sl-avatar
          initials="${initials}"
          image="${this.contact.photoUrl}?${Math.random()}"
        ></sl-avatar>
        <span>${this.contact.name}</span>
        <div class="flex-fill"></div>
        ${this.paired.map((_paired, index) => {
          return html`<sl-button
            data-l10n-id="contact-launch-app"
            data-paired-index="${index}"
            @click="${this.launchTile}"
            class="${this.apps ? "" : "no-apps"}"
            size="small"
            variant="success"
          ></sl-button>`;
        })}
      </div>
      <div class="details hidden">
        <div class="${this.emptyArray(this.contact.phone) ? "hidden" : ""}">
          ${this.contact.phone.map(
            (phone) =>
              html`<div class="comm-item">
                <sl-icon name="phone"></sl-icon
                ><a href="tel://${phone}">${phone}</a>
              </div>`
          )}
        </div>
        <div class="${this.emptyArray(this.contact.phone) ? "hidden" : ""}">
          ${this.contact.phone.map(
            (phone) =>
              html`<div class="comm-item">
                <sl-icon name="message-circle"></sl-icon>
                <a href="sms://${phone}">${phone}</a>
              </div>`
          )}
        </div>
        <div class="${this.emptyArray(this.contact.email) ? "hidden" : ""}">
          ${this.contact.email.map(
            (email) =>
              html`<div class="comm-item">
                <sl-icon name="mail"></sl-icon>
                <a href="mailto:${email}">${email}</a>
              </div>`
          )}
        </div>
        <div>
          ${this.contact.did.map(
            (did) =>
              html`<div class="comm-item did">
                <sl-icon name="key"></sl-icon>
                ${did.name} | ${did.uri}
              </div>`
          )}
        </div>
      </div>
      <div class="actions hidden">
        <sl-icon-button
          @click="${this.onAction}"
          data-action="edit"
          name="edit"
        ></sl-icon-button>
        <sl-icon-button
          @click="${this.onAction}"
          data-action="publish"
          name="qr-code"
        ></sl-icon-button>
        <sl-icon-button
          @click="${this.onAction}"
          data-action="delete"
          name="trash-2"
        ></sl-icon-button>
      </div> `;
  }
}

customElements.define("contact-info", ContactInfo);


================================================
FILE: apps/contacts/index.html
================================================
<!DOCTYPE html>
<html lang="en">
  <head>
    <title data-l10n-id="title"></title>
    <meta charset="utf-8" />
    <meta name="theme-color" content="#ffffff" />
    <link rel="icon" href="icons/contacts.svg" />
    <link rel="manifest" href="manifest.webmanifest" />
    <link rel="stylesheet" href="style/main.css" />

    <meta name="defaultLanguage" content="en-US" />
    <meta name="availableLanguages" content="en-US,zh-CN,ja" />
    <link rel="localization" href="locales/{locale}/main.ftl" />

    <script src="js/config.js"></script>
    <script src="js/dependencies.js"></script>
    <script src="js/main.js"></script>
  </head>
  <body>
    <div class="main">
      <h2
        id="main-title"
        data-l10n-id="main-title"
        data-l10n-args='{"count":0}'
      ></h2>
      <div id="contact-list"></div>
      <div id="float-buttons">
        <sl-button id="action-scan" variant="primary" pill>
          <span data-l10n-id="btn-scan"></span>
          <sl-icon name="qr-code" slot="suffix"></sl-icon>
        </sl-button>
        <sl-button id="action-add-contact" variant="primary" pill>
          <span data-l10n-id="btn-add"></span>
          <sl-icon name="plus" slot="suffix"></sl-icon>
        </sl-button>
      </div>
      <sl-dialog id="publish-dialog" class="hidden">
        <span slot="label" data-l10n-id="publish-label"></span>
        <sl-progress-bar id="publish-progress" indeterminate></sl-progress-bar>
        <sl-qr-code id="publish-qr" class="hidden"></sl-qr-code>
        <div id="peers-section">
          <h2 data-l10n-id="peers-section-title"></h2>
          <sl-menu id="peers"></sl-menu>
        </div>
        <sl-button
          id="publish-btn-ok"
          slot="footer"
          variant="primary"
          data-l10n-id="btn-ok"
        ></sl-button>
      </sl-dialog>
    </div>

    <!-- The add contact panel -->
    <template id="add-panel-tmpl">
      <div class="drawer-content">
        <h2 data-l10n-id="add-contact-title"></h2>
        <sl-avatar id="add-contact-avatar"></sl-avatar>
        <form id="add-contact-form">
          <sl-input
            id="add-contact-name"
            data-l10n-id="add-contact-name"
            data-l10n-attrs="label"
          ></sl-input>
          <sl-input
            id="add-contact-phone"
            data-l10n-id="add-contact-phone"
            data-l10n-attrs="label"
          ></sl-input>
          <sl-input
            id="add-contact-email"
            data-l10n-id="add-contact-email"
            data-l10n-attrs="label"
          ></sl-input>
          <div id="add-contact-identity-section">
            <span data-l10n-id="add-contact-identity"></span>
            <ul id="add-contact-did-list"></ul>
          </div>
          <div id="add-contact-autoconnect-section">
            <sl-select value="prompt" id="add-contact-autoconnect-select">
              <span
                slot="label"
                data-l10n-id="add-contact-autoconnect-title"
              ></span>
              <sl-option
                value="prompt"
                data-l10n-id="add-contact-autoconnect-prompt"
                >Prompt</sl-option
              >
              <sl-option
                value="accept"
                data-l10n-id="add-contact-autoconnect-accept"
                >Always Accept</sl-option
              >
              <sl-option
                value="reject"
                data-l10n-id="add-contact-autoconnect-reject"
                >Always Reject</sl-option
              >
            </sl-select>
          </div>
          <sl-switch
            id="add-contact-personnal-card-switch"
            data-l10n-id="personnal-card"
          ></sl-switch>
          <div class="hidden" id="add-contact-did-section">
            <sl-button
              id="add-contact-update-dids"
              data-l10n-id="update-dids"
            ></sl-button>
          </div>
        </form>
      </div>
      <div slot="footer">
        <sl-button
          id="add-contact-cancel"
          data-l10n-id="btn-cancel"
        ></sl-button>
        <sl-button
          id="add-contact-ok"
          variant="primary"
          data-l10n-id="btn-ok"
        ></sl-button>
      </div>
    </template>
  </body>
</html>


================================================
FILE: apps/contacts/js/add_panel.js
================================================
// New contact panel

const _elems = new Map();
function elem(id) {
  let res = _elems.get(id);
  if (!res) {
    res = document.getElementById(`add-contact-${id}`);
    _elems.set(id, res);
  }
  return res;
}

const ALL_INPUTS = ["name", "phone", "email"];

class AddContactPanel {
  constructor() {
    this.log("constructor");
    this.panel = document.getElementById("add-panel");
    this.ready = false;
    this.panel.addEventListener("panel-ready", () => {
      this.init();
    });
    this.panel.addEventListener("edit-contact", (event) => {
      this.editContact(event.detail);
    });
    this.inputs = [];
    this.photo = null;
    this.photoUrl = null;

    this.contactsManager = contentManager.getContactsManager();
  }

  log(msg) {
    console.log(`AddContactPanel: ${msg}`);
  }

  error(msg) {
    console.error(`AddContactPanel: ${msg}`);
  }

  goToMainScreen() {
    this.clear();
    history.back();
  }

  async editContact(contact) {
    this.contactId = contact.id;
    this.inputs["name"].value = contact.name || "";
    this.inputs["phone"].value = contact.phone[0] || "";
    this.inputs["email"].value = contact.email[0] || "";
    if (contact.photo) {
      this.photo = contact.photo;
      this.setAvatar();
    } else if (contact.photoUrl) {
      let response = await fetch(contact.photoUrl);
      this.photo = await response.blob();
      this.setAvatar();
    }
    this.updateDidList(contact.did || []);

    this.cardSwitch.checked = contact.isOwn;
    if (this.cardSwitch.checked) {
      elem("did-section").classList.remove("hidden");
    } else {
      elem("did-section").classList.add("hidden");
    }

    this.autoconnectBehavior.value = contact.autoconnect || "prompt";
  }

  setAvatar() {
    if (this.photo) {
      this.photoUrl = URL.createObjectURL(this.photo);
      this.avatar.setAttribute("image", this.photoUrl);
    }
  }

  async handleEvent(event) {
    if (event.target == this.btnCancel) {
      this.goToMainScreen();
    } else if (event.target == this.btnOk) {
      let contact = this.contactsManager.newContact();
      contact.isOwn = this.cardSwitch.checked;
      contact.name = this.inputs["name"].value;
      contact.phone = [this.inputs["phone"].value];
      contact.email = [this.inputs["email"].value];
      contact.photo = this.photo;
      contact.autoconnect = this.autoconnectBehavior.value;
      contact.did = [];
      elem("did-list")
        .querySelectorAll("li")
        .forEach((item) => {
          contact.did.push(item.did);
        });

      if (this.contactId) {
        await this.contactsManager.update(this.contactId, contact);
      } else {
        await this.contactsManager.add(contact);
      }
      this.goToMainScreen();
    } else if (event.target == this.avatar) {
      // Trigger a 'pick image' activity.
      let picker = new WebActivity("pick", { type: "image" });
      try {
        this.photo = await picker.start();
        this.setAvatar();
      } catch (e) {}
    } else if (event.target == this.cardSwitch) {
      if (this.cardSwitch.checked) {
        elem("did-section").classList.remove("hidden");
      } else {
        elem("did-section").classList.add("hidden");
      }
    } else if (event.target == this.btnUpdateDid) {
      await this.updateIdentity();
    }
  }

  updateDidList(dids) {
    let list = elem("did-list");
    list.innerHTML = "";
    dids.forEach((did) => {
      if (did.name == "superuser") {
        return;
      }
      let item = document.createElement("li");
      item.did = did;
      item.textContent = `${did.name} | ${did.uri}`;
      list.append(item);
    });
  }

  async updateIdentity() {
    let dweb = await apiDaemon.getDwebService();
    let dids = await dweb.getDids();
    this.updateDidList(dids);
  }

  clear() {
    if (this.photoUrl) {
      URL.revokeObjectURL(this.photoUrl);
    }
    this.photo = null;
    this.photoUrl = null;
    this.contactId = null;
    this.avatar.removeAttribute("image");
    elem("form").reset();
  }

  async init() {
    this.log("init");
    if (this.ready) {
      return;
    }

    this.btnOk = elem("ok");
    this.btnOk.addEventListener("click", this);

    this.btnCancel = elem("cancel");
    this.btnCancel.addEventListener("click", this);

    this.avatar = elem("avatar");
    this.avatar.addEventListener("click", this);

    this.cardSwitch = elem("personnal-card-switch");
    this.cardSwitch.addEventListener("sl-change", this);

    this.btnUpdateDid = elem("update-dids");
    this.btnUpdateDid.addEventListener("click", this);

    this.autoconnectBehavior = elem("autoconnect-select");

    ALL_INPUTS.forEach((item) => {
      this.inputs[item] = elem(item);
    });

    this.ready = true;
  }
}

const addContactPanel = new AddContactPanel();


================================================
FILE: apps/contacts/js/config.js
================================================
// We run on the default port on device.
const isDevice = location.port === "";

window.config = {
  isDevice,
  port: isDevice ? 80 : 8081,
};

function addStylesheet(url) {
  let link = document.createElement("link");
  link.setAttribute("rel", "stylesheet");
  link.setAttribute("href", url);
  document.head.appendChild(link);
  return link;
}

function loadScript(url, { defer, module } = { defer: false, module: false }) {
  let script = document.createElement("script");
  script.setAttribute("src", url);
  if (defer) {
    script.setAttribute("defer", "true");
  }
  if (module) {
    script.setAttribute("type", "module");
  }
  document.head.appendChild(script);
  return script;
}

function loadSharedScript(url, params) {
  return loadScript(`http://shared.localhost:${location.port}/${url}`, params);
}

// Add the branding localization
let link = document.createElement("link");
link.setAttribute("rel", "localization");
link.setAttribute(
  "href",
  `http://branding.localhost:${location.port}/locales/{locale}/branding.ftl`
);
document.head.appendChild(link);

// Add the branding style
// addStylesheet(`http://branding.localhost:${location.port}/style/branding.css`);

// Load <link rel="stylesheet" href="style/{device|desktop}.css" />
addStylesheet(`/style/${isDevice ? "device" : "desktop"}.css`);

let depGraphLoaded = new Promise((resolve) => {
  loadSharedScript("js/dep_graph.js").onload = resolve;
});


================================================
FILE: apps/contacts/js/dependencies.js
================================================
const kDeps = [
  {
    name: "setup",
    kind: "virtual",
    deps: ["content manager", "activity manager", "apps manager"],
  },
  {
    name: "intro",
    kind: "virtual",
    deps: [
      "shoelace-button",
      "shoelace-icon",
      "shoelace-light-theme",
      "shoelace-setup",
    ],
  },
  {
    name: "qr dialog",
    kind: "virtual",
    deps: [
      "shoelace-dialog",
      "shoelace-qr-code",
      "shoelace-progress-bar",
      "shoelace-menu",
      "shoelace-menu-item",
    ],
  },
  {
    name: "contact info",
    kind: "module",
    param: ["./components/contact_info.js", ["ContactInfo"]],
    deps: [
      "lit element",
      "shoelace-avatar",
      "shoelace-icon-button",
      "shoelace-button",
    ],
  },
  {
    name: "add-panel",
    kind: "virtual",
    deps: [
      "shoelace-input",
      "shoelace-switch",
      "shoelace-select",
      "shoelace-option",
      "add-module",
    ],
  },
  { name: "add-module", kind: "module", param: "js/add_panel.js" },
  {
    name: "content manager",
    kind: "sharedWindowModule",
    param: ["js/content_manager.js", "contentManager", "ContentManager"],
    deps: ["shared-api-daemon"],
  },
  {
    name: "lit element",
    kind: "sharedModule",
    param: ["components/lit.js", ["LitElement", "html", "css"]],
  },
  {
    name: "activity manager",
    kind: "sharedModule",
    param: ["js/activity_manager.js", ["ActivityManager"]],
  },
  {
    name: "apps manager",
    kind: "sharedWindowModule",
    param: ["js/apps_manager.js", "appsManager", "AppsManager"],
    deps: ["shared-api-daemon"],
  },
  { name: "dummy", kind: "virtual", deps: ["shoelace-drawer"] },
];


================================================
FILE: apps/contacts/js/main.js
================================================
function elem(id) {
  return document.getElementById(id);
}

// A wrapper for a <sl-drawer> that adds common behavior:
// - lazy load the content from a <template>
// - load the dependencies for the panel
// - hook up the footer [back], [ok] and [done] buttons.
// - disable panel closing.
// - set initial focus to the element with the ".initial-focus" class.
class PanelWrapper {
  constructor(node, graph) {
    this.panel = node;
    this.name = node.getAttribute("id");
    this.loaded = false;
    this.graph = graph;

    const events = ["sl-show", "sl-initial-focus", "sl-request-close"];
    events.forEach((eventName) => this.panel.addEventListener(eventName, this));
  }

  sendByEvent(eventName, detail) {
    this.panel.addEventListener(
      "sl-after-show",
      () => {
        this.panel.dispatchEvent(new CustomEvent(eventName, { detail }));
      },
      { once: true }
    );
  }

  editContact(contact) {
    this.sendByEvent("edit-contact", contact);
  }

  fromContact(contact) {
    // When contact.id is null, Edit mode turns into Add mode so
    // we can reuse the same event.
    this.sendByEvent("edit-contact", contact);
  }

  async handleEvent(event) {
    // Load the template in the panel, and manage Ok / Back buttons.
    if (!this.loaded && event.type === "sl-show") {
      await this.graph.waitForDeps(this.name);

      let template = elem(`${this.name}-tmpl`);
      this.panel.append(template.content.cloneNode(true));

      this.loaded = true;
      this.panel.dispatchEvent(new CustomEvent("panel-ready"));
    }

    if (event.type === "sl-initial-focus") {
      let toFocus = this.panel.querySelector(".initial-focus");
      if (toFocus) {
        event.preventDefault();
        toFocus.focus();
      }
    } else if (event.type === "sl-request-close") {
      event.preventDefault();
    }
  }
}

class PeerWatcher {
  constructor() {
    this.peers = new Map(); // Maps peer key to Peer
    this.sessions = new Map(); // Maps sessionId to session

    this.watchers = new Map(); // Maps DID to [ContactInfo]
  }

  peerKey(peer) {
    return `${peer.did}-${peer.deviceId}`;
  }

  log(msg) {
    console.log(`PeerWatcher: ${msg}`);
  }

  async init() {
    this.dweb = await apiDaemon.getDwebService();
    let peers = await this.dweb.knownPeers();
    peers.forEach((peer) => {
      this.peers.set(this.peerKey(peer), peer);
    });
    let sessions = await this.dweb.getSessions();
    sessions.forEach((session) => {
      this.sessions.set(session.id, session);
    });

    this.dweb.addEventListener(
      this.dweb.PEERFOUND_EVENT,
      this.onPeerFound.bind(this)
    );
    this.dweb.addEventListener(
      this.dweb.PEERLOST_EVENT,
      this.onPeerLost.bind(this)
    );
    this.dweb.addEventListener(
      this.dweb.SESSIONADDED_EVENT,
      this.onSessionAdded.bind(this)
    );
    this.dweb.addEventListener(
      this.dweb.SESSIONREMOVED_EVENT,
      this.onSessionRemoved.bind(this)
    );

    let appHandler = this.updatePeerApps.bind(this);
    window.appsManager.addEventListener("app-installed", appHandler);
    window.appsManager.addEventListener("app-uninstalled", appHandler);
  }

  clearWatchers() {
    this.watchers.clear();
  }

  getInfo(did) {
    let known = [];
    let paired = [];
    for (let peer of this.peers.values()) {
      if (peer.did === did) {
        known.push(peer);
      }
    }
    for (let session of this.sessions.values()) {
      if (session.peer.did === did) {
        paired.push(session);
      }
    }
    return { known, paired };
  }

  addWatcher(did, contact) {
    let current = this.watchers.get(did);
    if (current) {
      current.push(contact);
      this.watchers.set(did, current);
    } else {
      this.watchers.set(did, [contact]);
    }

    // Set the proper contact state.
    let { known, paired } = this.getInfo(did);
    contact.updatePeerInfo(known, paired);
  }

  async updatePeerApps() {
    let apps = await navigator.b2g.activityUtils.getInstalled("p2p-tile-start");
    let enabled = apps.length !== 0;
    for (let watchers of this.watchers.values()) {
      watchers.forEach((watcher) => {
        watcher.updatePeerApps(enabled);
      });
    }
  }

  updateContactsFor(did) {
    let contacts = this.watchers.get(did) || [];
    let { known, paired } = this.getInfo(did);
    contacts.forEach((contact) => {
      contact.updatePeerInfo(known, paired);
    });
  }

  onPeerFound(peer) {
    this.peers.set(this.peerKey(peer), peer);
    this.updateContactsFor(peer.did);
  }

  onPeerLost(peer) {
    this.peers.delete(this.peerKey(peer));
    this.updateContactsFor(peer.did);
  }

  onSessionAdded(session) {
    this.sessions.set(session.id, session);
    this.updateContactsFor(session.peer.did);
  }

  onSessionRemoved(sessionId) {
    let session = this.sessions.get(sessionId);
    if (session) {
      let did = session.peer.did;
      this.sessions.delete(sessionId);
      this.updateContactsFor(did);
    }
  }
}

document.addEventListener("DOMContentLoaded", async () => {
  await depGraphLoaded;

  graph = new ParallelGraphLoader(addSharedDeps(addShoelaceDeps(kDeps)));

  const steps = ["shared-fluent", "setup", "intro"];
  await Promise.all(steps.map((dep) => graph.waitForDeps(dep)));

  // Get the list of drawers based on the set of templates.
  let templates = Array.from(document.querySelectorAll("template")).map(
    (template) => template.getAttribute("id").split("-")[0]
  );

  let wrappers = new Map();

  // Configure activity handlers.
  let activities = new ActivityManager({
    "new-contact": (data) => {
      onNewContact(wrappers, data);
    },
    "import-contact": onImportContact,
  });

  // Create the <sl-drawer> elements.
  let prev = null;
  templates.forEach((name) => {
    let node = document.createElement("sl-drawer");
    node.setAttribute("id", `${name}-panel`);
    node.setAttribute("no-header", "true");
    if (prev) {
      prev.setAttribute("next", name);
    }
    prev = node;
    document.body.append(node);
    let wrapper = new PanelWrapper(node, graph);
    wrappers.set(name, wrapper);
  });

  let drawerLoaded = false;
  async function ensureDrawer() {
    if (!drawerLoaded) {
      await graph.waitForDeps("shoelace-drawer");
      drawerLoaded = true;
    }
  }

  window.requestIdleCallback(async () => {
    await ensureDrawer();
  });

  // Will open only the panel for that #hash
  window.addEventListener(
    "hashchange",
    async () => {
      let hash = window.location.hash;
      let name = hash === "" ? "" : hash.substring(1) + "-panel";

      await ensureDrawer();

      let toShow, toHide;

      for (let wrapper of wrappers.values()) {
        if (wrapper.name === name) {
          toShow = wrapper.panel;
        } else if (wrapper.panel.open) {
          toHide = wrapper.panel;
        }
      }

      // Start by showing the target panel, then hide the previous one.
      // TODO: disable the "hide" animation when toShow is no null.
      if (toShow) {
        toShow.addEventListener(
          "sl-after-show",
          () => {
            toHide?.hide();
          },
          { once: true }
        );
        toShow.show();
      } else {
        // Going back to the first screen, just hide the previous panel.
        toHide?.hide();
      }
    },
    false
  );

  document.body.classList.add("ready");

  await contentManager.as_superuser();

  manageList(wrappers);
});

async function manageList(wrappers) {
  let didWatcher = new PeerWatcher();
  await didWatcher.init();

  let manager = contentManager.getContactsManager(async (contacts) => {
    await graph.waitForDeps("contact info");
    console.log(`Contacts list updated: ${contacts.length} contacts`);
    elem("main-title").dataset.l10nArgs = JSON.stringify({
      count: contacts.length,
    });

    didWatcher.clearWatchers();

    let apps = await navigator.b2g.activityUtils.getInstalled("p2p-tile-start");
    let appsEnabled = apps.length !== 0;

    let list = elem("contact-list");
    list.innerHTML = "";
    for (let contact of contacts) {
      let el = list.appendChild(new ContactInfo(contact, appsEnabled));
      let dids = contact.did || [];
      dids.forEach((did) => {
        didWatcher.addWatcher(did.uri, el);
      });
      el.classList.add("sl-box");
      el.addEventListener("delete-contact", () => {
        manager.deleteContact(contact);
      });

      el.addEventListener("publish-contact", () => {
        publishContact(contact);
      });

      el.addEventListener("edit-contact", () => {
        editContact(wrappers, contact);
      });
    }
  });

  // Hook up the "New contact" button.
  elem("action-add-contact").addEventListener("click", () => {
    window.location.hash = `#add`;
  });

  // Hook up the "Scan" button.
  elem("action-scan").addEventListener("click", () => {
    importContact(manager);
  });

  await manager.init();
}

// TODO: move to /shared/ and re-use with system/js/ipfs_publisher.js
class PasswordBasedSecret {
  constructor(password) {
    if (!password) {
      // Generate a pseudo-random password.
      password = "";
      for (let i = 0; i < 32; i++) {
        // random in a..z
        password += String.fromCharCode(97 + Math.floor(Math.random() * 26));
      }
    }
    this.password = password;
  }

  async getKeyMaterial() {
    let enc = new TextEncoder();
    return await window.crypto.subtle.importKey(
      "raw",
      enc.encode(this.password),
      "PBKDF2",
      false,
      ["deriveBits", "deriveKey"]
    );
  }

  async getSymKey() {
    let keyMaterial = await this.getKeyMaterial(this.password);
    let enc = new TextEncoder();
    return await window.crypto.subtle.deriveKey(
      {
        name: "PBKDF2",
        salt: enc.encode("capyloon-salt"),
        iterations: 400000,
        hash: "SHA-256",
      },
      keyMaterial,
      { name: "AES-GCM", length: 256 },
      true,
      ["encrypt", "decrypt"]
    );
  }

  async encrypt(plaintext) {
    return await window.crypto.subtle.encrypt(
      {
        name: "AES-GCM",
        iv: new Uint8Array(1),
      },
      await this.getSymKey(this.password),
      plaintext
    );
  }

  async decrypt(ciphertext) {
    return await window.crypto.subtle.decrypt(
      {
        name: "AES-GCM",
        iv: new Uint8Array(1),
      },
      await this.getSymKey(this.password),
      ciphertext
    );
  }
}

function log(msg) {
  console.log(`Contacts: ${msg}`);
}

async function sendToPeer(dweb, sessionId, toShare) {
  log(`sendToPeer, session id=${sessionId}`);
  try {
    let session = await dweb.getSession(sessionId);

    let params = {
      action: "activity",
      activity: { name: "import-contact", data: toShare },
    };
    let result = await dweb.dial(session, params);
    log(`sendToPeer result: ${result}`);
  } catch (e) {
    console.error(e);
    log(`Oops ${JSON.stringify(e)}`);
  }
}

async function maybeAddPeers(params) {
  let dweb = await apiDaemon.getDwebService();
  let sessions = await dweb.getSessions();
  log(`Found ${sessions.length} active p2p sessions`);
  if (sessions?.length) {
    await graph.waitForDeps("content manager");
    await contentManager.as_superuser();
    let contacts = contentManager.getContactsManager();
    await contacts.init();

    let menu = document.getElementById("peers");
    menu.addEventListener("sl-select", (event) => {
      sendToPeer(dweb, event.detail.item.dataset.sessionId, params);
    });
    document.getElementById("peers-section").classList.add("open");
    menu.innerHTML = "";
    for (let session of sessions) {
      let item = document.createElement("sl-menu-item");
      item.dataset.sessionId = session.id;
      let { did, deviceDesc } = session.peer;
      // If we find a contact matching this DID,
      // use the contact name instead of the DID.
      let contact = await contacts.contactWithDid(did);
      if (contact) {
        did = contact.name;
        if (contact.photoUrl) {
          log(`adding photo ${contact.photoUrl}`);
          let img = document.createElement("img");
          img.src = contact.photoUrl;
          img.setAttribute("slot", "prefix");
          item.append(img);
        }
      }
      let text = document.createElement("span");
      text.dataset.l10nId = "peers-detail";
      text.dataset.l10nArgs = JSON.stringify({ did, deviceDesc });
      item.append(text);
      menu.append(item);
    }
  } else {
    document.getElementById("peers-section").classList.remove("open");
  }
}

async function publishContact(contact) {
  await graph.waitForDeps("qr dialog");

  let dialog = elem("publish-dialog");
  let okBtn = elem("publish-btn-ok");
  okBtn.onclick = () => {
    dialog.hide();
  };
  let qrCode = elem("publish-qr");
  qrCode.classList.add("hidden");
  let progress = elem("publish-progress");
  progress.classList.remove("hidden");
  dialog.classList.remove("hidden");
  dialog.show();

  let encrypter = new PasswordBasedSecret();
  const postUrl = "ipfs://localhost/ipfs";
  try {
    let data = { contact: contact.asDefaultVariant() };
    // If the contact has a photo, encrypt and publish it.
    if (contact.photoUrl) {
      let response = await fetch(contact.photoUrl);
      let buffer = await response.arrayBuffer();
      let encrypted = await encrypter.encrypt(buffer);

      response = await fetch(postUrl, {
        method: "POST",
        body: encrypted,
      });
      data.photo = response.headers.get("location");
    }

    // Now publish the full data.
    let blob = new Blob([JSON.stringify(data)]);
    let buffer = await blob.arrayBuffer();
    let encrypted = await encrypter.encrypt(buffer);
    response = await fetch(postUrl, {
      method: "POST",
      body: encrypted,
    });
    let url = response.headers.get("location");
    // Share the password and url in the qr code.
    qrCode.value = JSON.stringify({ url, password: encrypter.password });

    maybeAddPeers({ url, password: encrypter.password });

    progress.classList.add("hidden");
    qrCode.classList.remove("hidden");
  } catch (e) {
    // TODO: error management / UI.
  }
}

async function fetchContact(manager, url, password) {
  try {
    let decrypter = new PasswordBasedSecret(password);
    let response = await fetch(url);
    let buffer = await response.arrayBuffer();
    let decoder = new TextDecoder();
    clearText = decoder.decode(await decrypter.decrypt(buffer));
    let data = JSON.parse(clearText);

    let contact = data.contact;
    if (data.photo) {
      let response = await fetch(data.photo);
      let buffer = await response.arrayBuffer();
      contact.photo = new Blob([await decrypter.decrypt(buffer)]);
    }
    await manager.add(manager.newContact(contact));
  } catch (e) {
    console.error(`Failed to fetch contact: ${e}`);
  }
}

async function importContact(manager) {
  let qr = new WebActivity("scan-qr-code");
  try {
    let text = await qr.start();
    let { url, password } = JSON.parse(text);
    await fetchContact(manager, url, password);
  } catch (e) {
    console.error(`Failed to import contact: ${e}`);
  }
}

function editContact(wrappers, contact) {
  window.location.hash = `#add`;
  // Notify the panel to switch to Edit mode.
  let panel = wrappers.get("add");
  panel.editContact(contact);
}

function onNewContact(wrappers, data) {
  window.location.hash = `#add`;
  // Notify the panel to add initial data
  let contact = { name: data.name, phone: [], email: [] };
  if (data.phone) {
    contact.phone = [data.phone];
  }
  if (data.email) {
    contact.email = [data.email];
  }
  let panel = wrappers.get("add");
  panel.fromContact(contact);
}

async function onImportContact(data) {
  let { url, password } = data;
  let manager = contentManager.getContactsManager();
  await fetchContact(manager, url, password);
}


================================================
FILE: apps/contacts/locales/en-US/main.ftl
================================================
btn-ok = Ok
btn-cancel = Cancel
btn-back = Back
title = Contacts

# main screen
main-title = {$count ->
    [0] No contacts
    [1] One contact
   *[other] {$count} contacts
}
btn-add = New
btn-scan = Scan

# Publish dialog
publish-label = Export Contact
peers-section-title = Send to a Peer
peers-detail = {$did} on {$deviceDesc}

# add contact panel
add-contact-title = Contact Information
add-contact-name =
  .label = Name
add-contact-phone =
  .label = Phone Number
add-contact-email =
  .label = E-mail
add-contact-identity = Identity
personnal-card = This is my own contact card
update-dids = Update Identity

# ContactInfo
contact-launch-app = Launch app

# Autoconnect section
add-contact-autoconnect-title = Autoconnect Behavior
add-contact-autoconnect-prompt = Prompt
add-contact-autoconnect-accept = Always Accept
add-contact-autoconnect-reject = Always Reject


================================================
FILE: apps/contacts/locales/ja/main.ftl
================================================
btn-ok = OK
btn-cancel = キャンセル
btn-back = 戻る
title = 連絡先

# main screen
main-title = {$count ->
    [0] 連絡先なし
    [1] 連絡先 1 件
   *[other] 連絡先 {$count} 件
}
btn-add = 新規作成
btn-scan = スキャン

# Publish dialog
publish-label = 連絡先を書き出し
peers-section-title = ピアへ送信
peers-detail = {$deviceDesc} 上の {$did}

# add contact panel
add-contact-title = 連絡先情報
add-contact-name =
  .label = 氏名
add-contact-phone =
  .label = 電話番号
add-contact-email =
  .label = メールアドレス
add-contact-identity = 差出人
personnal-card = これは私自身のカードです
update-dids = ID を更新

# ContactInfo
contact-launch-app = アプリを起動

# Autoconnect section
add-contact-autoconnect-title = 自動接続の動作
add-contact-autoconnect-prompt = 確認する
add-contact-autoconnect-accept = 常に受諾する
add-contact-autoconnect-reject = 常に却下する


================================================
FILE: apps/contacts/locales/zh-CN/main.ftl
================================================
btn-ok = 确定
btn-cancel = 取消
btn-back = 返回
title = 联系人

# 主界面
main-title = {$count ->
    [0] 没有联系人
    [1] 一个联系人
   *[other] {$count} 个联系人
}
btn-add = 新建
btn-scan = 扫描

# 发布对话框
publish-label = 导出联系人
peers-section-title = 发送给同行者
peers-detail = {$deviceDesc} 上的{$did}

# 新建联系人面板
add-contact-title = 联系人信息
add-contact-name =
  .label = 姓名
add-contact-phone =
  .label = 电话号码
add-contact-email =
  .label = 电子邮件
add-contact-identity = 身份信息
personnal-card = 这是我的联系人卡片
update-dids = 更新身份信息

# 联系人信息
contact-launch-app = 启动应用程序


================================================
FILE: apps/contacts/manifest.webmanifest
================================================
{
  "name": "Contacts",
  "description": "Manage your address book",
  "start_url": "/index.html",
  "icons": [
    {
      "src": "/icons/contacts.svg",
      "type": "image/svg",
      "sizes": "any"
    }
  ],
  "background_color": "#ffffff",
  "b2g_features": {
    "core": true,
    "developer": {
      "name": "The Capyloon team"
    },
    "permissions": {
      "content-manager": {},
      "dweb": {},
      "themeable": {},
      "webapps-manage": {}
    },
    "serviceworker": {
      "script_url": "sw.js"
    },
    "activities": {
      "new-contact": {
        "filters": {
          "name": { "required": true }
        }
      },
      "import-contact": {
        "filters": {
          "url": { "required": true },
          "password": { "required": true }
        }
      }
    },
    "skills": [
      {
        "description": "New Contact",
        "trigger": "new contact {name:string} {phone:phone}? {email:email}?",
        "activity": "new-contact",
        "pinnable": false
      },
      {
        "description": "New Friend",
        "trigger": "new friend {name:string} {phone:phone}? {email:email}?",
        "activity": "new-contact",
        "pinnable": false
      }
    ]
  },
  "version": "1.0"
}


================================================
FILE: apps/contacts/style/desktop.css
================================================
html,
body {
  font-size: 4mm;
}

================================================
FILE: apps/contacts/style/device.css
================================================
html,
body {
  font-size: 4mm;
}

================================================
FILE: apps/contacts/style/main.css
================================================
html,
body {
  height: 100%;
  width: 100%;
  margin: 0;
  padding: 1em;
}

body {
  opacity: 0;
}

body.ready {
  opacity: 1;
  transition: 0.25s opacity;
}

* {
  box-sizing: border-box;
}

.center {
  display: flex;
  justify-content: center;
}

sl-drawer {
  --size: 100vw;
}

sl-drawer header {
  font-size: 1.2rem;
}

.drawer-content {
  margin: 1em;
}

header {
  display: flex;
  align-items: center;
  margin-bottom: 1em;
}

header span {
  flex: 1;
}

.hidden {
  display: none;
}

#float-buttons {
  display: flex;
  flex-direction: column;
  gap: 1em;
  position: absolute;
  right: 2em;
  bottom: 2em;
}

#contact-list {
  display: flex;
  flex-direction: column;
  gap: 1em;
}

#publish-dialog::part(body) {
  display: flex;
  flex-direction: column;
  align-items: center;
}

#publish-progress {
  --height: 6px;
}

#publish-qr {
  padding: 2em;
  background-color: white;
}

#add-contact-form {
  display: flex;
  flex-direction: column;
  gap: 1em;
}

#add-contact-avatar {
  margin-bottom: 1em;
  cursor: pointer;
}

#add-contact-did-list {
  padding-left: 0;
}

#add-contact-did-list li {
  list-style-type: none;
  font-size: var(--sl-font-size-small);
  font-weight: var(--sl-font-weight-light);
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}

#peers-section:not(.open) {
  display: none;
}

#peers-section sl-menu {
  max-width: 90vw;
}

#peers-section sl-menu-item img {
  width: 2em;
}

#add-contact-autoconnect-section {
  display: flex;
}

/*
Generic style to create containers with the Shoelace style
TODO: consider moving to shared/
*/
.sl-box {
  border: solid var(--sl-panel-border-width) var(--sl-panel-border-color);
  border-radius: var(--sl-border-radius-medium);
  background: var(--sl-panel-background-color);
  padding: var(--sl-spacing-x-small) 0;
}

/* user invalid styles */
sl-input[data-user-invalid]::part(base),
sl-select[data-user-invalid]::part(control) {
  border-color: var(--sl-color-danger-600);
}

[data-user-invalid]::part(form-control-label),
[data-user-invalid]::part(form-control-help-text) {
  color: var(--sl-color-danger-700);
}

sl-input:focus-within[data-user-invalid]::part(base),
sl-select:focus-within[data-user-invalid]::part(control) {
  border-color: var(--sl-color-danger-600);
  box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-color-danger-300);
}

/* User valid styles */
sl-input[data-user-valid]::part(base),
sl-select[data-user-valid]::part(control) {
  border-color: var(--sl-color-success-600);
}

[data-user-valid]::part(form-control-label),
[data-user-valid]::part(form-control-help-text) {
  color: var(--sl-color-success-700);
}

sl-input:focus-within[data-user-valid]::part(base),
sl-select:focus-within[data-user-valid]::part(control) {
  border-color: var(--sl-color-success-600);
  box-shadow: 0 0 0 var(--sl-focus-ring-width) var(--sl-color-success-300);
}


================================================
FILE: apps/contacts/sw.js
================================================
const HAS_RETURN_VALUE_ACTIVITIES = [];

importScripts(`http://shared.localhost:${location.port}/js/activity_sw.js`);


================================================
FILE: apps/dialer/index.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta
      name="viewport"
      content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no"
    />
    <meta name="theme-color" content="#323232" />
    <title data-l10n-id="page-title"></title>

    <meta name="defaultLanguage" content="en-US" />
    <meta name="availableLanguages" content="en-US,zh-CN,ja" />
    <link rel="icon" href="icons/dialer.svg" />
    <link rel="localization" href="./locales/{locale}/main.ftl" />

    <link rel="stylesheet" href="style/index.css" type="text/css" />

    <script src="js/config.js"></script>
    <script src="js/main.js"></script>
  </head>
  <body>
    <h1 id="page-title"></h1>
    <h2 id="number"></h2>
    <div class="filler"></div>
    <!-- UI panel to dial an outgoing call -->
    <div id="dialpad-container" class="hidden">
      <div id="dialpad">
        <div class="number-display">
          <div id="dialed-number" class="value"></div>
          <lucide-icon kind="delete" class="delete-key"></lucide-icon>
        </div>
        <div class="digit" data-digit="1">1</div>
        <div class="digit" data-digit="2">2<div class="letters">abc</div></div>
        <div class="digit" data-digit="3">3<div class="letters">def</div></div>
        <div class="digit" data-digit="4">4<div class="letters">ghi</div></div>
        <div class="digit" data-digit="5">5<div class="letters">jkl</div></div>
        <div class="digit" data-digit="6">6<div class="letters">mno</div></div>
        <div class="digit" data-digit="7">7<div class="letters">pqrs</div></div>
        <div class="digit" data-digit="8">8<div class="letters">tuv</div></div>
        <div class="digit" data-digit="9">9<div class="letters">wxyz</div></div>
        <div class="digit" data-digit="*" data-secdigit="*">&nbsp;<div class="letters">*</div></div>
        <div class="digit" data-digit="0" data-secdigit="+">0<div class="letters">+</div></div>
        <div class="digit" data-digit="#" data-secdigit="#">&nbsp<div class="letters">#</div></div>
      </div>
      <!-- <div class="digit"><lucide-icon kind="check"></lucide-icon></div> -->
      <button id="btn-dial" data-l10n-id="dial">
        <lucide-icon kind="phone"></lucide-icon>
      </button>
    </div>
    <!-- UI panel when an incoming call needs to be accepted or rejected -->
    <div id="accept-reject" class="hidden">
      <button id="btn-accept" data-l10n-id="accept">
        <lucide-icon kind="phone"></lucide-icon>
      </button>
      <button id="btn-reject" data-l10n-id="reject">
        <lucide-icon kind="phone-off"></lucide-icon>
      </button>
    </div>
    <!-- UI panel when an outgoing call is waiting to be accepted or rejected -->
    <div id="wait-outgoing" class="hidden">
      <button id="btn-reject2" data-l10n-id="reject">
        <lucide-icon kind="phone-off"></lucide-icon>
      </button>
    </div>
    <!-- UI panel when on a call -->
    <div id="on-call" class="hidden">
      <div id="call-controls">
        <lucide-icon id="btn-mute" kind="mic-off" class="inactive">
        </lucide-icon>
        <lucide-icon id="btn-dialpad" kind="grid" class="inactive">
        </lucide-icon>
        <lucide-icon id="btn-speaker" kind="volume-1" class="inactive">
        </lucide-icon>
      </div>
      <button id="btn-hangup" data-l10n-id="hangup">
        <lucide-icon kind="phone-off"></lucide-icon>
      </button>
    </div>
  </body>
</html>


================================================
FILE: apps/dialer/js/config.js
================================================
// We run on the default port on device.
const isDevice = location.port === "";

window.config = {
  isDevice,
  port: isDevice ? 80 : 8081,
};

function addLink(url) {
  let link = document.createElement("link");
  link.setAttribute("rel", "stylesheet");
  link.setAttribute("href", url);
  document.head.appendChild(link);
  return link;
}

function loadScript(url, defer = false) {
  let script = document.createElement("script");
  script.setAttribute("src", url);
  if (defer) {
    script.setAttribute("defer", "true");
  }
  document.head.appendChild(script);
  return script;
}

function loadSharedScript(url) {
  return loadScript(`http://shared.localhost:${location.port}/${url}`);
}

// Load <link rel="stylesheet" href="style/{device|desktop}.css" />
addLink(`/style/${isDevice ? "device" : "desktop"}.css`);

// Load the shared style.
addLink(
  `http://shared.localhost:${window.config.port}/style/themes/default/theme.css`
);

let depGraphLoaded = new Promise((resolve) => {
  loadSharedScript("js/dep_graph.js").onload = resolve;
});


================================================
FILE: apps/dialer/js/main.js
================================================
const telephony = navigator.b2g?.telephony;

function button(name) {
  return document.getElementById(`btn-${name}`);
}

function elem(name) {
  return document.getElementById(name);
}

function bindButtonToState(btnName, prop) {
  if (!telephony) {
    return;
  }

  let node = button(btnName);

  const update = () => {
    if (telephony[prop]) {
      node.classList.add("active");
    } else {
      node.classList.remove("active");
    }
  };

  node.onclick = () => {
    telephony[prop] = !telephony[prop];
    update();
  };

  update();
}

function manageIncoming(call) {
  if (!call) {
    console.error(`MMM No active call...`);
    return;
  }

  if (telephony.ownAudioChannel) {
    console.log(`MMM owning audio channel`);
    telephony.ownAudioChannel();
  }

  call.ondisconnected = () => {
    console.log(`MMM call got disconnected, bye!`);
    window.close();
  };

  elem("number").textContent = call.id.number;

  button("accept").onclick = async () => {
    console.log(`MMM accept`);
    await call.answer(telephony.CALL_TYPE_VOICE);

    panelManager.switchTo("in-call");
  };

  button("reject").onclick = async () => {
    console.log(`MMM reject ${telephony.calls.length} calls`);
    try {
      await call.hangUp(true);
      window.close();
    } catch (e) {
      console.error(`MMM oops ${e}`);
    }
  };

  button("hangup").onclick = async () => {
    console.log(`MMM hangUp`);
    try {
      await call.hangUp();
      window.close();
    } catch (e) {
      console.error(`MMM oops ${e}`);
    }
  };
}

let cancelNextClick = false;
function onDigit(event) {
  let node = event.currentTarget;
  if (!node.hasAttribute("data-digit")) {
    return;
  }

  if (cancelNextClick) {
    cancelNextClick = false;
    return;
  }

  elem("dialed-number").textContent += node.getAttribute("data-digit");
}

function onLongPress(event) {
  let node = event.currentTarget;
  event.stopPropagation();
  event.preventDefault();
  console.log(`MMM onLongPress ${node.hasAttribute("data-secdigit")}`);
  if (!node.hasAttribute("data-secdigit")) {
    return;
  }

  elem("dialed-number").textContent += node.getAttribute("data-secdigit");
  // Somehow on desktop builds we always get a click after a long press contextmenu.
  cancelNextClick = !window.config.isDevice;
}

function setupDialer() {
  try {
    document.querySelectorAll(".digit").forEach((node) => {
      node.onclick = onDigit;
      node.oncontextmenu = onLongPress;
    });

    document.querySelector(".delete-key").onclick = () => {
      let node = elem("dialed-number");
      let current = node.textContent;
      node.textContent = current.substring(0, current.length - 1);
    };

    elem("btn-dial").onclick = () => {
      let number = elem("dialed-number").textContent;
      console.log(`MMM Dialing ${number} ${telephony.CALL_TYPE_VOICE}`);

      // TODO: Switch to "wait call answer" UI.

      telephony
        .dial(number, telephony.CALL_TYPE_VOICE, false)
        .then((call) => {
          panelManager.switchTo("wait-outgoing");
          elem("number").textContent = number;

          button("reject2").onclick = async () => {
            try {
              await call.hangUp(true);
              window.close();
            } catch (e) {
              console.error(`MMM oops ${e}`);
            }
          };

          call.onstatechange = () => {
            elem("number").textContent = `${number} - ${call.state}`;
            if (call.state == "connected") {
              panelManager.switchTo("in-call");
              manageIncoming(call);
            } else if (call.state == "disconnected") {
              window.close();
            }
          };
        })
        .catch((error) => {
          console.error(`MMM error dialing: ${error}`);
        });
    };
  } catch (e) {
    console.error("MMM OOpps ${error}");
  }
}

// A class to manage the UI based on the call state.
class PanelManager {
  constructor() {
    this.state = "unknown";

    this.allPanels = [
      "dialpad-container",
      "accept-reject",
      "on-call",
      "wait-outgoing",
    ];

    this.states = {
      outgoing: { nodes: ["dialpad-container"], pageTitle: "page-title-dial" },
      incoming: { nodes: ["accept-reject"], pageTitle: "page-title-incoming" },
      "in-call": { nodes: ["on-call"], pageTitle: "page-title-connected" },
      "wait-outgoing": { nodes: ["wait-outgoing"], pageTitle: "page-title-wait" },
    };
  }

  switchTo(state) {
    if (!this.states[state]) {
      console.error(`PanelManager::switchTo: invalide state '${state}'`);
      return;
    }

    let toEnable = this.states[state];
    this.allPanels.forEach((panel) => {
      let node = document.getElementById(panel);
      if (toEnable.nodes.includes(panel)) {
        node.classList.remove("hidden");
      } else {
        node.classList.add("hidden");
      }
    });
    elem("page-title").setAttribute("data-l10n-id", toEnable.pageTitle);
  }
}

const panelManager = new PanelManager();

document.addEventListener("DOMContentLoaded", async () => {
  await depGraphLoaded;
  await getSharedDeps(["shared-fluent", "shared-icons"]);

  bindButtonToState("mute", "muted");
  bindButtonToState("speaker", "speakerEnabled");

  // Set UI state based on the presence of ?incoming in the url.
  if (window.location.search == "?incoming") {
    panelManager.switchTo("incoming");

    if (telephony.calls[0]) {
      manageIncoming(telephony.calls[0]);
    } else {
      telephony.onincoming = (event) => {
        console.error(`MMM incoming call ${e}`);
        manageIncoming(event.call);
      };
    }
  } else {
    panelManager.switchTo("outgoing");
    setupDialer();
  }
});


================================================
FILE: apps/dialer/locales/en-US/main.ftl
================================================
# Incoming page
page-title = Dialer
page-title-incoming = Incoming Call
page-title-dial = Dial Number
page-title-wait = Waiting For
page-title-connected = Talking With

accept =
    .title = Accept
reject =
    .title = Reject
hangup =
    .title = Hangup
dial =
    .title = Dial

================================================
FILE: apps/dialer/locales/ja/main.ftl
================================================
# Incoming page
page-title = 通話
page-title-incoming = 着信
page-title-dial = ダイヤル番号
page-title-wait = 待機中
page-title-connected = 通話相手

accept =
    .title = 受諾
reject =
    .title = 拒否
hangup =
    .title = 通話終了
dial =
    .title = 通話開始

================================================
FILE: apps/dialer/locales/zh-CN/main.ftl
================================================
# Incoming page
page-title = 电话
page-title-incoming = 来电
page-title-dial = 电话号码
page-title-wait = 拨打中
page-title-connected = 通话中

accept =
    .title = 接听
reject =
    .title = 拒听
hangup =
    .title = 挂断
dial =
    .title = 电话

================================================
FILE: apps/dialer/manifest.webmanifest
================================================
{
  "name": "Dialer",
  "description": "Receive and Send Calls",
  "start_url": "/index.html",
  "icons": [
    {
      "src": "/icons/dialer.svg",
      "type": "image/svg",
      "sizes": "any"
    }
  ],
  "b2g_features": {
    "core": true,
    "developer": {
      "name": "The Capyloon team"
    },
    "permissions": {
      "audio-channel-telephony": {},
      "contacts": { "access": "read" },
      "desktop-notification": {},
      "telephony": {},
      "themeable": {}
    }
  },
  "version": "1.0"
}


================================================
FILE: apps/dialer/style/desktop.css
================================================
html,
body {
  font-size: 4mm;
}

================================================
FILE: apps/dialer/style/device.css
================================================
html,
body {
  font-size: 4mm;
}

================================================
FILE: apps/dialer/style/index.css
================================================
html,
body {
  width: 100%;
  height: 100%;
  margin: 0;
  overflow-x: hidden;
  color: lightgrey;
}

* {
  box-sizing: border-box;
}

body {
  background: linear-gradient(
    0deg,
    rgba(50, 50, 50, 1) 0%,
    rgba(10, 10, 10, 1) 100%
  );
  padding: 1em;
  text-align: center;
  display: flex;
  flex-direction: column;
}

.filler {
  flex: 1;
}

body button {
  font-size: 2em;
  color: lightgrey;
  min-width: 4em;
  display: flex;
  justify-content: center;
}

#accept-reject,
#on-call,
#wait-outgoing {
  display: flex;
  justify-content: space-around;
}

#btn-accept,
#btn-dial {
  background-color: darkgreen;
}

#btn-dial {
  min-width: 2em;
  border-radius: 40%;
}

#btn-reject,
#btn-reject2,
#btn-hangup {
  background-color: darkred;
}

#accept-reject.hidden,
#on-call.hidden,
#dialpad-container.hidden,
#wait-outgoing.hidden {
  display: none;
}

#on-call {
  flex-direction: column;
  align-items: center;
  grid-gap: 2em;
}

#call-controls {
  display: flex;
  justify-content: space-around;
  grid-gap: 2em;
}

#call-controls lucide-icon {
  padding: 0.5em;
  border-radius: 40%;
  font-size: 1.5em;

  background-color: var(--icon-background-inactive);
  color: var(--icon-color-inactive);
}

#call-controls lucide-icon.active {
  background-color: var(--icon-background-active);
  color: var(--icon-color-active);
}

/* dialpad */

#dialpad-container {
  width: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}

#dialpad {
  width: 90%;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  text-align: center;
  font-size: 2rem;
  padding-bottom: 1em;
}

.number-display {
  grid-column: 1 / span 3;
  border-bottom: 1px solid;
  display: flex;
  flex-direction: row;
  align-items: center;
  font-size: 1.25em;
}

.value {
  flex: 1;
  font-size: 2.25rem;
  letter-spacing: 3px;
}

.digit {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding-top: 0.3em;
}

.digit lucide-icon {
  padding: 0;
}

.digit:active,
.delete-key:active {
  background-color: rgba(255, 255, 255, 0.2);
  border-radius: 50%;
}

.letters {
  font-size: small;
}


================================================
FILE: apps/files/components/container_renderer.css
================================================
/* <image-renderer> styling */

:host {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
}

:host #list {
  padding: 0.5em;
  overflow-y: scroll;
  display: flex;
  flex-direction: column;
  gap: 0.5em;
}

:host #list > div {
  display: flex;
  gap: 0.5em;
  align-items: center;
  cursor: pointer;
  max-width: 100%;
}

:host #list > div.selected {
  background-color: var(--sl-color-primary-100);
  outline: var(--sl-color-primary-500) ridge 2px;
  border-radius: var(--sl-border-radius-medium);
  transition: all 0.2s;
}

:host #list sl-icon {
  font-size: 2em;
}

:host #list .details {
  display: flex;
  flex-direction: column;
  flex: 1;
  overflow: hidden;
}

:host #list .details div {
  font-size: smaller;
  font-weight: lighter;
  color: var(--sl-color-neutral-500);
}

/* Icon layout mode */
:host #list.icons .details div {
  display: none;
}

:host #list.icons {
  flex-direction: row;
  flex-wrap: wrap;
}

:host #list.icons > div {
  flex-direction: column;
}

:host #list.icons .details {
  width: 5em;
}

:host #list .name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

:host #list.icons .name {
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
  font-size: smaller;
  font-weight: lighter;
  text-align: center;
}

:host footer {
  display: flex;
}

:host footer div {
  font-size: 1.5em;
  text-align: center;
  cursor: pointer;
  display: flex;
  justify-content: center;
  flex: 1;
  margin-top: 0.25em;
  margin-bottom: 0.25em;
}

:host .flex-fill {
  flex: 1;
}

:host #list > div.empty {
  text-align: center;
  display: block;
  margin-top: 2em;
  color: var(--sl-color-neutral-500);
}

/* TODO: find a better way to center the dropdown icon */
:host sl-dropdown sl-icon {
  margin-top: 0.3em;
}


================================================
FILE: apps/files/components/container_renderer.js
================================================
/* renderer component for containers */

export class ContainerRenderer extends LitElement {
  constructor(id, filter) {
    super();
    this.id = id;
    this.getItems();
    this.iconLayout = false;
    this.selected = new Set();
    this.selectedCount = 0;
    this.filter = filter;
  }

  log(msg) {
    console.log(`ContainerRenderer: ${msg}`);
  }

  static get properties() {
    return {
      items: { state: true },
      iconLayout: { state: true },
      selectedCount: { state: true, type: Number },
    };
  }

  async getItems() {
    let svc = await contentManager.getService();
    let lib = await contentManager.lib();
    let cursor = await svc.childrenOf(this.id);
    let items = [];
    let done = false;
    while (!done) {
      try {
        let children = await cursor.next();
        for (let child of children) {
          items.push(child);
        }
      } catch (e) {
        // cursor.next() rejects when no more items are available, so it's not
        // a fatal error.
        // this.error(`Cursor error: ${JSON.stringify(e)}`);
        done = true;
      }
    }
    cursor.release();

    this.items = [];

    for (let item of items) {
      const isFolder = item.kind === lib.ResourceKind.CONTAINER;

      // filter out files that don't match the pick activity.
      if (!isFolder && this.filter) {
        let defaultMime = item.variants.find(
          (variant) => variant.name == "default"
        )?.mimeType;
        // TODO: better filtering
        if (!defaultMime.startsWith(this.filter)) {
          continue;
        }
      }

      // Add up the size of all variants.
      let fullSize = 0;
      if (isFolder) {
        fullSize = await svc.containerSize(item.id);
      } else {
        fullSize = item.variants
          .map((item) => item.size)
          .reduce(
            (previousValue, currentValue) => previousValue + currentValue,
            0
          );
      }
      let size = contentManager.formatSize(fullSize);

      // Manually apply offset to UTC since we have no guarantee that
      // anything else but `UTC` will work in DateTimeFormat.
      let modified =
        item.modified.getTime() - new Date().getTimezoneOffset() * 60 * 1000;
      const timeFormat = new Intl.DateTimeFormat("default", {
        weekday: "long",
        month: "long",
        day: "numeric",
        hour: "numeric",
        minute: "numeric",
        timeZone: "UTC",
        hour12: false,
      });

      let kind = await contentManager.iconForResource(item);

      let isPublishedOnIpfs = !!item.tags.find((tag) =>
        tag.startsWith(".ipfs://")
      );
      let qrCode = isPublishedOnIpfs
        ? html`<sl-icon @click="${this.onQrCode}" name="qr-code"></sl-icon>`
        : "";

      this.items.push(html`<div
        @click=${this.openResource}
        @contextmenu=${this.toggleSelection}
        data-id="${item.id}"
        data-kind="${isFolder ? "container" : "leaf"}"
      >
        <sl-icon name="${kind}"></sl-icon>
        ${qrCode}
        <div class="details">
          <span class="name">${item.name}</span>
          <div>
            <span>${timeFormat.format(modified)}</span>&nbsp;—&nbsp;<span
              >${size}</span
            >
          </div>
        </div>
      </div>`);
    }
    // TODO(fabrice): figure out why we need that explicit update trigger.
    this.requestUpdate();
  }

  onQrCode(event) {
    let id = this.findNodeFromEvent(event)?.dataset.id;
    if (!id) {
      return;
    }
    event.stopPropagation();
    // Trigger a "resource publishing" activity.
    let activity = new WebActivity("publish-resource", { id });
    activity.start();
  }

  findNodeFromEvent(event) {
    let node = event.target;
    while (node && !node.dataset.id) {
      node = node.parentElement;
    }
    return node;
  }

  toggleSelection(event) {
    let node = this.findNodeFromEvent(event);
    if (!node) {
      return;
    }

    // Prevent the standard context menu from showing up.
    event.stopPropagation();
    event.preventDefault();

    // this.log(`toggleSelection for ${id}`);
    node.classList.toggle("selected");
    if (node.classList.contains("selected")) {
      this.selected.add(node.dataset);
    } else {
      this.selected.delete(node.dataset);
    }
    this.selectedCount = this.selected.size;
  }

  openResource(event) {
    let node = this.findNodeFromEvent(event);

    if (!node) {
      return;
    }

    const { kind, id } = node.dataset;
    this.log(`will open ${kind} ${id}`);
    // If this is a container, just update ourselves and notify the main screen of the new id to
    // update the breadcrumb
    if (kind == "container") {
      this.id = id;
      this.dispatchEvent(new CustomEvent("update-path", { detail: id }));
      history.pushState({ id, container: true }, "");
      this.getItems();
    } else {
      this.dispatchEvent(new CustomEvent("switch-to-leaf", { detail: { id } }));
    }
  }

  closeApp() {
    window.close();
  }

  switchMode() {
    this.iconLayout = !this.iconLayout;
  }

  clearSelected() {
    this.selected.clear();
    this.selectedCount = 0;
  }

  async createDirectory() {
    let title = await document.l10n.formatValue("new-dir-name");
    let newDirName = prompt(title);
    if (newDirName) {
      let svc = await contentManager.getService();
      let lib = await contentManager.lib();
      try {
        await svc.createobj(
          {
            parent: this.id,
            name: newDirName,
            kind: lib.ResourceKind.CONTAINER,
            tags: [],
          },
          ""
        );
        this.clearSelected();
        await this.getItems();
      } catch (e) {
        console.error(e);
      }
    }
  }

  async deleteSelected() {
    // this.log(`deleteSelected`);
    let toDelete = [];
    let svc = await contentManager.getService();
    for (let item of this.selected) {
      toDelete.push(svc.delete(item.id));
    }
    await Promise.allSettled(toDelete);
    this.clearSelected();
    await this.getItems();
  }

  async renameResource() {
    // Bail out if called with multiple resources selected.
    if (this.selectedCount != 1) {
      return;
    }

    let resourceId = this.selected.values().next().value.id;
    /* TODO: use a different string for files vs. directories */
    let title = await document.l10n.formatValue("new-resource-name");
    let svc = await contentManager.getService();
    let meta = await svc.getMetadata(resourceId);
    let newName = prompt(title, meta.name);
    await svc.renameResource(resourceId, newName);
    this.clearSelected();
    await this.getItems();
  }

  async applyToSingleResourceWithDir(action, callback) {
    // Bail out if called with multiple resources selected.
    if (this.selectedCount != 1) {
      return;
    }

    let { kind, id } = this.selected.values().next().value;
    this.log(`Will ${action} ${kind} ${id}`);
    if (kind !== "leaf") {
      let title = await document.l10n.formatValue(`cant-${action}-directory`);
      alert(title);
      return;
    }

    await graph.waitForDeps("directory picker");
    let picker = document.getElementById("directory-picker");
    try {
      let container = await picker.pick();
      this.log(`About to ${action} to ${container}`);
      let svc = await contentManager.getService();
      await callback(svc, id, container);
      this.clearSelected();
      await this.getItems();
    } catch (e) {}
  }

  async moveResource() {
    await this.applyToSingleResourceWithDir("move", async (svc, id, container) => {
      await svc.moveResource(id, container);
    });
  }

  async copyResource() {
    await this.applyToSingleResourceWithDir("copy", async (svc, id, container) => {
      await svc.copyResource(id, container);
    });
  }

  updated() {
    document.l10n.translateFragment(this.shadowRoot);
  }

  render() {
    let optionalDelete;
    if (this.selected.size > 0) {
      optionalDelete = html`<div @click="${this.deleteSelected}">
        <sl-icon-button name="trash-2"></sl-icon-button>
      </div>`;
    }

    let optionalSingle;
    if (this.selected.size === 1) {
      optionalSingle = html`<div>
        <sl-dropdown placement="top-end">
          <sl-icon slot="trigger" name="more-vertical"></sl-icon>
          <sl-menu>
            <sl-menu-item
              @click="${this.moveResource}"
              data-l10n-id="menu-resource-move"
            ></sl-menu-item>
            <sl-menu-item
              @click="${this.copyResource}"
              data-l10n-id="menu-resource-copy"
            ></sl-menu-item>
            <sl-menu-item
              @click="${this.renameResource}"
              data-l10n-id="menu-resource-rename"
            ></sl-menu-item>
            <!-- <sl-menu-item data-l10n-id="menu-resource-details"></sl-menu-item> -->
          </sl-menu>
        </sl-dropdown>
      </div>`;
    }

    let items =
      !this.items || this.items.length == 0
        ? html`<div class="empty" data-l10n-id="empty-container"></div>`
        : this.items;

    return html`<link
        rel="stylesheet"
        href="components/container_renderer.css"
      />
      <div id="list" class="${this.iconLayout ? "icons" : "list"}">
        ${items}
      </div>
      <div class="flex-fill"></div>
      <footer>
        <div @click="${this.switchMode}">
          <sl-icon-button
            name="${this.iconLayout ? "list" : "layout-grid"}"
          ></sl-icon-button>
        </div>
        <div @click="${this.createDirectory}">
          <sl-icon-button name="folder-plus"></sl-icon-button>
        </div>
        ${optionalDelete} ${optionalSingle}
        <div @click="${this.closeApp}">
          <sl-icon-button name="x"></sl-icon-button>
        </div>
      </footer>`;
  }

  canEdit() {
    return false;
  }
}

customElements.define("container-renderer", ContainerRenderer);


================================================
FILE: apps/files/components/default_renderer.css
================================================
/* <default-renderer> styling */

default-renderer {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
}

default-renderer web-view,
default-renderer iframe {
  flex: 1;
  object-position: center;
  object-fit: contain;
  background-color: white;
  border: none;
  margin: 0 0.5em 0 0.5em;
}

default-renderer .info {
  font-size: smaller;
  padding: 0.5em;
}


================================================
FILE: apps/files/components/default_renderer.js
================================================
/* fallback renderer component, that will just load the resource in an iframe */

export class DefaultRenderer extends HTMLElement {
  constructor(resource) {
    super();
    this.src = resource.variantUrl();

    let fullSize = resource.meta.variants
      .map((item) => item.size)
      .reduce((previousValue, currentValue) => previousValue + currentValue, 0);
    this.fullSize = contentManager.formatSize(fullSize);

    // Manually apply offset to UTC since we have no guarantee that
    // anything else but `UTC` will work in DateTimeFormat.
    let modified =
      resource.meta.modified.getTime() -
      new Date().getTimezoneOffset() * 60 * 1000;
    const timeFormat = new Intl.DateTimeFormat("default", {
      weekday: "long",
      month: "long",
      day: "numeric",
      hour: "numeric",
      minute: "numeric",
      timeZone: "UTC",
      hour12: false,
    });
    this.modified = timeFormat.format(modified);
  }

  log(msg) {
    console.log(`DefaultRenderer: ${msg}`);
  }

  static get properties() {
    return {
      src: { state: true },
    };
  }

  connectedCallback() {
    //   this.fullSize = 0;
    //   this.modified = "now";
    //   this.src = "http://example.com";
    this.render();
  }

  render() {
    // return html`<link rel="stylesheet" href="components/default_renderer.css" />
    //   <div class="info">${this.fullSize}&nbsp;—&nbsp;${this.modified}</div>
    //   <iframe src="${this.src}"></iframe> `;

    this.innerHTML = `<link rel="stylesheet" href="components/default_renderer.css" />
      <div class="info">${this.fullSize}&nbsp;—&nbsp;${this.modified}</div>
      <iframe src="${this.src}"></iframe> `;

    // let webView = this.querySelector("web-view");
    // webView.openWindowInfo = null;
  }

  canEdit() {
    return false;
  }
}

customElements.define("default-renderer", DefaultRenderer);


================================================
FILE: apps/files/components/directory_picker.css
================================================
/* styling for <directory-picker> */

:host sl-tree-item.selected::part(label) {
  background-color: var(--sl-color-primary-100);
  outline: var(--sl-color-primary-500) ridge 2px;
  border-radius: var(--sl-border-radius-medium);
  transition: all 0.2s;
}


================================================
FILE: apps/files/components/directory_picker.js
================================================
// <directory-picker> custom element

class DirectoryPicker extends LitElement {
  constructor() {
    super();
    this.attached = false;
    this.updates = 0;
    this.selected = null;
    this.deferred = null;
  }

  static get properties() {
    return {
      updates: { state: true },
    };
  }

  log(msg) {
    console.log(`DirectoryPicker: ${msg}`);
  }

  updateSelected(node, resourceId) {
    if (this.selected) {
      this.selected.node.classList.remove("selected");
    }

    this.selected = { node, resourceId };
    node.classList.add("selected");
    this.btnOk.disabled = false;
  }

  async addSubtree(node, parentId = null) {
    this.log(`addSubtree parent=${parentId}`);
    let svc = await contentManager.getService();
    let lib = await contentManager.lib();

    // If no parentId is set, start from the root.
    if (!parentId) {
      let root = await svc.getRoot();
      parentId = root.id;
    }

    // Gather the list of name & id for the sub containers.
    let cursor = await svc.childrenOf(parentId);
    let items = [];
    let done = false;
    while (!done) {
      try {
        let children = await cursor.next();
        for (let child of children) {
          if (child.kind === lib.ResourceKind.CONTAINER) {
            items.push(child);
          }
        }
      } catch (e) {
        // cursor.next() rejects when no more items are available, so it's not
        // a fatal error.
        // this.error(`Cursor error: ${JSON.stringify(e)}`);
        done = true;
      }
    }

    items.forEach((item) => {
      let treeItem = document.createElement("sl-tree-item");
      let icon = document.createElement("sl-icon");
      icon.setAttribute("name", "folder");
      treeItem.append(icon);
      treeItem.append(document.createTextNode(item.name));
      treeItem.lazy = true;
      treeItem.addEventListener("contextmenu", (event) => {
        this.updateSelected(treeItem, item.id);
        event.preventDefault();
        event.stopPropagation();
      });
      treeItem.addEventListener(
        "sl-lazy-load",
        async () => {
          try {
            await this.addSubtree(treeItem, item.id);
          } catch (e) {}
          treeItem.lazy = false;
          treeItem.loading = false;
        },
        { once: true }
      );
      node.append(treeItem);
    });
  }

  updated() {
    document.l10n.translateFragment(this.shadowRoot);
    if (!this.attached) {
      this.drawer = this.shadowRoot.querySelector("sl-drawer");
      this.drawer.addEventListener("sl-request-close", this.reject);
      this.btnOk = this.shadowRoot.querySelector("#picker-ok");
      this.root = this.shadowRoot.querySelector("#root");
      this.attached = true;
    }

    // Trigger the tree display from the root.
    if (this.updates != 0) {
      this.root.innerHTML = "";
      this.addSubtree(this.root);
    }
  }

  reject() {
    if (this.deferred) {
      this.deferred.reject();
      this.deferred = null;
      this.selected = null;
    }
  }

  // Returns a promise that will resolve with the resource id of
  // the chosen directory, or reject if none was picked.
  pick() {
    this.updates += 1;
    this.drawer.show();
    this.selected = null;
    this.btnOk.disabled = true;
    return new Promise((resolve, reject) => {
      this.deferred = { resolve, reject };
    });
  }

  onCancel() {
    this.reject();
    this.drawer.hide();
  }

  onOk() {
    if (!this.selected || !this.deferred) {
      return;
    }

    this.deferred.resolve(this.selected.resourceId);
    this.deferred = null;
    this.selected = null;

    this.drawer.hide();
  }

  render() {
    return html` <link
        rel="stylesheet"
        href="components/directory_picker.css"
      />
      <sl-drawer>
        <span slot="label" data-l10n-id="picker-title"></span>
        <sl-tree id="root"></sl-tree>
        <div slot="footer">
          <sl-button
            @click="${this.onOk}"
            id="picker-ok"
            variant="primary"
            data-l10n-id="button-ok"
          ></sl-button>
          <sl-button
            @click="${this.onCancel}"
            id="picker-cancel"
            data-l10n-id="button-cancel"
          ></sl-button>
        </div>
      </sl-drawer>`;
  }
}

customElements.define("directory-picker", DirectoryPicker);


================================================
FILE: apps/files/components/image_renderer.css
================================================
/* <image-renderer> styling */

:host {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
}

:host img {
  flex: 1;
  width: 100%;
  height: 100%;
  object-position: center;
  object-fit: contain;
}

:host .hidden {
  display: none;
}

:host footer {
  display: flex;
}

:host footer div {
  font-size: 1.5em;
  text-align: center;
  cursor: pointer;
  display: flex;
  justify-content: center;
  flex: 1;
  margin-top: 0.25em;
  margin-bottom: 0.25em;
}

:host dialog li {
  display: flex;
  padding-bottom: 0.35em;
  padding-top: 0.35em;
  cursor: pointer;
}

:host dialog ul {
  list-style: none;
  padding-left: 0;
  margin-top: 0;
}


================================================
FILE: apps/files/components/image_renderer.js
================================================
/* image/* renderer component */

export class ImageRenderer extends LitElement {
  constructor(resource) {
    super();
    this.resource = resource;
    this.src = resource.variantUrl();
  }

  log(msg) {
    console.log(`ImageRenderer: ${msg}`);
  }

  static get properties() {
    return {
      src: { state: true },
    };
  }

  updateResource() {
    this.src = this.src + `?r=${Math.random()}`;
  }

  updated() {
    document.l10n.translateFragment(this.shadowRoot);
  }

  render() {
    return html`<link rel="stylesheet" href="components/image_renderer.css" />
      <img crossorigin="anonymous" src=${this.src} />
      `;
  }

  canEdit() {
    return true;
  }
}

customElements.define("image-renderer", ImageRenderer);


================================================
FILE: apps/files/components/main_screen.css
================================================
/* <main-screen> element styling */

:host {
  height: 100%;
  width: 100%;
  display: flex;
  flex-direction: column;
}

:host sl-breadcrumb {
  padding: 0.5em;
  overflow-x: scroll;
  font-size: smaller;
  display: flex;
}

:host .hidden {
  display: none;
}

:host #main {
  flex: 1;
  overflow: hidden;
}

:host footer {
  display: flex;
}

:host footer div {
  font-size: 1.5em;
  text-align: center;
  cursor: pointer;
  display: flex;
  justify-content: center;
  flex: 1;
  margin-top: 0.25em;
  margin-bottom: 0.25em;
}


================================================
FILE: apps/files/components/main_screen.js
================================================
/* Main screen component, encapsulating most logic */

class MainScreen extends LitElement {
  constructor() {
    super();

    this.data = null;
    this.resourcePath = null;
    this.editMode = false;
    this.isContainer = false;
    this.isPublishedOnIpfs = false;

    // When in file picker mode, contains the mime type filter.
    this.fileFilter = null;
    // When in file picker mode, a { resolve, reject } object.
    this.filePicker = null;

    addEventListener("popstate", (event) => {
      this.switchTo(event.state, true);
    });
  }

  log(msg) {
    console.log(`Files[MainScreen] ${msg}`);
  }

  error(msg) {
    console.error(`Files[MainScreen] ${msg}`);
  }

  static get properties() {
    return {
      data: { state: true },
      resourcePath: { state: true },
      editMode: { type: Boolean },
      isContainer: { type: Boolean },
      isPublishedOnIpfs: { type: Boolean },
    };
  }

  enterFilePickerMode(data, defered) {
    this.fileFilter = data.type;
    this.filePickerBroadcast = !!data.forBroadcast;
    this.filePicker = defered;
  }

  closeApp() {
    this.filePicker?.reject();

    window.close();
  }

  buildBreadCrumb(id) {
    // Build the breadcrumb for the resource path.
    contentManager.getService().then(async (svc) => {
      let meta = await svc.getFullPath(id);
      if (!this.homeResourceName) {
        this.homeResourceName = await document.l10n.formatValue(
          "root-resource"
        );
      }
      let paths = meta.map((item) => {
        let path = item.name != "/" ? item.name : this.homeResourceName;
        return { path, id: item.id };
      });
      this.resourcePath = [];
      for (let { path, id } of paths) {
        this.resourcePath.push(
          html`<sl-breadcrumb-item data-id="${id}">${path}</sl-breadcrumb-item>`
        );
      }
    });
  }

  async openRoot() {
    let svc = await contentManager.getService();

    let root = await svc.getRoot();
    let data = { container: true, id: root.id };
    history.replaceState(data, "");
    await this.switchTo(data, true);
  }

  // Returns the mime type of the default variant for this id.
  async defaultMimeType(id) {
    let svc = await contentManager.getService();
    let meta = await svc.getMetadata(id);
    return meta.variants.find((variant) => variant.name == "default")?.mimeType;
  }

  async switchTo(data, fromPopState = false) {
    if (!data) {
      return;
    }

    if (!fromPopState) {
      history.pushState(data, "");
    }

    this.data = data;
    this.renderer = null;

    if (data.container) {
      // Create a container renderer.
      let { ContainerRenderer } = await import(
        "/components/container_renderer.js"
      );
      this.renderer = new ContainerRenderer(data.id, this.fileFilter);
      this.renderer.addEventListener("update-path", (event) => {
        this.data.id = event.detail;
        this.buildBreadCrumb(event.detail);
      });
      this.renderer.addEventListener("switch-to-leaf", async (event) => {
        let id = event.detail.id;
        let mimeType = await this.defaultMimeType(id);
        this.switchTo({ mimeType, id, container: false });
      });
      this.isContainer = true;
      this.isPublishedOnIpfs = false;
    } else {
      this.isContainer = false;
      let resource = await contentManager.resourceFromId(data.id);
      this.isPublishedOnIpfs = !!resource.meta.tags.find((tag) =>
        tag.startsWith(".ipfs://")
      );

      if (data.mimeType.startsWith("image/")) {
        let { ImageRenderer } = await import("/components/image_renderer.js");
        this.renderer = new ImageRenderer(resource);
      } else if (data.mimeType.startsWith("video/")) {
        let { VideoRenderer } = await import("/components/video_renderer.js");
        this.renderer = new VideoRenderer(resource);
      } else {
        this.log(`Using default renderer for mime type '${data.mimeType}'`);
        let { DefaultRenderer } = await import(
          "/components/default_renderer.js"
        );
        this.renderer = new DefaultRenderer(resource);
      }
    }

    this.buildBreadCrumb(data.id);
  }

  async enterEditMode() {
    // Trigger an activity to process the resource.
    try {
      let resource = await contentManager.resourceFromId(this.data.id);
      let response = await fetch(resource.variantUrl());
      let blob = await response.blob();

      let suffix = blob.type.split("/")[0];
      let activity = new WebActivity(`process-${suffix}`, { blob });
      let result = await activity.start();
      await resource.update(result);
      // Update the rendered resource.
      this.renderer?.updateResource();
    } catch (e) {
      console.error(`Error during resource edition: ${e}`);
    }
  }

  async switchPath(event) {
    let newId = event.target.dataset.id;
    this.log(`switchPath ${this.data.id} -> ${newId}`);
    if (!newId || this.data.id == newId) {
      return;
    }

    this.editMode = false;

    // Get the default variant for this id.
    try {
      let svc = await contentManager.getService();
      let meta = await svc.getMetadata(newId);
      let lib = await contentManager.lib();

      if (meta.kind === lib.ResourceKind.CONTAINER) {
        this.switchTo({ id: newId, container: true });
      } else {
        let mimeType = await this.defaultMimeType(newId);
        this.switchTo({ id: newId, mimeType });
      }
    } catch (e) {
      this.error(JSON.stringify(e));
    }
  }

  async deleteResource() {
    // Once the resource is deleted, we will display its parent folder.
    // We need to get the parent id before removing the resource!

    try {
      let svc = await contentManager.getService();
      let meta = await svc.getMetadata(this.data.id);
      let parent = meta.parent;

      await svc.delete(this.data.id);

      await this.switchTo({ id: parent, container: true });
    } catch (e) {
      this.error(JSON.stringify(e));
    }
  }

  async uploadResource() {
    // Copy the resource to the "shared on ipfs" folder and let the IPFS
    // publisher module take care of the actual upload.
    try {
      let target = await contentManager.ensureTopLevelContainer(
        "shared on ipfs"
      );
      let svc = await contentManager.getService();
      let _meta = await svc.copyResource(this.data.id, target);
    } catch (e) {
      this.error(JSON.stringify(e));
    }
  }

  async shareResource() {
    // Download the resource as a Blob, and trigger the "share" activity.
    try {
      let resource = await contentManager.resourceFromId(this.data.id);
      let response = await fetch(resource.variantUrl());
      let blob = await response.blob();
      this.log(`Sharing blob ${blob.type} ${blob.size}`);
      let activity = new WebActivity("share", {
        type: blob.type.split("/")[0],
        blob,
        name: resource.meta.name,
      });
      await activity.start();
    } catch (e) {
      this.error(
        `Failed to share resource ${this.data.id}: ${JSON.stringify(e)}`
      );
    }
  }

  async getBroadcastTicket() {
    // Get the native path of the resource and "provide" it through Iroh.
    try {
      let svc = await contentManager.getService();
      let path = await svc.nativePath(this.data.id, "default");
      let mime = await this.defaultMimeType(this.data.id);

      if (!this.dweb) {
        this.dweb = await apiDaemon.getDwebService();
      }
      let ticket = await this.dweb.broadcastFile(path, mime);
      return ticket;
    } catch (e) {
      this.error(
        `Failed to broadcast resource ${this.data.id}: ${JSON.stringify(e)}`
      );
      console.error(`Failed to broadcast resource ${this.data.id}`, e);
    }
  }

  async broadcastResource() {
    // Get the native path of the resource and "provide" it through Iroh.
    try {
      let ticket = await this.getBroadcastTicket();
      this.log(`Ticket is http://localhost:8081/dweb/${ticket}`);
      let share = new WebActivity("share", { url: `ticket:${ticket}` });
      await share.start();
    } catch (e) {
      this.error(
        `Failed to broadcast resource ${this.data.id}: ${JSON.stringify(e)}`
      );
      console.error(`Failed to broadcast resource ${this.data.id}`, e);
    }
  }

  async pickResource() {
    // Download the resource as a Blob, and return it as the activity result.
    if (!this.filePicker) {
      return;
    }

    try {
      let resource = await contentManager.resourceFromId(this.data.id);
      // If we are asked a broadcastable resource, don't fetch the blob.
      if (this.filePickerBroadcast) {
        let ticket = await this.getBroadcastTicket();
        this.filePicker.resolve({ ticket, name: resource.meta.name });
      } else {
        let response = await fetch(resource.variantUrl());
        let blob = await response.blob();
        this.filePicker.resolve(blob);
      }
    } catch (e) {
      this.error(
        `Failed to pick resource ${this.data.id}: ${JSON.stringify(e)}`
      );
      this.filePicker.reject();
    }
    window.close();
  }

  render() {
    this.log(`render editMode=${this.editMode}`);
    let content = this.renderer || html`<div></div>`;

    let filePickerClass = this.filePicker ? "hidden" : "";

    return html`<link rel="stylesheet" href="components/main_screen.css" />
      <sl-breadcrumb @click="${this.switchPath}"
        >${this.resourcePath}</sl-breadcrumb
      >
      <div id="main">${content}</div>
      <footer class="${this.editMode || this.isContainer ? "hidden" : ""}">
        <div
          @click="${this.enterEditMode}"
          class="${!this.filePicker && this.renderer?.canEdit()
            ? ""
            : "hidden"}"
        >
          <sl-icon-button name="edit"></sl-icon-button>
        </div>
        <div @click="${this.uploadResource}" class="${filePickerClass}">
          ${this.isPublishedOnIpfs
            ? html`<sl-icon-button disabled name="upload"></sl-icon-button>`
            : html`<sl-icon-button name="upload"></sl-icon-button>`}
        </div>
        <div @click="${this.shareResource}" class="${filePickerClass}">
          <sl-icon-button name="share-2"></sl-icon-button>
        </div>
        <div @click="${this.broadcastResource}" class="${filePickerClass}">
          <sl-icon-button name="airplay"></sl-icon-button>
        </div>
        <div @click="${this.deleteResource}" class="${filePickerClass}">
          <sl-icon-button name="trash-2"></sl-icon-button>
        </div>
        <div
          @click="${this.pickResource}"
          class="${this.filePicker ? "" : "hidden"}"
        >
          <sl-icon-button name="check"></sl-icon-button>
        </div>
        <div @click="${this.closeApp}">
          <sl-icon-button name="x"></sl-icon-button>
        </div>
      </footer>`;
  }
}

customElements.define("main-screen", MainScreen);


================================================
FILE: apps/files/components/video_renderer.css
================================================
/* <video-renderer> styling */

:host {
  display: flex;
  flex-direction: column;
  width: 100%;
  height: 100%;
}

:host video {
  flex: 1;
  width: 100%;
  height: 100%;
  object-position: center;
  object-fit: contain;
}


================================================
FILE: apps/files/components/video_renderer.js
================================================
/* image/* renderer component */

export class VideoRenderer extends LitElement {
  constructor(resource) {
    super();
    this.resource = resource;
    this.src = resource.variantUrl();
  }

  log(msg) {
    console.log(`VideoRenderer: ${msg}`);
  }

  static get properties() {
    return {
      src: { state: true },
    };
  }

  render() {
    return html`<link rel="stylesheet" href="components/video_renderer.css" />
      <video controls src=${this.src} />`;
  }

  canEdit() {
    return false;
  }
}

customElements.define("video-renderer", VideoRenderer);


================================================
FILE: apps/files/index.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta
      name="viewport"
      content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no"
    />
    <meta name="theme-color" content="white" />
    <title data-l10n-id="page-title"></title>

    <meta name="defaultLanguage" content="en-US" />
    <meta name="availableLanguages" content="en-US,zh-CN,ja" />
    <link rel="icon" href="icons/files.svg" />
    <link rel="localization" href="./locales/{locale}/main.ftl" />

    <link rel="stylesheet" href="style/index.css" type="text/css" />

    <script src="js/config.js"></script>
    <script src="js/bootstrap.js"></script>
  </head>
  <body>
    <main-screen></main-screen>
    <directory-picker id="directory-picker"></directory-picker>
  </body>
</html>


================================================
FILE: apps/files/js/bootstrap.js
================================================
const kDeps = [
  {
    name: "main",
    kind: "virtual",
    deps: [
      "main screen",
      "activity manager",
      "shoelace-light-theme",
      "shoelace-setup",
    ],
  },
  {
    name: "lit element",
    kind: "sharedModule",
    param: ["components/lit.js", ["LitElement", "html", "css"]],
  },
  {
    name: "main screen",
    kind: "module",
    param: ["./components/main_screen.js"],
    deps: [
      "lit element",
      "content manager",
      "shoelace-icon",
      "shoelace-icon-button",
      "shoelace-button",
      "shoelace-breadcrumb",
      "shoelace-breadcrumb-item",
      "shoelace-dropdown",
      "shoelace-menu",
      "shoelace-menu-item",
    ],
  },
  {
    name: "api daemon core",
    kind: "sharedWindowModule",
    param: ["js/api_daemon.js", "apiDaemon", "ApiDaemon"],
  },
  {
    name: "content manager",
    kind: "sharedWindowModule",
    param: ["js/content_manager.js", "contentManager", "ContentManager"],
    deps: ["api daemon core"],
  },
  {
    name: "activity manager",
    kind: "sharedModule",
    param: ["js/activity_manager.js", ["ActivityManager"]],
  },
  {
    name: "directory picker",
    kind: "module",
    param: ["./components/directory_picker.js"],
    deps: [
      "shoelace-drawer",
      "shoelace-button",
      "shoelace-tree",
      "shoelace-tree-item",
    ],
  },
];

function log(msg) {
  console.log(`Files: ${msg}`);
}

let ready;
let _p = new Promise((resolve) => {
  ready = resolve;
});

var graph;

document.addEventListener(
  "DOMContentLoaded",
  async () => {
    log(`DOMContentLoaded`);
    await depGraphLoaded;

    graph = new ParallelGraphLoader(addSharedDeps(addShoelaceDeps(kDeps)));
    await Promise.all(
      ["shared-fluent", "shared-api-daemon", "main"].map((dep) =>
        graph.waitForDeps(dep)
      )
    );

    // Configure activity handlers.
    let activities = new ActivityManager({
      "view-resource": activityViewResource,
      pick: activityPick,
    });

    await contentManager.as_superuser();

    log(`Starting at ${document.location}`);

    if (document.location.hash == "") {
      document.querySelector("main-screen").openRoot();
    }

    ready();
  },
  { once: true }
);

async function ensureReady() {
  await ready;
  await contentManager.as_superuser();
}

async function activityViewResource(data) {
  await ensureReady();
  log(`activityViewResource ${data.id}`);
  history.replaceState(data, "");
  document.querySelector("main-screen").switchTo(data, true);
}

async function activityPick(data) {
  await ensureReady();
  let mainScreen = document.querySelector("main-screen");
  let defered = {};
  let p = new Promise((resolve, reject) => {
    defered = { resolve, reject };
  });
  mainScreen.enterFilePickerMode(data, defered);
  mainScreen.openRoot();
  return p;
}


================================================
FILE: apps/files/js/config.js
================================================
// We run on the default port on device.
const isDevice = location.port === "";

window.config = {
  isDevice,
  port: isDevice ? 80 : 8081,
};

function addLink(url) {
  let link = document.createElement("link");
  link.setAttribute("rel", "stylesheet");
  link.setAttribute("href", url);
  document.head.appendChild(link);
  return link;
}

function loadScript(url, defer = false) {
  let script = document.createElement("script");
  script.setAttribute("src", url);
  if (defer) {
    script.setAttribute("defer", "true");
  }
  document.head.appendChild(script);
  return script;
}

function loadSharedScript(url) {
  return loadScript(`http://shared.localhost:${location.port}/${url}`);
}

// Load <link rel="stylesheet" href="style/{device|desktop}.css" />
addLink(`/style/${isDevice ? "device" : "desktop"}.css`);

let depGraphLoaded = new Promise((resolve) => {
  loadSharedScript("js/dep_graph.js").onload = resolve;
});


================================================
FILE: apps/files/locales/en-US/main.ftl
================================================
# Main page
page-title = Files

# <main-screen>
# The label of the root resource in a breadcrumb display.
root-resource = Home

# Generic
close = Close
cant-move-directory = Sorry, moving directories is not supported yet.
cant-copy-directory = Sorry, copying directories is not supported yet.

# <container-renderer>
empty-container = This Folder is Empty
new-dir-name = Enter New Directory Name:
new-resource-name = Enter New Name:
menu-resource-move = Move To…
menu-resource-copy = Copy To…
menu-resource-rename = Rename…
menu-resource-details = Details…

# Directory Picker
picker-title = Choose a Directory
button-ok = Ok
button-cancel = Cancel


================================================
FILE: apps/files/locales/ja/main.ftl
================================================
# Main page
page-title = ファイル

# <main-screen>
# The label of the root resource in a breadcrumb display.
root-resource = ホーム

# Generic
close = Close
cant-move-directory = 申し訳ありませんが、ディレクトリーの移動にはまだ対応していません。
cant-copy-directory = 申し訳ありませんが、ディレクトリーのコピーにはまだ対応していません。

# <container-renderer>
empty-container = このフォルダーは空です
new-dir-name = 新しいディレクトリー名を入力:
new-resource-name = 新しい名前を入力:
menu-resource-move = 移動先…
menu-resource-copy = コピー先…
menu-resource-rename = 名前変更…
menu-resource-details = ファイル詳細…

# Directory Picker
picker-title = ディレクトリー選択
button-ok = OK
button-cancel = キャンセル


================================================
FILE: apps/files/locales/zh-CN/main.ftl
================================================
# Main page
page-title = 文件

# <main-screen>
# The label of the root resource in a breadcrumb display.
root-resource = 根目录

# Generic
close = 关闭

# <container-renderer>
empty-container = 这个文件夹是空的


================================================
FILE: apps/files/manifest.webmanifest
================================================
{
  "name": "Files",
  "description": "Manage your data",
  "start_url": "/index.html",
  "icons": [
    {
      "src": "/icons/files.svg",
      "type": "image/svg",
      "sizes": "any"
    }
  ],
  "b2g_features": {
    "core": true,
    "developer": {
      "name": "The Capyloon team"
    },
    "permissions": {
      "content-manager": {},
      "dweb": {},
      "settings": { "access": "readwrite" },
      "web-view": {}
    },
    "serviceworker": {
      "script_url": "sw.js"
    },
    "activities": {
      "view-resource": {
        "filters": {
          "id": { "required": true }
        }
      },
      "pick": {
        "filters": {
          "type": { "required": true, "value": ["image", "video", "text"] }
        },
        "returnValue": true
      }
    }
  },
  "version": "1.0"
}


================================================
FILE: apps/files/style/desktop.css
================================================
html,
body {
  font-size: 4mm;
}

================================================
FILE: apps/files/style/device.css
================================================
html,
body {
  font-size: 4mm;
}

================================================
FILE: apps/files/style/index.css
================================================
html,
body {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  user-select: none;
  background-color: var(--sl-panel-background-color);
  color: var(--sl-color-neutral-700);
}

* {
  box-sizing: border-box;
}


================================================
FILE: apps/files/sw.js
================================================
const HAS_RETURN_VALUE_ACTIVITIES = ["pick"];

importScripts(`http://shared.localhost:${location.port}/js/activity_sw.js`);


================================================
FILE: apps/ftu/features.md
================================================
# Screens

## Welcome screen

Welcome to Nutria! In the following screens we'll guide you to configure your device.
If you change your mind later, you'll be able to change these parameters in the Settings application.

    [ Ok ]

## Language Selection

Select the language you want to use:
[  English   ]
[  Français  ]
[  German    ]
[  Spanish   ]

   [ Ok ]

## Wifi Setup

Select a Wifi network to connect:

[ Network 1 ]
...
[ Network N ]

  [ Back ]  [ Ok ]

## Date / Time

Automatic Time: [x]
Set Time: [ Time Picker ]

Automatic TimeZone: [x]
Time Zone: [ List ]

  [ Back ]  [ Ok ]

## Search Engine

Select a search engine:

[ Brave      ]
[ Neeva      ]
[ DuckDuckGo ]
[ ...        ]
[ Ecosia     ]

  [ Back ]  [ Ok ]

## All done!

You're all set - Enjoy your Capyloon device!

  [ Back ]  [ Ok ]


================================================
FILE: apps/ftu/index.html
================================================
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>ftu</title>
    <meta charset="utf-8" />
    <meta name="theme-color" content="#ffffff" />
    <link rel="icon" href="icons/ftu.svg" />
    <link rel="manifest" href="manifest.webmanifest" />
    <link rel="stylesheet" href="style/main.css" />

    <meta name="defaultLanguage" content="en-US" />
    <meta name="availableLanguages" content="en-US,zh-CN,ja" />
    <link rel="localization" href="locales/{locale}/main.ftl" />

    <script src="js/config.js"></script>
    <script src="js/dependencies.js"></script>
    <script src="js/main.js"></script>
  </head>
  <body class="ftu">
    <div id="logo">
      <div class="title" data-l10n-id="logo-title"></div>
      <div class="subtitle" data-l10n-id="logo-subtitle"></div>
    </div>

    <div class="intro">
      <h1 data-l10n-id="ftu-welcome"></h1>
      <p data-l10n-id="ftu-intro-1"></p>
      <p data-l10n-id="ftu-intro-2"></p>
      <div class="center">
        <sl-button
          id="btn-start"
          variant="primary"
          data-l10n-id="btn-start"
        ></sl-button>
      </div>
    </div>

    <!-- The language selection panel -->
    <template id="language-panel-tmpl">
      <div class="drawer-content">
        <h1 data-l10n-id="language-title" class="branded-text"></h1>
        <header>
          <sl-icon name="languages"></sl-icon>&nbsp;
          <span data-l10n-id="language-select"></span>
        </header>

        <sl-menu class="initial-focus"> </sl-menu>
      </div>

      <div slot="footer">
        <sl-button class="panel-back" data-l10n-id="btn-back"></sl-button>
        <sl-button
          class="panel-ok"
          variant="primary"
          data-l10n-id="btn-ok"
        ></sl-button>
      </div>
    </template>

    <!-- The wifi setup panel -->
    <template id="wifi-panel-tmpl">
      <div class="drawer-content">
        <h1 data-l10n-id="wifi-title" class="branded-text"></h1>
        <header>
          <sl-icon name="wifi" id="wifi-status-icon"></sl-icon>&nbsp;
          <span id="wifi-status-text" data-l10n-id="wifi-status-enabled"></span>
          <sl-switch id="wifi-on-off-switch"></sl-switch>
        </header>

        <sl-menu id="networks">
          <sl-menu-item disabled data-l10n-id="wifi-no-network"></sl-menu-item>
          <sl-divider id="wifi-divider" class="hidden"></sl-divider>
        </sl-menu>
        <sl-button data-l10n-id="wifi-rescan">s</sl-button>
      </div>

      <sl-dialog id="wifi-password-dialog">
        <sl-input
          password-toggle
          clearable
          type="password"
          minlength="8"
          id="wifi-password-input"
          data-l10n-attrs="label"
          data-l10n-id="wifi-password-desc"
        ></sl-input>

        <div slot="footer">
          <sl-button data-l10n-id="btn-cancel"></sl-button>
          <sl-button variant="primary" data-l10n-id="btn-ok"></sl-button>
        </div>
      </sl-dialog>

      <div slot="footer">
        <sl-button class="panel-back" data-l10n-id="btn-back"></sl-button>
        <sl-button
          class="panel-ok"
          variant="primary"
          data-l10n-id="btn-ok"
        ></sl-button>
      </div>
    </template>

    <!-- The time & date panel -->
    <template id="datetime-panel-tmpl">
      <div class="drawer-content">
        <h1 data-l10n-id="datetime-title" class="branded-text"></h1>

        <section>
          <header>
            <sl-icon name="clock"></sl-icon>&nbsp;
            <span data-l10n-id="datetime-clock-automatic-update"></span>
            <sl-switch id="datetime-clock-switch"></sl-switch>
          </header>
          <div id="datetime-clock-current"></div>
          <div id="datetime-clock-details" class="hidden">
            <sl-input
              id="datetime-clock-input"
              type="datetime-local"
              data-l10n-attrs="label"
              data-l10n-id="datetime-clock-desc"
            ></sl-input>
            <sl-button
              id="datetime-clock-set"
              variant="primary"
              data-l10n-id="datetime-clock-set"
            ></sl-button>
          </div>
          <sl-alert
            id="datetime-clock-success"
            variant="primary"
            duration="2000"
            closable
          >
            <sl-icon slot="icon" name="check-circle"></sl-icon>
            <strong data-l10n-id="datetime-clock-change-success"></strong><br />
          </sl-alert>
          <sl-alert
            id="datetime-clock-error"
            variant="danger"
            duration="2000"
            closable
          >
            <sl-icon slot="icon" name="alert-circle"></sl-icon>
            <strong data-l10n-id="datetime-clock-change-error"></strong><br />
          </sl-alert>
        </section>

        <section>
          <header>
            <sl-icon name="globe-2"></sl-icon>&nbsp;
            <span data-l10n-id="datetime-timezone-automatic-update"></span>
            <sl-switch id="datetime-timezone-switch"></sl-switch>
          </header>
          <div id="datetime-timezone-details" class="hidden"></div>
          <sl-alert
            id="datetime-timezone-success"
            variant="primary"
            duration="2000"
            closable
          >
            <sl-icon slot="icon" name="check-circle"></sl-icon>
            <strong data-l10n-id="datetime-timezone-change-success"></strong
            ><br />
            <span id="datetime-timezone-value"></span>
          </sl-alert>
          <sl-alert
            id="datetime-timezone-error"
            variant="danger"
            duration="2000"
            closable
          >
            <sl-icon slot="icon" name="alert-circle"></sl-icon>
            <strong data-l10n-id="datetime-timezone-change-error"></strong
            ><br />
          </sl-alert>
        </section>
      </div>

      <div slot="footer">
        <sl-button class="panel-back" data-l10n-id="btn-back"></sl-button>
        <sl-button
          class="panel-ok"
          variant="primary"
          data-l10n-id="btn-ok"
        ></sl-button>
      </div>
    </template>

    <!-- The privacy preferences setup panel -->
    <template id="privacy-panel-tmpl">
      <div class="drawer-content">
        <h1 data-l10n-id="privacy-title" class="branded-text"></h1>

        <header>
          <sl-icon id="privacy-geolocation-icon" name="locate"></sl-icon>&nbsp;
          <span data-l10n-id="privacy-geolocation-enabled"></span>
          <sl-switch id="privacy-geolocation-switch"></sl-switch>
        </header>

        <header>
          <img id="privacy-tor-icon" />&nbsp;
          <span data-l10n-id="privacy-tor-enabled"></span>
          <sl-switch id="privacy-tor-switch"></sl-switch>
        </header>

        <header>
          <sl-icon id="privacy-tp-icon" name="shield"></sl-icon>&nbsp;
          <span data-l10n-id="privacy-tp-enabled"></span>
          <sl-switch id="privacy-tp-switch"></sl-switch>
        </header>

        <header>
          <sl-icon id="privacy-gpc-icon" name="shield"></sl-icon>&nbsp;
          <span data-l10n-id="privacy-gpc-enabled"></span>
          <sl-switch id="privacy-gpc-switch"></sl-switch>
        </header>
      </div>

      <div slot="footer">
        <sl-button class="panel-back" data-l10n-id="btn-back"></sl-button>
        <sl-button
          class="panel-ok"
          variant="primary"
          data-l10n-id="btn-ok"
        ></sl-button>
      </div>
    </template>

    <!-- The search engines setup panel -->
    <template id="search-panel-tmpl">
      <div class="drawer-content">
        <h1 data-l10n-id="search-title" class="branded-text"></h1>
        <header>
          <sl-icon name="search"></sl-icon>&nbsp;
          <span data-l10n-id="search-select"></span>
        </header>
        <p data-l10n-id="search-details"></p>

        <sl-menu class="initial-focus"> </sl-menu>

        <sl-alert variant="danger">
          <sl-icon slot="icon" name="alert-circle"></sl-icon>
          <strong data-l10n-id="search-error-no-enabled"></strong>
        </sl-alert>
      </div>

      <div slot="footer">
        <sl-button class="panel-back" data-l10n-id="btn-back"></sl-button>
        <sl-button
          class="panel-ok"
          variant="primary"
          data-l10n-id="btn-ok"
        ></sl-button>
      </div>
    </template>

    <!-- The web extensions setup panel -->
    <template id="webext-panel-tmpl">
      <div class="drawer-content">
        <h1 data-l10n-id="webext-title" class="branded-text"></h1>
        <header>
          <sl-icon name="layout-dashboard"></sl-icon>&nbsp;
          <span data-l10n-id="webext-install"></span>
        </header>
        <p data-l10n-id="webext-details"></p>

        <sl-alert variant="danger">
          <sl-icon slot="icon" name="alert-circle"></sl-icon>
          <strong data-l10n-id="webext-error-no-network"></strong>
        </sl-alert>

        <sl-menu class="initial-focus"> </sl-menu>
      </div>

      <div slot="footer">
        <sl-button class="panel-back" data-l10n-id="btn-back"></sl-button>
        <sl-button
          class="panel-ok"
          variant="primary"
          data-l10n-id="btn-ok"
        ></sl-button>
      </div>
    </template>

    <!-- The display preferences setup panel -->
    <template id="display-panel-tmpl">
      <div class="drawer-content">
        <h1 data-l10n-id="display-title" class="branded-text"></h1>

        <header>
          <sl-icon name="palette"></sl-icon>&nbsp;
          <span data-l10n-id="display-prefer-dark"></span>
          <sl-switch></sl-switch>
        </header>
      </div>

      <div slot="footer">
        <sl-button class="panel-back" data-l10n-id="btn-back"></sl-button>
        <sl-button
          class="panel-ok"
          variant="primary"
          data-l10n-id="btn-ok"
        ></sl-button>
      </div>
    </template>

    <!-- The identity panel -->
    <template id="identity-panel-tmpl">
      <div class="drawer-content">
        <h1 data-l10n-id="identity-title" class="branded-text"></h1>

        <header>
          <sl-icon name="smartphone"></sl-icon>&nbsp;
          <span data-l10n-id="identity-device-set-name"></span>
        </header>
        <sl-input
          id="identity-device-desc"
          data-l10n-id="identity-device-desc"
          data-l10n-attrs="placeholder"
        ></sl-input>

        <header>
          <sl-icon name="users"></sl-icon>&nbsp;
          <span data-l10n-id="identity-select"></span>
        </header>
        <p data-l10n-id="identity-details"></p>

        <sl-menu class="initial-focus"></sl-menu>
        <sl-alert variant="danger" duration="1000">
          <sl-icon slot="icon" name="alert-circle"></sl-icon>
          <strong data-l10n-id="identity-error-duplicate"></strong>
        </sl-alert>
        <div class="identity-add">
          <sl-input
            id="identity-input-add"
            data-l10n-attrs="placeholder"
            data-l10n-id="identity-add-input"
          ></sl-input>
          <sl-button data-l10n-id="identity-add"></sl-button>
        </div>
      </div>

      <div slot="footer">
        <sl-button class="panel-back" data-l10n-id="btn-back"></sl-button>
        <sl-button
          class="panel-done"
          variant="primary"
          data-l10n-id="btn-done"
        ></sl-button>
      </div>
    </template>
  </body>
</html>


================================================
FILE: apps/ftu/js/config.js
================================================
// We run on the default port on device.
const isDevice = location.port === "";

window.config = {
  isDevice,
  port: isDevice ? 80 : 8081,
};

function addStylesheet(url) {
  let link = document.createElement("link");
  link.setAttribute("rel", "stylesheet");
  link.setAttribute("href", url);
  document.head.appendChild(link);
  return link;
}

f
Download .txt
Showing preview only (574K chars total). Download the full file or copy to clipboard to get everything.
gitextract_f__1hgy7/

├── .github/
│   └── ISSUE_TEMPLATE/
│       └── bug_report.md
├── .gitignore
├── Android.mk
├── LICENSE
├── README.md
├── apps/
│   ├── .gitignore
│   ├── branding-b2gos/
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   ├── branding/
│   │   │   │   │   └── brand.ftl
│   │   │   │   ├── branding.ftl
│   │   │   │   └── neterror.ftl
│   │   │   └── ja/
│   │   │       ├── branding/
│   │   │       │   └── brand.ftl
│   │   │       ├── branding.ftl
│   │   │       └── neterror.ftl
│   │   ├── manifest.webmanifest
│   │   └── style/
│   │       └── branding.css
│   ├── branding-capyloon/
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   ├── branding/
│   │   │   │   │   └── brand.ftl
│   │   │   │   ├── branding.ftl
│   │   │   │   └── neterror.ftl
│   │   │   ├── ja/
│   │   │   │   ├── branding/
│   │   │   │   │   └── brand.ftl
│   │   │   │   ├── branding.ftl
│   │   │   │   └── neterror.ftl
│   │   │   └── zh-CN/
│   │   │       ├── branding.ftl
│   │   │       ├── browser/
│   │   │       │   └── appExtensionFields.ftl
│   │   │       └── neterror.ftl
│   │   ├── manifest.webmanifest
│   │   └── style/
│   │       └── branding.css
│   ├── camera/
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── bootstrap.js
│   │   │   ├── camera_base.js
│   │   │   ├── camera_gonk.js
│   │   │   ├── camera_webrtc.js
│   │   │   ├── config.js
│   │   │   └── qr_code.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   ├── ja/
│   │   │   │   └── main.ftl
│   │   │   └── zh-CN/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── qrdecoder/
│   │   │   ├── qrdecoder.js
│   │   │   └── qrdecoder.wasm
│   │   ├── style/
│   │   │   ├── desktop.css
│   │   │   ├── device.css
│   │   │   └── index.css
│   │   └── sw.js
│   ├── contacts/
│   │   ├── components/
│   │   │   ├── contact_info.css
│   │   │   └── contact_info.js
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── add_panel.js
│   │   │   ├── config.js
│   │   │   ├── dependencies.js
│   │   │   └── main.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   ├── ja/
│   │   │   │   └── main.ftl
│   │   │   └── zh-CN/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── style/
│   │   │   ├── desktop.css
│   │   │   ├── device.css
│   │   │   └── main.css
│   │   └── sw.js
│   ├── dialer/
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── config.js
│   │   │   └── main.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   ├── ja/
│   │   │   │   └── main.ftl
│   │   │   └── zh-CN/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   └── style/
│   │       ├── desktop.css
│   │       ├── device.css
│   │       └── index.css
│   ├── files/
│   │   ├── components/
│   │   │   ├── container_renderer.css
│   │   │   ├── container_renderer.js
│   │   │   ├── default_renderer.css
│   │   │   ├── default_renderer.js
│   │   │   ├── directory_picker.css
│   │   │   ├── directory_picker.js
│   │   │   ├── image_renderer.css
│   │   │   ├── image_renderer.js
│   │   │   ├── main_screen.css
│   │   │   ├── main_screen.js
│   │   │   ├── video_renderer.css
│   │   │   └── video_renderer.js
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── bootstrap.js
│   │   │   └── config.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   ├── ja/
│   │   │   │   └── main.ftl
│   │   │   └── zh-CN/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── style/
│   │   │   ├── desktop.css
│   │   │   ├── device.css
│   │   │   └── index.css
│   │   └── sw.js
│   ├── ftu/
│   │   ├── features.md
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── config.js
│   │   │   ├── datetime_panel.js
│   │   │   ├── dependencies.js
│   │   │   ├── display_panel.js
│   │   │   ├── identity_panel.js
│   │   │   ├── language_panel.js
│   │   │   ├── main.js
│   │   │   ├── privacy_panel.js
│   │   │   ├── search_panel.js
│   │   │   ├── webext_panel.js
│   │   │   └── wifi_panel.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   ├── ja/
│   │   │   │   └── main.ftl
│   │   │   └── zh-CN/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   └── style/
│   │       ├── desktop.css
│   │       ├── device.css
│   │       └── main.css
│   ├── gecko-l10n/
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── browser/
│   │   │   │       ├── appExtensionFields.ftl
│   │   │   │       └── safebrowsing/
│   │   │   │           └── blockedSite.ftl
│   │   │   └── ja/
│   │   │       └── browser/
│   │   │           ├── appExtensionFields.ftl
│   │   │           └── safebrowsing/
│   │   │               └── blockedSite.ftl
│   │   └── manifest.webmanifest
│   ├── homescreen/
│   │   ├── components/
│   │   │   ├── action_activity.css
│   │   │   ├── action_activity.js
│   │   │   ├── action_bookmark.css
│   │   │   ├── action_bookmark.js
│   │   │   ├── action_box.css
│   │   │   ├── action_box.js
│   │   │   ├── action_widget.css
│   │   │   ├── action_widget.js
│   │   │   ├── actions_wall.css
│   │   │   ├── actions_wall.js
│   │   │   ├── default_results.css
│   │   │   ├── default_results.js
│   │   │   ├── qr_dialog.css
│   │   │   ├── qr_dialog.js
│   │   │   └── resource_item.css
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── actions_store.js
│   │   │   ├── bootstrap.js
│   │   │   ├── config.js
│   │   │   ├── dependencies.js
│   │   │   ├── search/
│   │   │   │   ├── apps.js
│   │   │   │   ├── contacts.js
│   │   │   │   ├── fend.js
│   │   │   │   ├── fend_wasm.js
│   │   │   │   ├── fend_wasm_bg.wasm
│   │   │   │   ├── media.js
│   │   │   │   ├── opensearch.js
│   │   │   │   ├── places.js
│   │   │   │   ├── search_activity.js
│   │   │   │   ├── search_source.js
│   │   │   │   ├── skills.js
│   │   │   │   └── top_sites.js
│   │   │   └── search_panel.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   ├── ja/
│   │   │   │   └── main.ftl
│   │   │   └── zh-CN/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── resources/
│   │   │   ├── .gitignore
│   │   │   ├── default/
│   │   │   │   └── actions.json
│   │   │   ├── top_10k_sites.js
│   │   │   ├── update-alexa-1m.sh
│   │   │   └── update-topsites.sh
│   │   ├── style/
│   │   │   ├── desktop.css
│   │   │   ├── device.css
│   │   │   ├── index.css
│   │   │   └── search/
│   │   │       ├── media.css
│   │   │       └── places.css
│   │   └── sw.js
│   ├── keyboard/
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── config.js
│   │   │   └── main.js
│   │   ├── layouts/
│   │   │   ├── en-US.js
│   │   │   └── fr-FR.js
│   │   ├── manifest.webmanifest
│   │   └── style/
│   │       └── index.css
│   ├── mediacenter/
│   │   ├── components/
│   │   │   ├── default_results.css
│   │   │   ├── default_results.js
│   │   │   └── resource_item.css
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── bootstrap.js
│   │   │   ├── config.js
│   │   │   ├── dependencies.js
│   │   │   ├── favorites.js
│   │   │   ├── search/
│   │   │   │   ├── opensearch.js
│   │   │   │   ├── places.js
│   │   │   │   ├── search_source.js
│   │   │   │   └── top_sites.js
│   │   │   └── search_panel.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   ├── ja/
│   │   │   │   └── main.ftl
│   │   │   └── zh-CN/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── resources/
│   │   │   └── top_10k_sites.js
│   │   ├── style/
│   │   │   ├── desktop.css
│   │   │   ├── device.css
│   │   │   ├── index.css
│   │   │   └── search/
│   │   │       ├── media.css
│   │   │       └── places.css
│   │   └── sw.js
│   ├── messages/
│   │   ├── components/
│   │   │   ├── message_display.css
│   │   │   ├── message_display.js
│   │   │   ├── thread_head.css
│   │   │   └── thread_head.js
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── bootstrap.js
│   │   │   └── config.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   ├── ja/
│   │   │   │   └── main.ftl
│   │   │   └── zh-CN/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── style/
│   │   │   ├── desktop.css
│   │   │   ├── device.css
│   │   │   └── index.css
│   │   └── sw.js
│   ├── peers/
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── bootstrap.js
│   │   │   └── config.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   └── ja/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── style/
│   │   │   └── index.css
│   │   └── sw.js
│   ├── remotecontrol/
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── bootstrap.js
│   │   │   └── config.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   └── ja/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── style/
│   │   │   └── index.css
│   │   └── sw.js
│   ├── settings/
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── apps_panel.js
│   │   │   ├── config.js
│   │   │   ├── datetime_panel.js
│   │   │   ├── dependencies.js
│   │   │   ├── display_panel.js
│   │   │   ├── dweb_panel.js
│   │   │   ├── identity_panel.js
│   │   │   ├── language_panel.js
│   │   │   ├── lockscreen_panel.js
│   │   │   ├── main.js
│   │   │   ├── privacy_panel.js
│   │   │   ├── search_panel.js
│   │   │   ├── systeminfo_panel.js
│   │   │   ├── telephony_panel.js
│   │   │   ├── webext_panel.js
│   │   │   └── wifi_panel.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   ├── ja/
│   │   │   │   └── main.ftl
│   │   │   └── zh-CN/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   └── style/
│   │       ├── app_item.css
│   │       ├── desktop.css
│   │       ├── device.css
│   │       ├── main.css
│   │       └── web_extension.css
│   ├── settings.md
│   ├── shared/
│   │   ├── components/
│   │   │   ├── lit.js
│   │   │   └── lucide_icon.js
│   │   ├── fonts/
│   │   │   └── Readex_Pro/
│   │   │       ├── OFL.txt
│   │   │       └── README.txt
│   │   ├── js/
│   │   │   ├── activity_manager.js
│   │   │   ├── activity_sw.js
│   │   │   ├── api_daemon.js
│   │   │   ├── apps_manager.js
│   │   │   ├── content_manager.js
│   │   │   ├── dep_graph.js
│   │   │   ├── fluent_web.js
│   │   │   ├── injected.js
│   │   │   ├── injected_scripts/
│   │   │   │   └── netflix_tv.js
│   │   │   ├── ipfs.js
│   │   │   ├── panel_manager.js
│   │   │   ├── shoelace_setup.js
│   │   │   ├── spatial_navigation.js
│   │   │   ├── switch_setting.js
│   │   │   └── tile.js
│   │   ├── lucide/
│   │   │   └── Lucide.css
│   │   ├── manifest.webmanifest
│   │   ├── opensearch/
│   │   │   ├── brave.xml
│   │   │   ├── duckduckgo.xml
│   │   │   ├── ecosia.xml
│   │   │   ├── ipfs-search.xml
│   │   │   ├── mojeek.xml
│   │   │   └── opensearch.json
│   │   ├── resources/
│   │   │   ├── apn.json
│   │   │   ├── languages.json
│   │   │   ├── tosdr_org.json
│   │   │   └── tz.json
│   │   ├── shoelace/
│   │   │   ├── chunks/
│   │   │   │   ├── chunk.23HDCGKH.js
│   │   │   │   ├── chunk.24R5WE5A.js
│   │   │   │   ├── chunk.27ILGUWR.js
│   │   │   │   ├── chunk.2MCJQUSU.js
│   │   │   │   ├── chunk.2SZPKEN5.js
│   │   │   │   ├── chunk.2XMW5A5T.js
│   │   │   │   ├── chunk.34HYYZYW.js
│   │   │   │   ├── chunk.34S4OTPW.js
│   │   │   │   ├── chunk.36T65R7Z.js
│   │   │   │   ├── chunk.3A33BUSS.js
│   │   │   │   ├── chunk.3GITBIC4.js
│   │   │   │   ├── chunk.3K4U45R6.js
│   │   │   │   ├── chunk.3KCPXO34.js
│   │   │   │   ├── chunk.3MK3XHG7.js
│   │   │   │   ├── chunk.3OR6KPRS.js
│   │   │   │   ├── chunk.3TFKS637.js
│   │   │   │   ├── chunk.3TH5U7GS.js
│   │   │   │   ├── chunk.3Y6SB6QS.js
│   │   │   │   ├── chunk.43P53PKZ.js
│   │   │   │   ├── chunk.45QSH7JE.js
│   │   │   │   ├── chunk.466L6EFI.js
│   │   │   │   ├── chunk.4AGXO3EP.js
│   │   │   │   ├── chunk.4AL4ELCP.js
│   │   │   │   ├── chunk.4FM4N6Z2.js
│   │   │   │   ├── chunk.4M5XFOS7.js
│   │   │   │   ├── chunk.4N33ARUV.js
│   │   │   │   ├── chunk.4P5INGMM.js
│   │   │   │   ├── chunk.4PLZZP5P.js
│   │   │   │   ├── chunk.52GJFLW5.js
│   │   │   │   ├── chunk.55WP6TJR.js
│   │   │   │   ├── chunk.5H6S5K32.js
│   │   │   │   ├── chunk.5HFAXYOW.js
│   │   │   │   ├── chunk.5N5HUQFF.js
│   │   │   │   ├── chunk.5NRBQ6G4.js
│   │   │   │   ├── chunk.5OAEXGXA.js
│   │   │   │   ├── chunk.5QCEXB5W.js
│   │   │   │   ├── chunk.5UWXIW7Q.js
│   │   │   │   ├── chunk.5XKCLU7M.js
│   │   │   │   ├── chunk.63UPDLBW.js
│   │   │   │   ├── chunk.6LJMKLWZ.js
│   │   │   │   ├── chunk.6MBM5MRH.js
│   │   │   │   ├── chunk.6OLIJM6I.js
│   │   │   │   ├── chunk.6SLWKGTQ.js
│   │   │   │   ├── chunk.73DES5UF.js
│   │   │   │   ├── chunk.7KSQ6COJ.js
│   │   │   │   ├── chunk.7M4O7FFO.js
│   │   │   │   ├── chunk.7S64EEJW.js
│   │   │   │   ├── chunk.7WOVQUDP.js
│   │   │   │   ├── chunk.A3SSAVPV.js
│   │   │   │   ├── chunk.A4SOQOK5.js
│   │   │   │   ├── chunk.AFG7IAJY.js
│   │   │   │   ├── chunk.AKJPEIE3.js
│   │   │   │   ├── chunk.APA2CA2D.js
│   │   │   │   ├── chunk.AU5L77ON.js
│   │   │   │   ├── chunk.B3SICWSY.js
│   │   │   │   ├── chunk.B46HFF3C.js
│   │   │   │   ├── chunk.B4BZKR24.js
│   │   │   │   ├── chunk.BB3IFNZA.js
│   │   │   │   ├── chunk.BSXBTNGI.js
│   │   │   │   ├── chunk.BT5IXD6R.js
│   │   │   │   ├── chunk.BXWBYEBW.js
│   │   │   │   ├── chunk.C3WTUMID.js
│   │   │   │   ├── chunk.CEOSQBTO.js
│   │   │   │   ├── chunk.CFQVVM2L.js
│   │   │   │   ├── chunk.CWNX3TEY.js
│   │   │   │   ├── chunk.D4G3YB54.js
│   │   │   │   ├── chunk.DAPUP5RK.js
│   │   │   │   ├── chunk.DNRKD6AZ.js
│   │   │   │   ├── chunk.DOEQE6VP.js
│   │   │   │   ├── chunk.DOJPHVG6.js
│   │   │   │   ├── chunk.DOYC4G7X.js
│   │   │   │   ├── chunk.EFUIYJLS.js
│   │   │   │   ├── chunk.EMZVW7NJ.js
│   │   │   │   ├── chunk.EP23WFU3.js
│   │   │   │   ├── chunk.ESFFGLAX.js
│   │   │   │   ├── chunk.F4R62TH3.js
│   │   │   │   ├── chunk.F4VGSDIW.js
│   │   │   │   ├── chunk.FDFOFJDR.js
│   │   │   │   ├── chunk.FSFPD2YS.js
│   │   │   │   ├── chunk.FZX37GM3.js
│   │   │   │   ├── chunk.G2S23ZBL.js
│   │   │   │   ├── chunk.G4FTAQJB.js
│   │   │   │   ├── chunk.GCBHRONF.js
│   │   │   │   ├── chunk.GCUAIUGA.js
│   │   │   │   ├── chunk.GL3UMKIL.js
│   │   │   │   ├── chunk.GQDASYGT.js
│   │   │   │   ├── chunk.HA5LKTK7.js
│   │   │   │   ├── chunk.HAL7R4WT.js
│   │   │   │   ├── chunk.HF7GESMZ.js
│   │   │   │   ├── chunk.HPQ3PGLN.js
│   │   │   │   ├── chunk.HPWGIFMG.js
│   │   │   │   ├── chunk.HQAAUCQS.js
│   │   │   │   ├── chunk.HYCAXDPP.js
│   │   │   │   ├── chunk.IANYG5DU.js
│   │   │   │   ├── chunk.IHSUO777.js
│   │   │   │   ├── chunk.IQJYZEEZ.js
│   │   │   │   ├── chunk.IVBH34CJ.js
│   │   │   │   ├── chunk.JJNPZ52S.js
│   │   │   │   ├── chunk.JJXJQJAR.js
│   │   │   │   ├── chunk.JM3VXD4X.js
│   │   │   │   ├── chunk.JRG3SNOO.js
│   │   │   │   ├── chunk.JRL6WSW3.js
│   │   │   │   ├── chunk.JS5TXHUY.js
│   │   │   │   ├── chunk.KAB3KNWB.js
│   │   │   │   ├── chunk.KAS54FN5.js
│   │   │   │   ├── chunk.KKXA2ANL.js
│   │   │   │   ├── chunk.KPTXXHUL.js
│   │   │   │   ├── chunk.KRDDWTEW.js
│   │   │   │   ├── chunk.LB5X72JH.js
│   │   │   │   ├── chunk.LEE6HRXW.js
│   │   │   │   ├── chunk.LN7FMIHJ.js
│   │   │   │   ├── chunk.LYHKREWF.js
│   │   │   │   ├── chunk.LYVO77VG.js
│   │   │   │   ├── chunk.M2U2QT2K.js
│   │   │   │   ├── chunk.M55ZWT6F.js
│   │   │   │   ├── chunk.MGGPZXNU.js
│   │   │   │   ├── chunk.MGJX4QUE.js
│   │   │   │   ├── chunk.MKSGYDJ7.js
│   │   │   │   ├── chunk.MMH6PRFE.js
│   │   │   │   ├── chunk.MNWM7R7R.js
│   │   │   │   ├── chunk.MTYRJPGI.js
│   │   │   │   ├── chunk.NFJPZESI.js
│   │   │   │   ├── chunk.NH3SRVOC.js
│   │   │   │   ├── chunk.NHG6WGRJ.js
│   │   │   │   ├── chunk.NINJUQ3O.js
│   │   │   │   ├── chunk.NKJH6YIR.js
│   │   │   │   ├── chunk.NLMDSZVG.js
│   │   │   │   ├── chunk.NRDSDFDA.js
│   │   │   │   ├── chunk.NT6GBT3X.js
│   │   │   │   ├── chunk.NUUXJW3X.js
│   │   │   │   ├── chunk.NYIIDP5N.js
│   │   │   │   ├── chunk.O27EHOBW.js
│   │   │   │   ├── chunk.OIZNBQJN.js
│   │   │   │   ├── chunk.ONJD6DZB.js
│   │   │   │   ├── chunk.ONM5DPSJ.js
│   │   │   │   ├── chunk.OOUCCK4P.js
│   │   │   │   ├── chunk.OQXQSIH6.js
│   │   │   │   ├── chunk.OZPGMRHW.js
│   │   │   │   ├── chunk.P7ZG6EMR.js
│   │   │   │   ├── chunk.PCNTRSPK.js
│   │   │   │   ├── chunk.PCVNFXVK.js
│   │   │   │   ├── chunk.PCYEP4ET.js
│   │   │   │   ├── chunk.PI42AQQ3.js
│   │   │   │   ├── chunk.PNPJ7KDG.js
│   │   │   │   ├── chunk.PO3FKNES.js
│   │   │   │   ├── chunk.POVJIEB4.js
│   │   │   │   ├── chunk.QGC672JX.js
│   │   │   │   ├── chunk.QGKYNSKB.js
│   │   │   │   ├── chunk.QL5C2XOW.js
│   │   │   │   ├── chunk.QM4FQJJW.js
│   │   │   │   ├── chunk.QNMV47GO.js
│   │   │   │   ├── chunk.QPSNFEB2.js
│   │   │   │   ├── chunk.QZS7VZAH.js
│   │   │   │   ├── chunk.R3O4O6CQ.js
│   │   │   │   ├── chunk.RBTTBYTX.js
│   │   │   │   ├── chunk.RC6CGOZM.js
│   │   │   │   ├── chunk.RIBKWZXP.js
│   │   │   │   ├── chunk.RK73WSZS.js
│   │   │   │   ├── chunk.RRPF2VTE.js
│   │   │   │   ├── chunk.RV7OT463.js
│   │   │   │   ├── chunk.SWKYFDKR.js
│   │   │   │   ├── chunk.TDLFM7SW.js
│   │   │   │   ├── chunk.TH6UOT5H.js
│   │   │   │   ├── chunk.TNAJWR3J.js
│   │   │   │   ├── chunk.TSIZV5MY.js
│   │   │   │   ├── chunk.TXDANX46.js
│   │   │   │   ├── chunk.TZV7TKPW.js
│   │   │   │   ├── chunk.U52RAU7L.js
│   │   │   │   ├── chunk.U7BVLTSM.js
│   │   │   │   ├── chunk.UCEQC7L4.js
│   │   │   │   ├── chunk.UGWBMCKI.js
│   │   │   │   ├── chunk.UJXCOATR.js
│   │   │   │   ├── chunk.URBIOJXY.js
│   │   │   │   ├── chunk.UT2XRHAI.js
│   │   │   │   ├── chunk.UUPFKID5.js
│   │   │   │   ├── chunk.UYM4DCTI.js
│   │   │   │   ├── chunk.V6HXGH33.js
│   │   │   │   ├── chunk.VDIWJNQA.js
│   │   │   │   ├── chunk.VQDGOPN6.js
│   │   │   │   ├── chunk.VRUGIFWG.js
│   │   │   │   ├── chunk.VS5JEND2.js
│   │   │   │   ├── chunk.WF7GQGBH.js
│   │   │   │   ├── chunk.WF7WDFGJ.js
│   │   │   │   ├── chunk.WIWW2C4C.js
│   │   │   │   ├── chunk.WMFHBY7P.js
│   │   │   │   ├── chunk.WSMZ72DB.js
│   │   │   │   ├── chunk.WW6OHWMA.js
│   │   │   │   ├── chunk.X3BMLFMG.js
│   │   │   │   ├── chunk.X3PVKXAH.js
│   │   │   │   ├── chunk.XAJ2ADMX.js
│   │   │   │   ├── chunk.XAOA43RZ.js
│   │   │   │   ├── chunk.XFEYAMGW.js
│   │   │   │   ├── chunk.XJUZ5D7H.js
│   │   │   │   ├── chunk.XK5IPZIA.js
│   │   │   │   ├── chunk.XKOG42H3.js
│   │   │   │   ├── chunk.XNEONNEJ.js
│   │   │   │   ├── chunk.XQ4KBI5G.js
│   │   │   │   ├── chunk.XQWIVF2H.js
│   │   │   │   ├── chunk.XR5X7BVH.js
│   │   │   │   ├── chunk.XZMYMJVO.js
│   │   │   │   ├── chunk.YCHBWCKL.js
│   │   │   │   ├── chunk.YIKIE7BV.js
│   │   │   │   ├── chunk.YIYIQEKO.js
│   │   │   │   ├── chunk.YLY2FIZH.js
│   │   │   │   ├── chunk.YWWKTKUY.js
│   │   │   │   ├── chunk.YZETUBD6.js
│   │   │   │   ├── chunk.Z3NORRUK.js
│   │   │   │   ├── chunk.ZDAKW6TD.js
│   │   │   │   ├── chunk.ZGGXSEU7.js
│   │   │   │   ├── chunk.ZL53POKZ.js
│   │   │   │   └── chunk.ZQNN32RD.js
│   │   │   ├── components/
│   │   │   │   ├── alert/
│   │   │   │   │   ├── alert.component.js
│   │   │   │   │   ├── alert.js
│   │   │   │   │   └── alert.styles.js
│   │   │   │   ├── animated-image/
│   │   │   │   │   ├── animated-image.component.js
│   │   │   │   │   ├── animated-image.js
│   │   │   │   │   └── animated-image.styles.js
│   │   │   │   ├── animation/
│   │   │   │   │   ├── animation.component.js
│   │   │   │   │   ├── animation.js
│   │   │   │   │   ├── animation.styles.js
│   │   │   │   │   └── animations.js
│   │   │   │   ├── avatar/
│   │   │   │   │   ├── avatar.component.js
│   │   │   │   │   ├── avatar.js
│   │   │   │   │   └── avatar.styles.js
│   │   │   │   ├── badge/
│   │   │   │   │   ├── badge.component.js
│   │   │   │   │   ├── badge.js
│   │   │   │   │   └── badge.styles.js
│   │   │   │   ├── breadcrumb/
│   │   │   │   │   ├── breadcrumb.component.js
│   │   │   │   │   ├── breadcrumb.js
│   │   │   │   │   └── breadcrumb.styles.js
│   │   │   │   ├── breadcrumb-item/
│   │   │   │   │   ├── breadcrumb-item.component.js
│   │   │   │   │   ├── breadcrumb-item.js
│   │   │   │   │   └── breadcrumb-item.styles.js
│   │   │   │   ├── button/
│   │   │   │   │   ├── button.component.js
│   │   │   │   │   ├── button.js
│   │   │   │   │   └── button.styles.js
│   │   │   │   ├── button-group/
│   │   │   │   │   ├── button-group.component.js
│   │   │   │   │   ├── button-group.js
│   │   │   │   │   └── button-group.styles.js
│   │   │   │   ├── card/
│   │   │   │   │   ├── card.component.js
│   │   │   │   │   ├── card.js
│   │   │   │   │   └── card.styles.js
│   │   │   │   ├── carousel/
│   │   │   │   │   ├── autoplay-controller.js
│   │   │   │   │   ├── carousel.component.js
│   │   │   │   │   ├── carousel.js
│   │   │   │   │   ├── carousel.styles.js
│   │   │   │   │   └── scroll-controller.js
│   │   │   │   ├── carousel-item/
│   │   │   │   │   ├── carousel-item.component.js
│   │   │   │   │   ├── carousel-item.js
│   │   │   │   │   └── carousel-item.styles.js
│   │   │   │   ├── checkbox/
│   │   │   │   │   ├── checkbox.component.js
│   │   │   │   │   ├── checkbox.js
│   │   │   │   │   └── checkbox.styles.js
│   │   │   │   ├── color-picker/
│   │   │   │   │   ├── color-picker.component.js
│   │   │   │   │   ├── color-picker.js
│   │   │   │   │   └── color-picker.styles.js
│   │   │   │   ├── copy-button/
│   │   │   │   │   ├── copy-button.component.js
│   │   │   │   │   ├── copy-button.js
│   │   │   │   │   └── copy-button.styles.js
│   │   │   │   ├── details/
│   │   │   │   │   ├── details.component.js
│   │   │   │   │   ├── details.js
│   │   │   │   │   └── details.styles.js
│   │   │   │   ├── dialog/
│   │   │   │   │   ├── dialog.component.js
│   │   │   │   │   ├── dialog.js
│   │   │   │   │   └── dialog.styles.js
│   │   │   │   ├── divider/
│   │   │   │   │   ├── divider.component.js
│   │   │   │   │   ├── divider.js
│   │   │   │   │   └── divider.styles.js
│   │   │   │   ├── drawer/
│   │   │   │   │   ├── drawer.component.js
│   │   │   │   │   ├── drawer.js
│   │   │   │   │   └── drawer.styles.js
│   │   │   │   ├── dropdown/
│   │   │   │   │   ├── dropdown.component.js
│   │   │   │   │   ├── dropdown.js
│   │   │   │   │   └── dropdown.styles.js
│   │   │   │   ├── format-bytes/
│   │   │   │   │   ├── format-bytes.component.js
│   │   │   │   │   └── format-bytes.js
│   │   │   │   ├── format-date/
│   │   │   │   │   ├── format-date.component.js
│   │   │   │   │   └── format-date.js
│   │   │   │   ├── format-number/
│   │   │   │   │   ├── format-number.component.js
│   │   │   │   │   └── format-number.js
│   │   │   │   ├── icon/
│   │   │   │   │   ├── icon.component.js
│   │   │   │   │   ├── icon.js
│   │   │   │   │   ├── icon.styles.js
│   │   │   │   │   ├── library.default.js
│   │   │   │   │   ├── library.js
│   │   │   │   │   └── library.system.js
│   │   │   │   ├── icon-button/
│   │   │   │   │   ├── icon-button.component.js
│   │   │   │   │   ├── icon-button.js
│   │   │   │   │   └── icon-button.styles.js
│   │   │   │   ├── image-comparer/
│   │   │   │   │   ├── image-comparer.component.js
│   │   │   │   │   ├── image-comparer.js
│   │   │   │   │   └── image-comparer.styles.js
│   │   │   │   ├── include/
│   │   │   │   │   ├── include.component.js
│   │   │   │   │   ├── include.js
│   │   │   │   │   ├── include.styles.js
│   │   │   │   │   └── request.js
│   │   │   │   ├── input/
│   │   │   │   │   ├── input.component.js
│   │   │   │   │   ├── input.js
│   │   │   │   │   └── input.styles.js
│   │   │   │   ├── menu/
│   │   │   │   │   ├── menu.component.js
│   │   │   │   │   ├── menu.js
│   │   │   │   │   └── menu.styles.js
│   │   │   │   ├── menu-item/
│   │   │   │   │   ├── menu-item.component.js
│   │   │   │   │   ├── menu-item.js
│   │   │   │   │   ├── menu-item.styles.js
│   │   │   │   │   └── submenu-controller.js
│   │   │   │   ├── menu-label/
│   │   │   │   │   ├── menu-label.component.js
│   │   │   │   │   ├── menu-label.js
│   │   │   │   │   └── menu-label.styles.js
│   │   │   │   ├── mutation-observer/
│   │   │   │   │   ├── mutation-observer.component.js
│   │   │   │   │   ├── mutation-observer.js
│   │   │   │   │   └── mutation-observer.styles.js
│   │   │   │   ├── option/
│   │   │   │   │   ├── option.component.js
│   │   │   │   │   ├── option.js
│   │   │   │   │   └── option.styles.js
│   │   │   │   ├── popup/
│   │   │   │   │   ├── popup.component.js
│   │   │   │   │   ├── popup.js
│   │   │   │   │   └── popup.styles.js
│   │   │   │   ├── progress-bar/
│   │   │   │   │   ├── progress-bar.component.js
│   │   │   │   │   ├── progress-bar.js
│   │   │   │   │   └── progress-bar.styles.js
│   │   │   │   ├── progress-ring/
│   │   │   │   │   ├── progress-ring.component.js
│   │   │   │   │   ├── progress-ring.js
│   │   │   │   │   └── progress-ring.styles.js
│   │   │   │   ├── qr-code/
│   │   │   │   │   ├── qr-code.component.js
│   │   │   │   │   ├── qr-code.js
│   │   │   │   │   └── qr-code.styles.js
│   │   │   │   ├── radio/
│   │   │   │   │   ├── radio.component.js
│   │   │   │   │   ├── radio.js
│   │   │   │   │   └── radio.styles.js
│   │   │   │   ├── radio-button/
│   │   │   │   │   ├── radio-button.component.js
│   │   │   │   │   ├── radio-button.js
│   │   │   │   │   └── radio-button.styles.js
│   │   │   │   ├── radio-group/
│   │   │   │   │   ├── radio-group.component.js
│   │   │   │   │   ├── radio-group.js
│   │   │   │   │   └── radio-group.styles.js
│   │   │   │   ├── range/
│   │   │   │   │   ├── range.component.js
│   │   │   │   │   ├── range.js
│   │   │   │   │   └── range.styles.js
│   │   │   │   ├── rating/
│   │   │   │   │   ├── rating.component.js
│   │   │   │   │   ├── rating.js
│   │   │   │   │   └── rating.styles.js
│   │   │   │   ├── relative-time/
│   │   │   │   │   ├── relative-time.component.js
│   │   │   │   │   └── relative-time.js
│   │   │   │   ├── resize-observer/
│   │   │   │   │   ├── resize-observer.component.js
│   │   │   │   │   ├── resize-observer.js
│   │   │   │   │   └── resize-observer.styles.js
│   │   │   │   ├── select/
│   │   │   │   │   ├── select.component.js
│   │   │   │   │   ├── select.js
│   │   │   │   │   └── select.styles.js
│   │   │   │   ├── skeleton/
│   │   │   │   │   ├── skeleton.component.js
│   │   │   │   │   ├── skeleton.js
│   │   │   │   │   └── skeleton.styles.js
│   │   │   │   ├── spinner/
│   │   │   │   │   ├── spinner.component.js
│   │   │   │   │   ├── spinner.js
│   │   │   │   │   └── spinner.styles.js
│   │   │   │   ├── split-panel/
│   │   │   │   │   ├── split-panel.component.js
│   │   │   │   │   ├── split-panel.js
│   │   │   │   │   └── split-panel.styles.js
│   │   │   │   ├── switch/
│   │   │   │   │   ├── switch.component.js
│   │   │   │   │   ├── switch.js
│   │   │   │   │   └── switch.styles.js
│   │   │   │   ├── tab/
│   │   │   │   │   ├── tab.component.js
│   │   │   │   │   ├── tab.js
│   │   │   │   │   └── tab.styles.js
│   │   │   │   ├── tab-group/
│   │   │   │   │   ├── tab-group.component.js
│   │   │   │   │   ├── tab-group.js
│   │   │   │   │   └── tab-group.styles.js
│   │   │   │   ├── tab-panel/
│   │   │   │   │   ├── tab-panel.component.js
│   │   │   │   │   ├── tab-panel.js
│   │   │   │   │   └── tab-panel.styles.js
│   │   │   │   ├── tag/
│   │   │   │   │   ├── tag.component.js
│   │   │   │   │   ├── tag.js
│   │   │   │   │   └── tag.styles.js
│   │   │   │   ├── textarea/
│   │   │   │   │   ├── textarea.component.js
│   │   │   │   │   ├── textarea.js
│   │   │   │   │   └── textarea.styles.js
│   │   │   │   ├── tooltip/
│   │   │   │   │   ├── tooltip.component.js
│   │   │   │   │   ├── tooltip.js
│   │   │   │   │   └── tooltip.styles.js
│   │   │   │   ├── tree/
│   │   │   │   │   ├── tree.component.js
│   │   │   │   │   ├── tree.js
│   │   │   │   │   └── tree.styles.js
│   │   │   │   ├── tree-item/
│   │   │   │   │   ├── tree-item.component.js
│   │   │   │   │   ├── tree-item.js
│   │   │   │   │   └── tree-item.styles.js
│   │   │   │   └── visually-hidden/
│   │   │   │       ├── visually-hidden.component.js
│   │   │   │       ├── visually-hidden.js
│   │   │   │       └── visually-hidden.styles.js
│   │   │   ├── shoelace-autoloader.js
│   │   │   ├── shoelace.js
│   │   │   ├── themes/
│   │   │   │   ├── dark.css
│   │   │   │   ├── dark.styles.js
│   │   │   │   ├── light.css
│   │   │   │   └── light.styles.js
│   │   │   ├── translations/
│   │   │   │   ├── da.js
│   │   │   │   ├── de-ch.js
│   │   │   │   ├── de.js
│   │   │   │   ├── en-gb.js
│   │   │   │   ├── en.js
│   │   │   │   ├── es.js
│   │   │   │   ├── fa.js
│   │   │   │   ├── fr.js
│   │   │   │   ├── he.js
│   │   │   │   ├── hr.js
│   │   │   │   ├── hu.js
│   │   │   │   ├── ja.js
│   │   │   │   ├── nl.js
│   │   │   │   ├── pl.js
│   │   │   │   ├── pt.js
│   │   │   │   ├── ru.js
│   │   │   │   ├── sv.js
│   │   │   │   ├── tr.js
│   │   │   │   ├── zh-cn.js
│   │   │   │   └── zh-tw.js
│   │   │   └── utilities/
│   │   │       ├── animation-registry.js
│   │   │       ├── animation.js
│   │   │       ├── base-path.js
│   │   │       ├── form.js
│   │   │       ├── icon-library.js
│   │   │       └── localize.js
│   │   ├── style/
│   │   │   ├── fonts.css
│   │   │   └── themes/
│   │   │       └── default/
│   │   │           └── theme.css
│   │   ├── tiles/
│   │   │   └── draw/
│   │   │       └── index.html
│   │   └── xac/
│   │       ├── bridge.js
│   │       ├── frame.html
│   │       └── peer.js
│   ├── system/
│   │   ├── components/
│   │   │   ├── activity_chooser.css
│   │   │   ├── activity_chooser.js
│   │   │   ├── app_icon.css
│   │   │   ├── apps_list.css
│   │   │   ├── apps_list.js
│   │   │   ├── audio_volume_indicator.css
│   │   │   ├── audio_volume_indicator.js
│   │   │   ├── browser_action_popup.css
│   │   │   ├── browser_action_popup.js
│   │   │   ├── confirm_dialog.css
│   │   │   ├── confirm_dialog.js
│   │   │   ├── content_window.css
│   │   │   ├── content_window.js
│   │   │   ├── context_menu.css
│   │   │   ├── context_menu.js
│   │   │   ├── input_method.css
│   │   │   ├── input_method.js
│   │   │   ├── lock_screen.css
│   │   │   ├── lock_screen.js
│   │   │   ├── media_controller.css
│   │   │   ├── media_controller.js
│   │   │   ├── notification.js
│   │   │   ├── places_item.css
│   │   │   ├── publish_dialog.css
│   │   │   ├── publish_dialog.js
│   │   │   ├── quick_settings.css
│   │   │   ├── quick_settings.js
│   │   │   ├── reboot_menu.css
│   │   │   ├── reboot_menu.js
│   │   │   ├── select_ui.css
│   │   │   ├── select_ui.js
│   │   │   ├── site_info.css
│   │   │   ├── site_info.js
│   │   │   ├── status_bar.css
│   │   │   ├── status_bar.js
│   │   │   ├── status_icons.css
│   │   │   ├── status_icons.js
│   │   │   ├── text_share.css
│   │   │   ├── text_share.js
│   │   │   ├── ucan.js
│   │   │   ├── ucan_dialog.css
│   │   │   ├── url_edit.css
│   │   │   ├── url_edit.js
│   │   │   ├── wakeup_screen.css
│   │   │   ├── wakeup_screen.js
│   │   │   ├── web_extensions.js
│   │   │   ├── window_manager.css
│   │   │   └── window_manager.js
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── actions_dispatcher.js
│   │   │   ├── activity_handler.js
│   │   │   ├── audio_volume/
│   │   │   │   ├── gonk.js
│   │   │   │   └── linux.js
│   │   │   ├── battery.js
│   │   │   ├── bootstrap.js
│   │   │   ├── config.js
│   │   │   ├── dependencies.js
│   │   │   ├── downloads.js
│   │   │   ├── embedding.js
│   │   │   ├── filecoin.js
│   │   │   ├── flashlight.js
│   │   │   ├── haptic_feedback.js
│   │   │   ├── input_method.js
│   │   │   ├── ipfs_publisher.js
│   │   │   ├── keys.js
│   │   │   ├── notifications.js
│   │   │   ├── p2p.js
│   │   │   ├── power_manager.js
│   │   │   ├── remote_control.js
│   │   │   ├── tiles.js
│   │   │   ├── ua_store.js
│   │   │   ├── wallpaper_manager.js
│   │   │   └── web_extensions_delegate.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   ├── ja/
│   │   │   │   └── main.ftl
│   │   │   └── zh-CN/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── neterror/
│   │   │   ├── config.js
│   │   │   ├── index.html
│   │   │   ├── main.js
│   │   │   └── style.css
│   │   ├── style/
│   │   │   ├── desktop.css
│   │   │   ├── device.css
│   │   │   └── index.css
│   │   ├── sw.js
│   │   ├── swproxy/
│   │   │   ├── helper.js
│   │   │   ├── proxy.html
│   │   │   └── proxy.js
│   │   └── third-party/
│   │       └── node-vibrant/
│   │           └── vibrant.md
│   ├── terminal/
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── config.js
│   │   │   └── main.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   └── ja/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── style/
│   │   │   └── main.css
│   │   └── xterm.js/
│   │       ├── xterm-addon-fit.js
│   │       ├── xterm-addon-web-links.js
│   │       ├── xterm.css
│   │       └── xterm.js
│   ├── theme-capyloon/
│   │   ├── manifest.webmanifest
│   │   └── style.css
│   ├── theme-teal/
│   │   ├── manifest.webmanifest
│   │   └── style.css
│   ├── tiles/
│   │   ├── ace/
│   │   │   ├── ace.js
│   │   │   ├── ext-beautify.js
│   │   │   ├── ext-code_lens.js
│   │   │   ├── ext-elastic_tabstops_lite.js
│   │   │   ├── ext-emmet.js
│   │   │   ├── ext-error_marker.js
│   │   │   ├── ext-hardwrap.js
│   │   │   ├── ext-keybinding_menu.js
│   │   │   ├── ext-language_tools.js
│   │   │   ├── ext-linking.js
│   │   │   ├── ext-modelist.js
│   │   │   ├── ext-options.js
│   │   │   ├── ext-prompt.js
│   │   │   ├── ext-rtl.js
│   │   │   ├── ext-searchbox.js
│   │   │   ├── ext-settings_menu.js
│   │   │   ├── ext-spellcheck.js
│   │   │   ├── ext-split.js
│   │   │   ├── ext-static_highlight.js
│   │   │   ├── ext-statusbar.js
│   │   │   ├── ext-textarea.js
│   │   │   ├── ext-themelist.js
│   │   │   ├── ext-whitespace.js
│   │   │   ├── keybinding-emacs.js
│   │   │   ├── keybinding-sublime.js
│   │   │   ├── keybinding-vim.js
│   │   │   ├── keybinding-vscode.js
│   │   │   ├── mode-abap.js
│   │   │   ├── mode-abc.js
│   │   │   ├── mode-actionscript.js
│   │   │   ├── mode-ada.js
│   │   │   ├── mode-alda.js
│   │   │   ├── mode-apache_conf.js
│   │   │   ├── mode-apex.js
│   │   │   ├── mode-applescript.js
│   │   │   ├── mode-aql.js
│   │   │   ├── mode-asciidoc.js
│   │   │   ├── mode-asl.js
│   │   │   ├── mode-assembly_x86.js
│   │   │   ├── mode-autohotkey.js
│   │   │   ├── mode-batchfile.js
│   │   │   ├── mode-bibtex.js
│   │   │   ├── mode-c9search.js
│   │   │   ├── mode-c_cpp.js
│   │   │   ├── mode-cirru.js
│   │   │   ├── mode-clojure.js
│   │   │   ├── mode-cobol.js
│   │   │   ├── mode-coffee.js
│   │   │   ├── mode-coldfusion.js
│   │   │   ├── mode-crystal.js
│   │   │   ├── mode-csharp.js
│   │   │   ├── mode-csound_document.js
│   │   │   ├── mode-csound_orchestra.js
│   │   │   ├── mode-csound_score.js
│   │   │   ├── mode-csp.js
│   │   │   ├── mode-css.js
│   │   │   ├── mode-curly.js
│   │   │   ├── mode-d.js
│   │   │   ├── mode-dart.js
│   │   │   ├── mode-diff.js
│   │   │   ├── mode-django.js
│   │   │   ├── mode-dockerfile.js
│   │   │   ├── mode-dot.js
│   │   │   ├── mode-drools.js
│   │   │   ├── mode-edifact.js
│   │   │   ├── mode-eiffel.js
│   │   │   ├── mode-ejs.js
│   │   │   ├── mode-elixir.js
│   │   │   ├── mode-elm.js
│   │   │   ├── mode-erlang.js
│   │   │   ├── mode-forth.js
│   │   │   ├── mode-fortran.js
│   │   │   ├── mode-fsharp.js
│   │   │   ├── mode-fsl.js
│   │   │   ├── mode-ftl.js
│   │   │   ├── mode-gcode.js
│   │   │   ├── mode-gherkin.js
│   │   │   ├── mode-gitignore.js
│   │   │   ├── mode-glsl.js
│   │   │   ├── mode-gobstones.js
│   │   │   ├── mode-golang.js
│   │   │   ├── mode-graphqlschema.js
│   │   │   ├── mode-groovy.js
│   │   │   ├── mode-haml.js
│   │   │   ├── mode-handlebars.js
│   │   │   ├── mode-haskell.js
│   │   │   ├── mode-haskell_cabal.js
│   │   │   ├── mode-haxe.js
│   │   │   ├── mode-hjson.js
│   │   │   ├── mode-html.js
│   │   │   ├── mode-html_elixir.js
│   │   │   ├── mode-html_ruby.js
│   │   │   ├── mode-ini.js
│   │   │   ├── mode-io.js
│   │   │   ├── mode-ion.js
│   │   │   ├── mode-jack.js
│   │   │   ├── mode-jade.js
│   │   │   ├── mode-java.js
│   │   │   ├── mode-javascript.js
│   │   │   ├── mode-jexl.js
│   │   │   ├── mode-json.js
│   │   │   ├── mode-json5.js
│   │   │   ├── mode-jsoniq.js
│   │   │   ├── mode-jsp.js
│   │   │   ├── mode-jssm.js
│   │   │   ├── mode-jsx.js
│   │   │   ├── mode-julia.js
│   │   │   ├── mode-kotlin.js
│   │   │   ├── mode-latex.js
│   │   │   ├── mode-latte.js
│   │   │   ├── mode-less.js
│   │   │   ├── mode-liquid.js
│   │   │   ├── mode-lisp.js
│   │   │   ├── mode-livescript.js
│   │   │   ├── mode-logiql.js
│   │   │   ├── mode-logtalk.js
│   │   │   ├── mode-lsl.js
│   │   │   ├── mode-lua.js
│   │   │   ├── mode-luapage.js
│   │   │   ├── mode-lucene.js
│   │   │   ├── mode-makefile.js
│   │   │   ├── mode-markdown.js
│   │   │   ├── mode-mask.js
│   │   │   ├── mode-matlab.js
│   │   │   ├── mode-maze.js
│   │   │   ├── mode-mediawiki.js
│   │   │   ├── mode-mel.js
│   │   │   ├── mode-mips.js
│   │   │   ├── mode-mixal.js
│   │   │   ├── mode-mushcode.js
│   │   │   ├── mode-mysql.js
│   │   │   ├── mode-nginx.js
│   │   │   ├── mode-nim.js
│   │   │   ├── mode-nix.js
│   │   │   ├── mode-nsis.js
│   │   │   ├── mode-nunjucks.js
│   │   │   ├── mode-objectivec.js
│   │   │   ├── mode-ocaml.js
│   │   │   ├── mode-partiql.js
│   │   │   ├── mode-pascal.js
│   │   │   ├── mode-perl.js
│   │   │   ├── mode-pgsql.js
│   │   │   ├── mode-php.js
│   │   │   ├── mode-php_laravel_blade.js
│   │   │   ├── mode-pig.js
│   │   │   ├── mode-plain_text.js
│   │   │   ├── mode-plsql.js
│   │   │   ├── mode-powershell.js
│   │   │   ├── mode-praat.js
│   │   │   ├── mode-prisma.js
│   │   │   ├── mode-prolog.js
│   │   │   ├── mode-properties.js
│   │   │   ├── mode-protobuf.js
│   │   │   ├── mode-puppet.js
│   │   │   ├── mode-python.js
│   │   │   ├── mode-qml.js
│   │   │   ├── mode-r.js
│   │   │   ├── mode-raku.js
│   │   │   ├── mode-razor.js
│   │   │   ├── mode-rdoc.js
│   │   │   ├── mode-red.js
│   │   │   ├── mode-redshift.js
│   │   │   ├── mode-rhtml.js
│   │   │   ├── mode-robot.js
│   │   │   ├── mode-rst.js
│   │   │   ├── mode-ruby.js
│   │   │   ├── mode-rust.js
│   │   │   ├── mode-sac.js
│   │   │   ├── mode-sass.js
│   │   │   ├── mode-scad.js
│   │   │   ├── mode-scala.js
│   │   │   ├── mode-scheme.js
│   │   │   ├── mode-scrypt.js
│   │   │   ├── mode-scss.js
│   │   │   ├── mode-sh.js
│   │   │   ├── mode-sjs.js
│   │   │   ├── mode-slim.js
│   │   │   ├── mode-smarty.js
│   │   │   ├── mode-smithy.js
│   │   │   ├── mode-snippets.js
│   │   │   ├── mode-soy_template.js
│   │   │   ├── mode-space.js
│   │   │   ├── mode-sparql.js
│   │   │   ├── mode-sql.js
│   │   │   ├── mode-sqlserver.js
│   │   │   ├── mode-stylus.js
│   │   │   ├── mode-svg.js
│   │   │   ├── mode-swift.js
│   │   │   ├── mode-tcl.js
│   │   │   ├── mode-terraform.js
│   │   │   ├── mode-tex.js
│   │   │   ├── mode-text.js
│   │   │   ├── mode-textile.js
│   │   │   ├── mode-toml.js
│   │   │   ├── mode-tsx.js
│   │   │   ├── mode-turtle.js
│   │   │   ├── mode-twig.js
│   │   │   ├── mode-typescript.js
│   │   │   ├── mode-vala.js
│   │   │   ├── mode-vbscript.js
│   │   │   ├── mode-velocity.js
│   │   │   ├── mode-verilog.js
│   │   │   ├── mode-vhdl.js
│   │   │   ├── mode-visualforce.js
│   │   │   ├── mode-wollok.js
│   │   │   ├── mode-xml.js
│   │   │   ├── mode-xquery.js
│   │   │   ├── mode-yaml.js
│   │   │   ├── mode-zeek.js
│   │   │   ├── snippets/
│   │   │   │   ├── abap.js
│   │   │   │   ├── abc.js
│   │   │   │   ├── actionscript.js
│   │   │   │   ├── ada.js
│   │   │   │   ├── alda.js
│   │   │   │   ├── apache_conf.js
│   │   │   │   ├── apex.js
│   │   │   │   ├── applescript.js
│   │   │   │   ├── aql.js
│   │   │   │   ├── asciidoc.js
│   │   │   │   ├── asl.js
│   │   │   │   ├── assembly_x86.js
│   │   │   │   ├── autohotkey.js
│   │   │   │   ├── batchfile.js
│   │   │   │   ├── bibtex.js
│   │   │   │   ├── c9search.js
│   │   │   │   ├── c_cpp.js
│   │   │   │   ├── cirru.js
│   │   │   │   ├── clojure.js
│   │   │   │   ├── cobol.js
│   │   │   │   ├── coffee.js
│   │   │   │   ├── coldfusion.js
│   │   │   │   ├── crystal.js
│   │   │   │   ├── csharp.js
│   │   │   │   ├── csound_document.js
│   │   │   │   ├── csound_orchestra.js
│   │   │   │   ├── csound_score.js
│   │   │   │   ├── csp.js
│   │   │   │   ├── css.js
│   │   │   │   ├── curly.js
│   │   │   │   ├── d.js
│   │   │   │   ├── dart.js
│   │   │   │   ├── diff.js
│   │   │   │   ├── django.js
│   │   │   │   ├── dockerfile.js
│   │   │   │   ├── dot.js
│   │   │   │   ├── drools.js
│   │   │   │   ├── edifact.js
│   │   │   │   ├── eiffel.js
│   │   │   │   ├── ejs.js
│   │   │   │   ├── elixir.js
│   │   │   │   ├── elm.js
│   │   │   │   ├── erlang.js
│   │   │   │   ├── forth.js
│   │   │   │   ├── fortran.js
│   │   │   │   ├── fsharp.js
│   │   │   │   ├── fsl.js
│   │   │   │   ├── ftl.js
│   │   │   │   ├── gcode.js
│   │   │   │   ├── gherkin.js
│   │   │   │   ├── gitignore.js
│   │   │   │   ├── glsl.js
│   │   │   │   ├── gobstones.js
│   │   │   │   ├── golang.js
│   │   │   │   ├── graphqlschema.js
│   │   │   │   ├── groovy.js
│   │   │   │   ├── haml.js
│   │   │   │   ├── handlebars.js
│   │   │   │   ├── haskell.js
│   │   │   │   ├── haskell_cabal.js
│   │   │   │   ├── haxe.js
│   │   │   │   ├── hjson.js
│   │   │   │   ├── html.js
│   │   │   │   ├── html_elixir.js
│   │   │   │   ├── html_ruby.js
│   │   │   │   ├── ini.js
│   │   │   │   ├── io.js
│   │   │   │   ├── ion.js
│   │   │   │   ├── jack.js
│   │   │   │   ├── jade.js
│   │   │   │   ├── java.js
│   │   │   │   ├── javascript.js
│   │   │   │   ├── jexl.js
│   │   │   │   ├── json.js
│   │   │   │   ├── json5.js
│   │   │   │   ├── jsoniq.js
│   │   │   │   ├── jsp.js
│   │   │   │   ├── jssm.js
│   │   │   │   ├── jsx.js
│   │   │   │   ├── julia.js
│   │   │   │   ├── kotlin.js
│   │   │   │   ├── latex.js
│   │   │   │   ├── latte.js
│   │   │   │   ├── less.js
│   │   │   │   ├── liquid.js
│   │   │   │   ├── lisp.js
│   │   │   │   ├── livescript.js
│   │   │   │   ├── logiql.js
│   │   │   │   ├── logtalk.js
│   │   │   │   ├── lsl.js
│   │   │   │   ├── lua.js
│   │   │   │   ├── luapage.js
│   │   │   │   ├── lucene.js
│   │   │   │   ├── makefile.js
│   │   │   │   ├── markdown.js
│   │   │   │   ├── mask.js
│   │   │   │   ├── matlab.js
│   │   │   │   ├── maze.js
│   │   │   │   ├── mediawiki.js
│   │   │   │   ├── mel.js
│   │   │   │   ├── mips.js
│   │   │   │   ├── mixal.js
│   │   │   │   ├── mushcode.js
│   │   │   │   ├── mysql.js
│   │   │   │   ├── nginx.js
│   │   │   │   ├── nim.js
│   │   │   │   ├── nix.js
│   │   │   │   ├── nsis.js
│   │   │   │   ├── nunjucks.js
│   │   │   │   ├── objectivec.js
│   │   │   │   ├── ocaml.js
│   │   │   │   ├── partiql.js
│   │   │   │   ├── pascal.js
│   │   │   │   ├── perl.js
│   │   │   │   ├── pgsql.js
│   │   │   │   ├── php.js
│   │   │   │   ├── php_laravel_blade.js
│   │   │   │   ├── pig.js
│   │   │   │   ├── plain_text.js
│   │   │   │   ├── plsql.js
│   │   │   │   ├── powershell.js
│   │   │   │   ├── praat.js
│   │   │   │   ├── prisma.js
│   │   │   │   ├── prolog.js
│   │   │   │   ├── properties.js
│   │   │   │   ├── protobuf.js
│   │   │   │   ├── puppet.js
│   │   │   │   ├── python.js
│   │   │   │   ├── qml.js
│   │   │   │   ├── r.js
│   │   │   │   ├── raku.js
│   │   │   │   ├── razor.js
│   │   │   │   ├── rdoc.js
│   │   │   │   ├── red.js
│   │   │   │   ├── redshift.js
│   │   │   │   ├── rhtml.js
│   │   │   │   ├── robot.js
│   │   │   │   ├── rst.js
│   │   │   │   ├── ruby.js
│   │   │   │   ├── rust.js
│   │   │   │   ├── sac.js
│   │   │   │   ├── sass.js
│   │   │   │   ├── scad.js
│   │   │   │   ├── scala.js
│   │   │   │   ├── scheme.js
│   │   │   │   ├── scrypt.js
│   │   │   │   ├── scss.js
│   │   │   │   ├── sh.js
│   │   │   │   ├── sjs.js
│   │   │   │   ├── slim.js
│   │   │   │   ├── smarty.js
│   │   │   │   ├── smithy.js
│   │   │   │   ├── snippets.js
│   │   │   │   ├── soy_template.js
│   │   │   │   ├── space.js
│   │   │   │   ├── sparql.js
│   │   │   │   ├── sql.js
│   │   │   │   ├── sqlserver.js
│   │   │   │   ├── stylus.js
│   │   │   │   ├── svg.js
│   │   │   │   ├── swift.js
│   │   │   │   ├── tcl.js
│   │   │   │   ├── terraform.js
│   │   │   │   ├── tex.js
│   │   │   │   ├── text.js
│   │   │   │   ├── textile.js
│   │   │   │   ├── toml.js
│   │   │   │   ├── tsx.js
│   │   │   │   ├── turtle.js
│   │   │   │   ├── twig.js
│   │   │   │   ├── typescript.js
│   │   │   │   ├── vala.js
│   │   │   │   ├── vbscript.js
│   │   │   │   ├── velocity.js
│   │   │   │   ├── verilog.js
│   │   │   │   ├── vhdl.js
│   │   │   │   ├── visualforce.js
│   │   │   │   ├── wollok.js
│   │   │   │   ├── xml.js
│   │   │   │   ├── xquery.js
│   │   │   │   ├── yaml.js
│   │   │   │   └── zeek.js
│   │   │   ├── theme-ambiance.js
│   │   │   ├── theme-chaos.js
│   │   │   ├── theme-chrome.js
│   │   │   ├── theme-cloud9_day.js
│   │   │   ├── theme-cloud9_night.js
│   │   │   ├── theme-cloud9_night_low_color.js
│   │   │   ├── theme-clouds.js
│   │   │   ├── theme-clouds_midnight.js
│   │   │   ├── theme-cobalt.js
│   │   │   ├── theme-crimson_editor.js
│   │   │   ├── theme-dawn.js
│   │   │   ├── theme-dracula.js
│   │   │   ├── theme-dreamweaver.js
│   │   │   ├── theme-eclipse.js
│   │   │   ├── theme-github.js
│   │   │   ├── theme-gob.js
│   │   │   ├── theme-gruvbox.js
│   │   │   ├── theme-gruvbox_dark_hard.js
│   │   │   ├── theme-gruvbox_light_hard.js
│   │   │   ├── theme-idle_fingers.js
│   │   │   ├── theme-iplastic.js
│   │   │   ├── theme-katzenmilch.js
│   │   │   ├── theme-kr_theme.js
│   │   │   ├── theme-kuroir.js
│   │   │   ├── theme-merbivore.js
│   │   │   ├── theme-merbivore_soft.js
│   │   │   ├── theme-mono_industrial.js
│   │   │   ├── theme-monokai.js
│   │   │   ├── theme-nord_dark.js
│   │   │   ├── theme-one_dark.js
│   │   │   ├── theme-pastel_on_dark.js
│   │   │   ├── theme-solarized_dark.js
│   │   │   ├── theme-solarized_light.js
│   │   │   ├── theme-sqlserver.js
│   │   │   ├── theme-terminal.js
│   │   │   ├── theme-textmate.js
│   │   │   ├── theme-tomorrow.js
│   │   │   ├── theme-tomorrow_night.js
│   │   │   ├── theme-tomorrow_night_blue.js
│   │   │   ├── theme-tomorrow_night_bright.js
│   │   │   ├── theme-tomorrow_night_eighties.js
│   │   │   ├── theme-twilight.js
│   │   │   ├── theme-vibrant_ink.js
│   │   │   ├── theme-xcode.js
│   │   │   ├── worker-base.js
│   │   │   ├── worker-coffee.js
│   │   │   ├── worker-css.js
│   │   │   ├── worker-html.js
│   │   │   ├── worker-javascript.js
│   │   │   ├── worker-json.js
│   │   │   ├── worker-lua.js
│   │   │   ├── worker-php.js
│   │   │   ├── worker-xml.js
│   │   │   ├── worker-xquery.js
│   │   │   └── worker-yaml.js
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── bootstrap.js
│   │   │   ├── config.js
│   │   │   ├── fork_dialog.js
│   │   │   └── name_editor_dialog.js
│   │   ├── locales/
│   │   │   ├── en-US/
│   │   │   │   └── main.ftl
│   │   │   └── ja/
│   │   │       └── main.ftl
│   │   ├── manifest.webmanifest
│   │   ├── resources/
│   │   │   └── new-tile/
│   │   │       ├── index.html
│   │   │       ├── js/
│   │   │       │   ├── config.js
│   │   │       │   └── main.js
│   │   │       ├── manifest.webmanifest
│   │   │       ├── page2.html
│   │   │       ├── style/
│   │   │       │   └── main.css
│   │   │       └── sw.js
│   │   └── style/
│   │       ├── ace.css
│   │       └── index.css
│   ├── uitest/
│   │   ├── index.html
│   │   ├── js/
│   │   │   ├── bootstrap.js
│   │   │   └── config.js
│   │   ├── manifest.webmanifest
│   │   ├── resources/
│   │   │   └── new_message.ogg
│   │   ├── style/
│   │   │   ├── desktop.css
│   │   │   ├── device.css
│   │   │   └── index.css
│   │   └── sw.js
│   └── widgets/
│       ├── manifest.webmanifest
│       ├── weather/
│       │   ├── index.css
│       │   ├── index.html
│       │   ├── main.js
│       │   └── weather.js
│       └── worldclock/
│           ├── index.css
│           ├── index.html
│           └── main.js
├── attic/
│   └── chat/
│       ├── index.html
│       ├── js/
│       │   ├── config.js
│       │   └── main.js
│       ├── locales/
│       │   ├── en-US/
│       │   │   └── main.ftl
│       │   ├── ja/
│       │   │   └── main.ftl
│       │   └── zh-CN/
│       │       └── main.ftl
│       ├── manifest.webmanifest
│       ├── style/
│       │   └── main.css
│       └── sw.js
├── build-debs.sh
├── builder/
│   ├── .cargo/
│   │   └── config.toml
│   ├── .gitignore
│   ├── Cargo.toml
│   ├── install.sh
│   ├── prebuilts.json
│   ├── src/
│   │   ├── build_config.rs
│   │   ├── commands/
│   │   │   ├── common.rs
│   │   │   ├── desktop.rs
│   │   │   ├── gonk.rs
│   │   │   ├── linux.rs
│   │   │   └── mod.rs
│   │   ├── common.rs
│   │   ├── daemon_config.rs
│   │   ├── debian.rs
│   │   ├── logger.rs
│   │   ├── main.rs
│   │   ├── newapp.rs
│   │   ├── prebuilts.rs
│   │   ├── tasks.rs
│   │   ├── templates/
│   │   │   ├── config-desktop.toml
│   │   │   ├── debian/
│   │   │   │   ├── b2ghald.service
│   │   │   │   ├── capyloon-desktop.desktop
│   │   │   │   ├── capyloon-mobile.desktop
│   │   │   │   ├── capyloon-session.desktop
│   │   │   │   ├── capyloon.service
│   │   │   │   ├── config.toml
│   │   │   │   ├── control
│   │   │   │   ├── env.d/
│   │   │   │   │   ├── pinephone.sh
│   │   │   │   │   └── rpi.sh
│   │   │   │   ├── ipfsd-desktop.toml
│   │   │   │   ├── ipfsd-mobile.toml
│   │   │   │   ├── postinst
│   │   │   │   ├── preinst
│   │   │   │   ├── prerm
│   │   │   │   └── start.sh
│   │   │   ├── newapp/
│   │   │   │   ├── index.html.tmpl
│   │   │   │   ├── js/
│   │   │   │   │   ├── config.js
│   │   │   │   │   └── main.js.tmpl
│   │   │   │   ├── locales/
│   │   │   │   │   ├── en-US/
│   │   │   │   │   │   └── main.ftl
│   │   │   │   │   └── ja/
│   │   │   │   │       └── main.ftl
│   │   │   │   ├── manifest.webmanifest.tmpl
│   │   │   │   └── style/
│   │   │   │       ├── desktop.css
│   │   │   │       ├── device.css
│   │   │   │       └── main.css
│   │   │   └── user_desktop.js
│   │   └── timer.rs
│   ├── third-party/
│   │   ├── addr2line/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── bench.plot.r
│   │   │   ├── benchmark.sh
│   │   │   ├── coverage.sh
│   │   │   ├── examples/
│   │   │   │   └── addr2line.rs
│   │   │   ├── rustfmt.toml
│   │   │   ├── src/
│   │   │   │   ├── builtin_split_dwarf_loader.rs
│   │   │   │   ├── function.rs
│   │   │   │   ├── lazy.rs
│   │   │   │   └── lib.rs
│   │   │   └── tests/
│   │   │       ├── correctness.rs
│   │   │       ├── output_equivalence.rs
│   │   │       └── parse.rs
│   │   ├── adler/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-0BSD
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── RELEASE_PROCESS.md
│   │   │   ├── benches/
│   │   │   │   └── bench.rs
│   │   │   └── src/
│   │   │       ├── algo.rs
│   │   │       └── lib.rs
│   │   ├── aho-corasick/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── COPYING
│   │   │   ├── Cargo.toml
│   │   │   ├── DESIGN.md
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── UNLICENSE
│   │   │   ├── rustfmt.toml
│   │   │   └── src/
│   │   │       ├── ahocorasick.rs
│   │   │       ├── automaton.rs
│   │   │       ├── dfa.rs
│   │   │       ├── lib.rs
│   │   │       ├── macros.rs
│   │   │       ├── nfa/
│   │   │       │   ├── contiguous.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── noncontiguous.rs
│   │   │       ├── packed/
│   │   │       │   ├── api.rs
│   │   │       │   ├── ext.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── pattern.rs
│   │   │       │   ├── rabinkarp.rs
│   │   │       │   ├── teddy/
│   │   │       │   │   ├── README.md
│   │   │       │   │   ├── builder.rs
│   │   │       │   │   ├── generic.rs
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── tests.rs
│   │   │       │   └── vector.rs
│   │   │       ├── tests.rs
│   │   │       ├── transducer.rs
│   │   │       └── util/
│   │   │           ├── alphabet.rs
│   │   │           ├── buffer.rs
│   │   │           ├── byte_frequencies.rs
│   │   │           ├── debug.rs
│   │   │           ├── error.rs
│   │   │           ├── int.rs
│   │   │           ├── mod.rs
│   │   │           ├── prefilter.rs
│   │   │           ├── primitives.rs
│   │   │           ├── remapper.rs
│   │   │           ├── search.rs
│   │   │           └── special.rs
│   │   ├── alloc-no-stdlib/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── allocated_memory/
│   │   │   │   │   ├── index_macro.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── allocated_stack_memory.rs
│   │   │   │   ├── allocator.rs
│   │   │   │   ├── bin/
│   │   │   │   │   ├── example.rs
│   │   │   │   │   ├── heap_alloc.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── init.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── stack_allocator.rs
│   │   │   │   └── tests.rs
│   │   │   └── tests/
│   │   │       └── lib.rs
│   │   ├── alloc-stdlib/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── bin/
│   │   │   │   │   ├── example.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── heap_alloc.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── std_alloc.rs
│   │   │   │   └── test.rs
│   │   │   └── tests/
│   │   │       └── lib.rs
│   │   ├── anstream/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   ├── stream.rs
│   │   │   │   ├── strip.rs
│   │   │   │   └── wincon.rs
│   │   │   ├── examples/
│   │   │   │   ├── dump-stream.rs
│   │   │   │   └── query-stream.rs
│   │   │   └── src/
│   │   │       ├── adapter/
│   │   │       │   ├── mod.rs
│   │   │       │   ├── strip.rs
│   │   │       │   └── wincon.rs
│   │   │       ├── auto.rs
│   │   │       ├── buffer.rs
│   │   │       ├── fmt.rs
│   │   │       ├── lib.rs
│   │   │       ├── macros.rs
│   │   │       ├── stream.rs
│   │   │       ├── strip.rs
│   │   │       └── wincon.rs
│   │   ├── anstyle/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   └── dump-style.rs
│   │   │   └── src/
│   │   │       ├── color.rs
│   │   │       ├── effect.rs
│   │   │       ├── lib.rs
│   │   │       ├── macros.rs
│   │   │       ├── reset.rs
│   │   │       └── style.rs
│   │   ├── anstyle-parse/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── parse.rs
│   │   │   ├── examples/
│   │   │   │   └── parselog.rs
│   │   │   └── src/
│   │   │       ├── lib.rs
│   │   │       ├── params.rs
│   │   │       └── state/
│   │   │           ├── codegen.rs
│   │   │           ├── definitions.rs
│   │   │           ├── mod.rs
│   │   │           └── table.rs
│   │   ├── anstyle-query/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   └── query.rs
│   │   │   └── src/
│   │   │       ├── lib.rs
│   │   │       └── windows.rs
│   │   ├── anstyle-wincon/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   ├── dump-wincon.rs
│   │   │   │   └── set-wincon.rs
│   │   │   └── src/
│   │   │       ├── ansi.rs
│   │   │       ├── lib.rs
│   │   │       ├── stream.rs
│   │   │       └── windows.rs
│   │   ├── async-compression/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── deny.toml
│   │   │   ├── examples/
│   │   │   │   ├── zlib_tokio_write.rs
│   │   │   │   └── zstd_gzip.rs
│   │   │   ├── src/
│   │   │   │   ├── brotli.rs
│   │   │   │   ├── codec/
│   │   │   │   │   ├── brotli/
│   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── bzip2/
│   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── deflate/
│   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── deflate64/
│   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── flate/
│   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── gzip/
│   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   ├── header.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── lzma/
│   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── xz/
│   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── xz2/
│   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── zlib/
│   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   └── zstd/
│   │   │   │   │       ├── decoder.rs
│   │   │   │   │       ├── encoder.rs
│   │   │   │   │       └── mod.rs
│   │   │   │   ├── futures/
│   │   │   │   │   ├── bufread/
│   │   │   │   │   │   ├── generic/
│   │   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   ├── macros/
│   │   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── write/
│   │   │   │   │       ├── buf_write.rs
│   │   │   │   │       ├── buf_writer.rs
│   │   │   │   │       ├── generic/
│   │   │   │   │       │   ├── decoder.rs
│   │   │   │   │       │   ├── encoder.rs
│   │   │   │   │       │   └── mod.rs
│   │   │   │   │       ├── macros/
│   │   │   │   │       │   ├── decoder.rs
│   │   │   │   │       │   ├── encoder.rs
│   │   │   │   │       │   └── mod.rs
│   │   │   │   │       └── mod.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── macros.rs
│   │   │   │   ├── tokio/
│   │   │   │   │   ├── bufread/
│   │   │   │   │   │   ├── generic/
│   │   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   ├── macros/
│   │   │   │   │   │   │   ├── decoder.rs
│   │   │   │   │   │   │   ├── encoder.rs
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── write/
│   │   │   │   │       ├── buf_write.rs
│   │   │   │   │       ├── buf_writer.rs
│   │   │   │   │       ├── generic/
│   │   │   │   │       │   ├── decoder.rs
│   │   │   │   │       │   ├── encoder.rs
│   │   │   │   │       │   └── mod.rs
│   │   │   │   │       ├── macros/
│   │   │   │   │       │   ├── decoder.rs
│   │   │   │   │       │   ├── encoder.rs
│   │   │   │   │       │   └── mod.rs
│   │   │   │   │       └── mod.rs
│   │   │   │   ├── unshared.rs
│   │   │   │   ├── util.rs
│   │   │   │   └── zstd.rs
│   │   │   └── tests/
│   │   │       ├── artifacts/
│   │   │       │   ├── dictionary-rust
│   │   │       │   ├── dictionary-rust-other
│   │   │       │   ├── lib.rs
│   │   │       │   └── lib.rs.zst
│   │   │       ├── brotli.rs
│   │   │       ├── bzip2.rs
│   │   │       ├── deflate.rs
│   │   │       ├── gzip.rs
│   │   │       ├── lzma.rs
│   │   │       ├── proptest.proptest-regressions
│   │   │       ├── proptest.rs
│   │   │       ├── utils/
│   │   │       │   ├── algos.rs
│   │   │       │   ├── impls.rs
│   │   │       │   ├── input_stream.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── test_cases.rs
│   │   │       │   ├── tokio_ext/
│   │   │       │   │   ├── copy_buf.rs
│   │   │       │   │   ├── interleave_pending.rs
│   │   │       │   │   ├── limited.rs
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── track_closed.rs
│   │   │       │   └── track_eof.rs
│   │   │       ├── xz.rs
│   │   │       ├── zlib.rs
│   │   │       ├── zstd-dict.rs
│   │   │       └── zstd.rs
│   │   ├── autocfg/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   ├── integers.rs
│   │   │   │   ├── nightly.rs
│   │   │   │   ├── paths.rs
│   │   │   │   ├── traits.rs
│   │   │   │   └── versions.rs
│   │   │   ├── src/
│   │   │   │   ├── error.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── rustc.rs
│   │   │   │   ├── tests.rs
│   │   │   │   └── version.rs
│   │   │   └── tests/
│   │   │       ├── no_std.rs
│   │   │       ├── rustflags.rs
│   │   │       ├── wrap_ignored
│   │   │       └── wrappers.rs
│   │   ├── backtrace/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── benchmarks.rs
│   │   │   ├── build.rs
│   │   │   ├── examples/
│   │   │   │   ├── backtrace.rs
│   │   │   │   └── raw.rs
│   │   │   ├── src/
│   │   │   │   ├── backtrace/
│   │   │   │   │   ├── dbghelp32.rs
│   │   │   │   │   ├── dbghelp64.rs
│   │   │   │   │   ├── libunwind.rs
│   │   │   │   │   ├── miri.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── noop.rs
│   │   │   │   ├── capture.rs
│   │   │   │   ├── dbghelp.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── print/
│   │   │   │   │   └── fuchsia.rs
│   │   │   │   ├── print.rs
│   │   │   │   ├── symbolize/
│   │   │   │   │   ├── dbghelp.rs
│   │   │   │   │   ├── gimli/
│   │   │   │   │   │   ├── coff.rs
│   │   │   │   │   │   ├── elf.rs
│   │   │   │   │   │   ├── libs_aix.rs
│   │   │   │   │   │   ├── libs_dl_iterate_phdr.rs
│   │   │   │   │   │   ├── libs_haiku.rs
│   │   │   │   │   │   ├── libs_illumos.rs
│   │   │   │   │   │   ├── libs_libnx.rs
│   │   │   │   │   │   ├── libs_macos.rs
│   │   │   │   │   │   ├── libs_windows.rs
│   │   │   │   │   │   ├── macho.rs
│   │   │   │   │   │   ├── mmap_fake.rs
│   │   │   │   │   │   ├── mmap_unix.rs
│   │   │   │   │   │   ├── mmap_windows.rs
│   │   │   │   │   │   ├── parse_running_mmaps_unix.rs
│   │   │   │   │   │   ├── stash.rs
│   │   │   │   │   │   └── xcoff.rs
│   │   │   │   │   ├── gimli.rs
│   │   │   │   │   ├── miri.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── noop.rs
│   │   │   │   ├── types.rs
│   │   │   │   └── windows.rs
│   │   │   └── tests/
│   │   │       ├── accuracy/
│   │   │       │   ├── auxiliary.rs
│   │   │       │   └── main.rs
│   │   │       ├── common/
│   │   │       │   └── mod.rs
│   │   │       ├── concurrent-panics.rs
│   │   │       ├── current-exe-mismatch.rs
│   │   │       ├── long_fn_name.rs
│   │   │       ├── sgx-image-base.rs
│   │   │       ├── skip_inner_frames.rs
│   │   │       └── smoke.rs
│   │   ├── base64/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── RELEASE-NOTES.md
│   │   │   ├── benches/
│   │   │   │   └── benchmarks.rs
│   │   │   ├── clippy.toml
│   │   │   ├── examples/
│   │   │   │   └── base64.rs
│   │   │   ├── src/
│   │   │   │   ├── alphabet.rs
│   │   │   │   ├── chunked_encoder.rs
│   │   │   │   ├── decode.rs
│   │   │   │   ├── display.rs
│   │   │   │   ├── encode.rs
│   │   │   │   ├── engine/
│   │   │   │   │   ├── general_purpose/
│   │   │   │   │   │   ├── decode.rs
│   │   │   │   │   │   ├── decode_suffix.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── naive.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── prelude.rs
│   │   │   │   ├── read/
│   │   │   │   │   ├── decoder.rs
│   │   │   │   │   ├── decoder_tests.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── tests.rs
│   │   │   │   └── write/
│   │   │   │       ├── encoder.rs
│   │   │   │       ├── encoder_string_writer.rs
│   │   │   │       ├── encoder_tests.rs
│   │   │   │       └── mod.rs
│   │   │   └── tests/
│   │   │       ├── encode.rs
│   │   │       └── tests.rs
│   │   ├── bitflags/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── CODE_OF_CONDUCT.md
│   │   │   ├── CONTRIBUTING.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── SECURITY.md
│   │   │   ├── benches/
│   │   │   │   └── parse.rs
│   │   │   ├── examples/
│   │   │   │   ├── custom_bits_type.rs
│   │   │   │   ├── custom_derive.rs
│   │   │   │   ├── fmt.rs
│   │   │   │   ├── macro_free.rs
│   │   │   │   └── serde.rs
│   │   │   ├── spec.md
│   │   │   └── src/
│   │   │       ├── example_generated.rs
│   │   │       ├── external/
│   │   │       │   ├── arbitrary.rs
│   │   │       │   ├── bytemuck.rs
│   │   │       │   └── serde.rs
│   │   │       ├── external.rs
│   │   │       ├── internal.rs
│   │   │       ├── iter.rs
│   │   │       ├── lib.rs
│   │   │       ├── parser.rs
│   │   │       ├── public.rs
│   │   │       ├── tests/
│   │   │       │   ├── all.rs
│   │   │       │   ├── bits.rs
│   │   │       │   ├── complement.rs
│   │   │       │   ├── contains.rs
│   │   │       │   ├── difference.rs
│   │   │       │   ├── empty.rs
│   │   │       │   ├── eq.rs
│   │   │       │   ├── extend.rs
│   │   │       │   ├── flags.rs
│   │   │       │   ├── fmt.rs
│   │   │       │   ├── from_bits.rs
│   │   │       │   ├── from_bits_retain.rs
│   │   │       │   ├── from_bits_truncate.rs
│   │   │       │   ├── from_name.rs
│   │   │       │   ├── insert.rs
│   │   │       │   ├── intersection.rs
│   │   │       │   ├── intersects.rs
│   │   │       │   ├── is_all.rs
│   │   │       │   ├── is_empty.rs
│   │   │       │   ├── iter.rs
│   │   │       │   ├── parser.rs
│   │   │       │   ├── remove.rs
│   │   │       │   ├── symmetric_difference.rs
│   │   │       │   └── union.rs
│   │   │       ├── tests.rs
│   │   │       └── traits.rs
│   │   ├── blake2/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── mod.rs
│   │   │   ├── src/
│   │   │   │   ├── as_bytes.rs
│   │   │   │   ├── consts.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── macros.rs
│   │   │   │   ├── simd/
│   │   │   │   │   ├── simd_opt/
│   │   │   │   │   │   ├── u32x4.rs
│   │   │   │   │   │   └── u64x4.rs
│   │   │   │   │   ├── simd_opt.rs
│   │   │   │   │   ├── simdint.rs
│   │   │   │   │   ├── simdop.rs
│   │   │   │   │   └── simdty.rs
│   │   │   │   └── simd.rs
│   │   │   └── tests/
│   │   │       ├── data/
│   │   │       │   ├── blake2b/
│   │   │       │   │   ├── fixed.blb
│   │   │       │   │   ├── mac.blb
│   │   │       │   │   └── variable.blb
│   │   │       │   └── blake2s/
│   │   │       │       ├── mac.blb
│   │   │       │       └── variable.blb
│   │   │       ├── mac.rs
│   │   │       ├── mod.rs
│   │   │       └── persona.rs
│   │   ├── block-buffer/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── lib.rs
│   │   │   │   └── sealed.rs
│   │   │   └── tests/
│   │   │       └── mod.rs
│   │   ├── brotli/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── appveyor.yml
│   │   │   ├── ci/
│   │   │   │   ├── before_deploy.ps1
│   │   │   │   ├── before_deploy.sh
│   │   │   │   ├── install.sh
│   │   │   │   └── script.sh
│   │   │   ├── examples/
│   │   │   │   ├── compress.rs
│   │   │   │   └── decompress.rs
│   │   │   ├── justfile
│   │   │   ├── research/
│   │   │   │   ├── concatenate_some.py
│   │   │   │   ├── frombase2.py
│   │   │   │   └── tobase2.py
│   │   │   ├── src/
│   │   │   │   ├── bin/
│   │   │   │   │   ├── brotli.rs
│   │   │   │   │   ├── catbrotli.rs
│   │   │   │   │   ├── integration_tests.rs
│   │   │   │   │   ├── test_broccoli.rs
│   │   │   │   │   ├── test_custom_dict.rs
│   │   │   │   │   ├── test_threading.rs
│   │   │   │   │   ├── tests.rs
│   │   │   │   │   ├── util.rs
│   │   │   │   │   └── validate.rs
│   │   │   │   ├── concat/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── enc/
│   │   │   │   │   ├── backward_references/
│   │   │   │   │   │   ├── benchmark.rs
│   │   │   │   │   │   ├── hash_to_binary_tree.rs
│   │   │   │   │   │   ├── hq.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── test.rs
│   │   │   │   │   ├── bit_cost.rs
│   │   │   │   │   ├── block_split.rs
│   │   │   │   │   ├── block_splitter.rs
│   │   │   │   │   ├── brotli_bit_stream.rs
│   │   │   │   │   ├── cluster.rs
│   │   │   │   │   ├── combined_alloc.rs
│   │   │   │   │   ├── command.rs
│   │   │   │   │   ├── compat.rs
│   │   │   │   │   ├── compress_fragment.rs
│   │   │   │   │   ├── compress_fragment_two_pass.rs
│   │   │   │   │   ├── constants.rs
│   │   │   │   │   ├── context_map_entropy.rs
│   │   │   │   │   ├── dictionary_hash.rs
│   │   │   │   │   ├── encode.rs
│   │   │   │   │   ├── entropy_encode.rs
│   │   │   │   │   ├── fast_log.rs
│   │   │   │   │   ├── find_stride.rs
│   │   │   │   │   ├── fixed_queue.rs
│   │   │   │   │   ├── histogram.rs
│   │   │   │   │   ├── input_pair.rs
│   │   │   │   │   ├── interface.rs
│   │   │   │   │   ├── ir_interpret.rs
│   │   │   │   │   ├── literal_cost.rs
│   │   │   │   │   ├── metablock.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── multithreading.rs
│   │   │   │   │   ├── parameters.rs
│   │   │   │   │   ├── pdf.rs
│   │   │   │   │   ├── prior_eval.rs
│   │   │   │   │   ├── reader.rs
│   │   │   │   │   ├── singlethreading.rs
│   │   │   │   │   ├── static_dict.rs
│   │   │   │   │   ├── static_dict_lut.rs
│   │   │   │   │   ├── stride_eval.rs
│   │   │   │   │   ├── test.rs
│   │   │   │   │   ├── threading.rs
│   │   │   │   │   ├── utf8_util.rs
│   │   │   │   │   ├── util.rs
│   │   │   │   │   ├── vectorization.rs
│   │   │   │   │   ├── weights.rs
│   │   │   │   │   ├── worker_pool.rs
│   │   │   │   │   └── writer.rs
│   │   │   │   ├── ffi/
│   │   │   │   │   ├── alloc_util.rs
│   │   │   │   │   ├── broccoli.rs
│   │   │   │   │   ├── compressor.rs
│   │   │   │   │   ├── decompressor.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── multicompress/
│   │   │   │   │       ├── mod.rs
│   │   │   │   │       └── test.rs
│   │   │   │   └── lib.rs
│   │   │   └── testdata/
│   │   │       ├── 10x10y
│   │   │       ├── 64x
│   │   │       ├── 64x.compressed
│   │   │       ├── aaabaaaa
│   │   │       ├── alice29.txt
│   │   │       ├── alice29.txt.compressed
│   │   │       ├── asyoulik.txt
│   │   │       ├── asyoulik.txt.compressed
│   │   │       ├── backward65536
│   │   │       ├── backward65536.compressed
│   │   │       ├── compressed_file
│   │   │       ├── compressed_file.compressed
│   │   │       ├── compressed_repeated
│   │   │       ├── compressed_repeated.compressed
│   │   │       ├── empty
│   │   │       ├── empty.compressed
│   │   │       ├── empty.compressed.00
│   │   │       ├── empty.compressed.01
│   │   │       ├── empty.compressed.02
│   │   │       ├── empty.compressed.03
│   │   │       ├── empty.compressed.04
│   │   │       ├── empty.compressed.05
│   │   │       ├── empty.compressed.06
│   │   │       ├── empty.compressed.07
│   │   │       ├── empty.compressed.08
│   │   │       ├── empty.compressed.09
│   │   │       ├── empty.compressed.10
│   │   │       ├── empty.compressed.11
│   │   │       ├── empty.compressed.12
│   │   │       ├── empty.compressed.13
│   │   │       ├── empty.compressed.14
│   │   │       ├── empty.compressed.15
│   │   │       ├── empty.compressed.16
│   │   │       ├── empty.compressed.17
│   │   │       ├── empty.compressed.18
│   │   │       ├── ends_with_truncated_dictionary
│   │   │       ├── monkey
│   │   │       ├── quickfox
│   │   │       ├── quickfox_repeated
│   │   │       ├── random_then_unicode
│   │   │       ├── ukkonooa
│   │   │       ├── x
│   │   │       ├── x.compressed.00
│   │   │       ├── x.compressed.01
│   │   │       ├── x.compressed.02
│   │   │       ├── x.compressed.03
│   │   │       └── xyzzy
│   │   ├── brotli-decompressor/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   └── decompress.rs
│   │   │   ├── rustfmt.toml
│   │   │   └── src/
│   │   │       ├── bin/
│   │   │       │   ├── brotli-decompressor.rs
│   │   │       │   ├── error_handling_tests.rs
│   │   │       │   ├── integration_tests.rs
│   │   │       │   ├── ipsum.brotli
│   │   │       │   ├── ipsum.raw
│   │   │       │   ├── ipsum_gen.py
│   │   │       │   └── tests.rs
│   │   │       ├── bit_reader/
│   │   │       │   └── mod.rs
│   │   │       ├── brotli_alloc.rs
│   │   │       ├── context.rs
│   │   │       ├── decode.rs
│   │   │       ├── dictionary/
│   │   │       │   └── mod.rs
│   │   │       ├── ffi/
│   │   │       │   ├── alloc_util.rs
│   │   │       │   ├── interface.rs
│   │   │       │   └── mod.rs
│   │   │       ├── huffman/
│   │   │       │   ├── mod.rs
│   │   │       │   └── tests.rs
│   │   │       ├── io_wrappers.rs
│   │   │       ├── lib.rs
│   │   │       ├── memory.rs
│   │   │       ├── prefix.rs
│   │   │       ├── reader.rs
│   │   │       ├── state.rs
│   │   │       ├── test.rs
│   │   │       ├── transform.rs
│   │   │       └── writer.rs
│   │   ├── bumpalo/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── alloc.rs
│   │   │       ├── boxed.rs
│   │   │       ├── collections/
│   │   │       │   ├── collect_in.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── raw_vec.rs
│   │   │       │   ├── str/
│   │   │       │   │   ├── lossy.rs
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── string.rs
│   │   │       │   └── vec.rs
│   │   │       └── lib.rs
│   │   ├── byteorder/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── COPYING
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── UNLICENSE
│   │   │   ├── benches/
│   │   │   │   └── bench.rs
│   │   │   ├── rustfmt.toml
│   │   │   └── src/
│   │   │       ├── io.rs
│   │   │       └── lib.rs
│   │   ├── bytes/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── SECURITY.md
│   │   │   ├── benches/
│   │   │   │   ├── buf.rs
│   │   │   │   ├── bytes.rs
│   │   │   │   └── bytes_mut.rs
│   │   │   ├── ci/
│   │   │   │   ├── miri.sh
│   │   │   │   ├── test-stable.sh
│   │   │   │   └── tsan.sh
│   │   │   ├── clippy.toml
│   │   │   ├── src/
│   │   │   │   ├── buf/
│   │   │   │   │   ├── buf_impl.rs
│   │   │   │   │   ├── buf_mut.rs
│   │   │   │   │   ├── chain.rs
│   │   │   │   │   ├── iter.rs
│   │   │   │   │   ├── limit.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── reader.rs
│   │   │   │   │   ├── take.rs
│   │   │   │   │   ├── uninit_slice.rs
│   │   │   │   │   ├── vec_deque.rs
│   │   │   │   │   └── writer.rs
│   │   │   │   ├── bytes.rs
│   │   │   │   ├── bytes_mut.rs
│   │   │   │   ├── fmt/
│   │   │   │   │   ├── debug.rs
│   │   │   │   │   ├── hex.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── loom.rs
│   │   │   │   └── serde.rs
│   │   │   └── tests/
│   │   │       ├── test_buf.rs
│   │   │       ├── test_buf_mut.rs
│   │   │       ├── test_bytes.rs
│   │   │       ├── test_bytes_odd_alloc.rs
│   │   │       ├── test_bytes_vec_alloc.rs
│   │   │       ├── test_chain.rs
│   │   │       ├── test_debug.rs
│   │   │       ├── test_iter.rs
│   │   │       ├── test_reader.rs
│   │   │       ├── test_serde.rs
│   │   │       └── test_take.rs
│   │   ├── cc/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── command_helpers.rs
│   │   │       ├── detect_compiler_family.c
│   │   │       ├── lib.rs
│   │   │       ├── parallel/
│   │   │       │   ├── async_executor.rs
│   │   │       │   ├── job_token.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── stderr.rs
│   │   │       ├── target_info.rs
│   │   │       ├── tempfile.rs
│   │   │       ├── tool.rs
│   │   │       └── windows/
│   │   │           ├── com.rs
│   │   │           ├── find_tools.rs
│   │   │           ├── mod.rs
│   │   │           ├── registry.rs
│   │   │           ├── setup_config.rs
│   │   │           ├── vs_instances.rs
│   │   │           ├── winapi.rs
│   │   │           └── windows_sys.rs
│   │   ├── cfg-if/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   └── lib.rs
│   │   │   └── tests/
│   │   │       └── xcrate.rs
│   │   ├── clap/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   ├── README.md
│   │   │   │   ├── cargo-example-derive.md
│   │   │   │   ├── cargo-example-derive.rs
│   │   │   │   ├── cargo-example.md
│   │   │   │   ├── cargo-example.rs
│   │   │   │   ├── demo.md
│   │   │   │   ├── demo.rs
│   │   │   │   ├── derive_ref/
│   │   │   │   │   ├── augment_args.rs
│   │   │   │   │   ├── augment_subcommands.rs
│   │   │   │   │   ├── flatten_hand_args.rs
│   │   │   │   │   ├── hand_subcommand.rs
│   │   │   │   │   └── interop_tests.md
│   │   │   │   ├── escaped-positional-derive.md
│   │   │   │   ├── escaped-positional-derive.rs
│   │   │   │   ├── escaped-positional.md
│   │   │   │   ├── escaped-positional.rs
│   │   │   │   ├── find.md
│   │   │   │   ├── find.rs
│   │   │   │   ├── git-derive.md
│   │   │   │   ├── git-derive.rs
│   │   │   │   ├── git.md
│   │   │   │   ├── git.rs
│   │   │   │   ├── multicall-busybox.md
│   │   │   │   ├── multicall-busybox.rs
│   │   │   │   ├── multicall-hostname.md
│   │   │   │   ├── multicall-hostname.rs
│   │   │   │   ├── pacman.md
│   │   │   │   ├── pacman.rs
│   │   │   │   ├── repl-derive.rs
│   │   │   │   ├── repl.rs
│   │   │   │   ├── tutorial_builder/
│   │   │   │   │   ├── 01_quick.md
│   │   │   │   │   ├── 01_quick.rs
│   │   │   │   │   ├── 02_app_settings.md
│   │   │   │   │   ├── 02_app_settings.rs
│   │   │   │   │   ├── 02_apps.md
│   │   │   │   │   ├── 02_apps.rs
│   │   │   │   │   ├── 02_crate.md
│   │   │   │   │   ├── 02_crate.rs
│   │   │   │   │   ├── 03_01_flag_bool.md
│   │   │   │   │   ├── 03_01_flag_bool.rs
│   │   │   │   │   ├── 03_01_flag_count.md
│   │   │   │   │   ├── 03_01_flag_count.rs
│   │   │   │   │   ├── 03_02_option.md
│   │   │   │   │   ├── 03_02_option.rs
│   │   │   │   │   ├── 03_02_option_mult.md
│   │   │   │   │   ├── 03_02_option_mult.rs
│   │   │   │   │   ├── 03_03_positional.md
│   │   │   │   │   ├── 03_03_positional.rs
│   │   │   │   │   ├── 03_03_positional_mult.md
│   │   │   │   │   ├── 03_03_positional_mult.rs
│   │   │   │   │   ├── 03_04_subcommands.md
│   │   │   │   │   ├── 03_04_subcommands.rs
│   │   │   │   │   ├── 03_05_default_values.md
│   │   │   │   │   ├── 03_05_default_values.rs
│   │   │   │   │   ├── 04_01_enum.md
│   │   │   │   │   ├── 04_01_enum.rs
│   │   │   │   │   ├── 04_01_possible.md
│   │   │   │   │   ├── 04_01_possible.rs
│   │   │   │   │   ├── 04_02_parse.md
│   │   │   │   │   ├── 04_02_parse.rs
│   │   │   │   │   ├── 04_02_validate.md
│   │   │   │   │   ├── 04_02_validate.rs
│   │   │   │   │   ├── 04_03_relations.md
│   │   │   │   │   ├── 04_03_relations.rs
│   │   │   │   │   ├── 04_04_custom.md
│   │   │   │   │   ├── 04_04_custom.rs
│   │   │   │   │   └── 05_01_assert.rs
│   │   │   │   ├── tutorial_derive/
│   │   │   │   │   ├── 01_quick.md
│   │   │   │   │   ├── 01_quick.rs
│   │   │   │   │   ├── 02_app_settings.md
│   │   │   │   │   ├── 02_app_settings.rs
│   │   │   │   │   ├── 02_apps.md
│   │   │   │   │   ├── 02_apps.rs
│   │   │   │   │   ├── 02_crate.md
│   │   │   │   │   ├── 02_crate.rs
│   │   │   │   │   ├── 03_01_flag_bool.md
│   │   │   │   │   ├── 03_01_flag_bool.rs
│   │   │   │   │   ├── 03_01_flag_count.md
│   │   │   │   │   ├── 03_01_flag_count.rs
│   │   │   │   │   ├── 03_02_option.md
│   │   │   │   │   ├── 03_02_option.rs
│   │   │   │   │   ├── 03_02_option_mult.md
│   │   │   │   │   ├── 03_02_option_mult.rs
│   │   │   │   │   ├── 03_03_positional.md
│   │   │   │   │   ├── 03_03_positional.rs
│   │   │   │   │   ├── 03_03_positional_mult.md
│   │   │   │   │   ├── 03_03_positional_mult.rs
│   │   │   │   │   ├── 03_04_subcommands.md
│   │   │   │   │   ├── 03_04_subcommands.rs
│   │   │   │   │   ├── 03_04_subcommands_alt.rs
│   │   │   │   │   ├── 03_05_default_values.md
│   │   │   │   │   ├── 03_05_default_values.rs
│   │   │   │   │   ├── 04_01_enum.md
│   │   │   │   │   ├── 04_01_enum.rs
│   │   │   │   │   ├── 04_02_parse.md
│   │   │   │   │   ├── 04_02_parse.rs
│   │   │   │   │   ├── 04_02_validate.md
│   │   │   │   │   ├── 04_02_validate.rs
│   │   │   │   │   ├── 04_03_relations.md
│   │   │   │   │   ├── 04_03_relations.rs
│   │   │   │   │   ├── 04_04_custom.md
│   │   │   │   │   ├── 04_04_custom.rs
│   │   │   │   │   └── 05_01_assert.rs
│   │   │   │   ├── typed-derive.md
│   │   │   │   └── typed-derive.rs
│   │   │   └── src/
│   │   │       ├── _cookbook/
│   │   │       │   ├── cargo_example.rs
│   │   │       │   ├── cargo_example_derive.rs
│   │   │       │   ├── escaped_positional.rs
│   │   │       │   ├── escaped_positional_derive.rs
│   │   │       │   ├── find.rs
│   │   │       │   ├── git.rs
│   │   │       │   ├── git_derive.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── multicall_busybox.rs
│   │   │       │   ├── multicall_hostname.rs
│   │   │       │   ├── pacman.rs
│   │   │       │   ├── repl.rs
│   │   │       │   ├── repl_derive.rs
│   │   │       │   └── typed_derive.rs
│   │   │       ├── _derive/
│   │   │       │   ├── _tutorial/
│   │   │       │   │   ├── chapter_0.rs
│   │   │       │   │   ├── chapter_1.rs
│   │   │       │   │   ├── chapter_2.rs
│   │   │       │   │   ├── chapter_3.rs
│   │   │       │   │   ├── chapter_4.rs
│   │   │       │   │   ├── chapter_5.rs
│   │   │       │   │   └── mod.rs
│   │   │       │   └── mod.rs
│   │   │       ├── _faq.rs
│   │   │       ├── _features.rs
│   │   │       ├── _tutorial/
│   │   │       │   ├── chapter_0.rs
│   │   │       │   ├── chapter_1.rs
│   │   │       │   ├── chapter_2.rs
│   │   │       │   ├── chapter_3.rs
│   │   │       │   ├── chapter_4.rs
│   │   │       │   ├── chapter_5.rs
│   │   │       │   └── mod.rs
│   │   │       ├── bin/
│   │   │       │   └── stdio-fixture.rs
│   │   │       └── lib.rs
│   │   ├── clap_builder/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── builder/
│   │   │       │   ├── action.rs
│   │   │       │   ├── app_settings.rs
│   │   │       │   ├── arg.rs
│   │   │       │   ├── arg_group.rs
│   │   │       │   ├── arg_predicate.rs
│   │   │       │   ├── arg_settings.rs
│   │   │       │   ├── command.rs
│   │   │       │   ├── debug_asserts.rs
│   │   │       │   ├── ext.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── os_str.rs
│   │   │       │   ├── possible_value.rs
│   │   │       │   ├── range.rs
│   │   │       │   ├── resettable.rs
│   │   │       │   ├── str.rs
│   │   │       │   ├── styled_str.rs
│   │   │       │   ├── styling.rs
│   │   │       │   ├── tests.rs
│   │   │       │   ├── value_hint.rs
│   │   │       │   └── value_parser.rs
│   │   │       ├── derive.rs
│   │   │       ├── error/
│   │   │       │   ├── context.rs
│   │   │       │   ├── format.rs
│   │   │       │   ├── kind.rs
│   │   │       │   └── mod.rs
│   │   │       ├── lib.rs
│   │   │       ├── macros.rs
│   │   │       ├── mkeymap.rs
│   │   │       ├── output/
│   │   │       │   ├── fmt.rs
│   │   │       │   ├── help.rs
│   │   │       │   ├── help_template.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── textwrap/
│   │   │       │   │   ├── core.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── word_separators.rs
│   │   │       │   │   └── wrap_algorithms.rs
│   │   │       │   └── usage.rs
│   │   │       ├── parser/
│   │   │       │   ├── arg_matcher.rs
│   │   │       │   ├── error.rs
│   │   │       │   ├── features/
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── suggestions.rs
│   │   │       │   ├── matches/
│   │   │       │   │   ├── arg_matches.rs
│   │   │       │   │   ├── matched_arg.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── value_source.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── parser.rs
│   │   │       │   └── validator.rs
│   │   │       └── util/
│   │   │           ├── any_value.rs
│   │   │           ├── color.rs
│   │   │           ├── flat_map.rs
│   │   │           ├── flat_set.rs
│   │   │           ├── graph.rs
│   │   │           ├── id.rs
│   │   │           ├── mod.rs
│   │   │           └── str_to_bool.rs
│   │   ├── clap_derive/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── attr.rs
│   │   │       ├── derives/
│   │   │       │   ├── args.rs
│   │   │       │   ├── into_app.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── parser.rs
│   │   │       │   ├── subcommand.rs
│   │   │       │   └── value_enum.rs
│   │   │       ├── dummies.rs
│   │   │       ├── item.rs
│   │   │       ├── lib.rs
│   │   │       ├── macros.rs
│   │   │       └── utils/
│   │   │           ├── doc_comments.rs
│   │   │           ├── error.rs
│   │   │           ├── mod.rs
│   │   │           ├── spanned.rs
│   │   │           └── ty.rs
│   │   ├── clap_lex/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── ext.rs
│   │   │       └── lib.rs
│   │   ├── colorchoice/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   ├── console/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── Makefile
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── ansi_parser.rs
│   │   │   ├── examples/
│   │   │   │   ├── colors.rs
│   │   │   │   ├── colors256.rs
│   │   │   │   ├── cursor_at.rs
│   │   │   │   ├── keyboard.rs
│   │   │   │   └── term.rs
│   │   │   ├── scripts/
│   │   │   │   └── wasmtime-wrapper.sh
│   │   │   ├── src/
│   │   │   │   ├── ansi.rs
│   │   │   │   ├── common_term.rs
│   │   │   │   ├── kb.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── term.rs
│   │   │   │   ├── unix_term.rs
│   │   │   │   ├── utils.rs
│   │   │   │   ├── wasm_term.rs
│   │   │   │   └── windows_term/
│   │   │   │       ├── colors.rs
│   │   │   │       └── mod.rs
│   │   │   └── tests/
│   │   │       └── data/
│   │   │           └── sample_zellij_session.log
│   │   ├── crc32fast/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── bench.rs
│   │   │   ├── build.rs
│   │   │   └── src/
│   │   │       ├── baseline.rs
│   │   │       ├── combine.rs
│   │   │       ├── lib.rs
│   │   │       ├── specialized/
│   │   │       │   ├── aarch64.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── pclmulqdq.rs
│   │   │       └── table.rs
│   │   ├── crossbeam-deque/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── deque.rs
│   │   │   │   └── lib.rs
│   │   │   └── tests/
│   │   │       ├── fifo.rs
│   │   │       ├── injector.rs
│   │   │       ├── lifo.rs
│   │   │       └── steal.rs
│   │   ├── crossbeam-epoch/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   ├── defer.rs
│   │   │   │   ├── flush.rs
│   │   │   │   └── pin.rs
│   │   │   ├── examples/
│   │   │   │   └── sanitize.rs
│   │   │   ├── src/
│   │   │   │   ├── atomic.rs
│   │   │   │   ├── collector.rs
│   │   │   │   ├── default.rs
│   │   │   │   ├── deferred.rs
│   │   │   │   ├── epoch.rs
│   │   │   │   ├── guard.rs
│   │   │   │   ├── internal.rs
│   │   │   │   ├── lib.rs
│   │   │   │   └── sync/
│   │   │   │       ├── list.rs
│   │   │   │       ├── mod.rs
│   │   │   │       ├── once_lock.rs
│   │   │   │       └── queue.rs
│   │   │   └── tests/
│   │   │       └── loom.rs
│   │   ├── crossbeam-utils/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── atomic_cell.rs
│   │   │   ├── build-common.rs
│   │   │   ├── build.rs
│   │   │   ├── no_atomic.rs
│   │   │   ├── src/
│   │   │   │   ├── atomic/
│   │   │   │   │   ├── atomic_cell.rs
│   │   │   │   │   ├── consume.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── seq_lock.rs
│   │   │   │   │   └── seq_lock_wide.rs
│   │   │   │   ├── backoff.rs
│   │   │   │   ├── cache_padded.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── sync/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── once_lock.rs
│   │   │   │   │   ├── parker.rs
│   │   │   │   │   ├── sharded_lock.rs
│   │   │   │   │   └── wait_group.rs
│   │   │   │   └── thread.rs
│   │   │   └── tests/
│   │   │       ├── atomic_cell.rs
│   │   │       ├── cache_padded.rs
│   │   │       ├── parker.rs
│   │   │       ├── sharded_lock.rs
│   │   │       ├── thread.rs
│   │   │       └── wait_group.rs
│   │   ├── crypto-common/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   ├── digest/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── core_api/
│   │   │       │   ├── ct_variable.rs
│   │   │       │   ├── rt_variable.rs
│   │   │       │   ├── wrapper.rs
│   │   │       │   └── xof_reader.rs
│   │   │       ├── core_api.rs
│   │   │       ├── dev/
│   │   │       │   ├── fixed.rs
│   │   │       │   ├── mac.rs
│   │   │       │   ├── rng.rs
│   │   │       │   ├── variable.rs
│   │   │       │   └── xof.rs
│   │   │       ├── dev.rs
│   │   │       ├── digest.rs
│   │   │       ├── lib.rs
│   │   │       └── mac.rs
│   │   ├── either/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README-crates.io.md
│   │   │   ├── README.rst
│   │   │   └── src/
│   │   │       ├── into_either.rs
│   │   │       ├── iterator.rs
│   │   │       ├── lib.rs
│   │   │       ├── serde_untagged.rs
│   │   │       └── serde_untagged_optional.rs
│   │   ├── encode_unicode/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── AUTHORS.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── RELEASES.md
│   │   │   ├── benches/
│   │   │   │   └── multiiterators.rs
│   │   │   ├── src/
│   │   │   │   ├── decoding_iterators.rs
│   │   │   │   ├── errors.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── traits.rs
│   │   │   │   ├── utf16_char.rs
│   │   │   │   ├── utf16_iterators.rs
│   │   │   │   ├── utf8_char.rs
│   │   │   │   └── utf8_iterators.rs
│   │   │   └── tests/
│   │   │       ├── errs.rs
│   │   │       ├── exhaustive.rs
│   │   │       ├── iterators.rs
│   │   │       └── oks.rs
│   │   ├── env_logger/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   ├── custom_default_format.rs
│   │   │   │   ├── custom_format.rs
│   │   │   │   ├── custom_logger.rs
│   │   │   │   ├── default.rs
│   │   │   │   ├── direct_logger.rs
│   │   │   │   ├── filters_from_code.rs
│   │   │   │   ├── in_tests.rs
│   │   │   │   └── syslog_friendly_format.rs
│   │   │   ├── src/
│   │   │   │   ├── filter/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── regex.rs
│   │   │   │   │   └── string.rs
│   │   │   │   ├── fmt/
│   │   │   │   │   ├── humantime.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── style.rs
│   │   │   │   │   └── writer/
│   │   │   │   │       ├── atty.rs
│   │   │   │   │       ├── buffer/
│   │   │   │   │       │   ├── mod.rs
│   │   │   │   │       │   ├── plain.rs
│   │   │   │   │       │   └── termcolor.rs
│   │   │   │   │       └── mod.rs
│   │   │   │   ├── lib.rs
│   │   │   │   └── logger.rs
│   │   │   └── tests/
│   │   │       ├── init-twice-retains-filter.rs
│   │   │       ├── log-in-log.rs
│   │   │       ├── log_tls_dtors.rs
│   │   │       └── regexp_filter.rs
│   │   ├── equivalent/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   ├── errno/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── clippy.toml
│   │   │   └── src/
│   │   │       ├── hermit.rs
│   │   │       ├── lib.rs
│   │   │       ├── unix.rs
│   │   │       ├── wasi.rs
│   │   │       └── windows.rs
│   │   ├── fastrand/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── bench.rs
│   │   │   ├── src/
│   │   │   │   ├── global_rng.rs
│   │   │   │   └── lib.rs
│   │   │   └── tests/
│   │   │       ├── char.rs
│   │   │       └── smoke.rs
│   │   ├── flate2/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── MAINTENANCE.md
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   ├── compress_file.rs
│   │   │   │   ├── decompress_file.rs
│   │   │   │   ├── deflatedecoder-bufread.rs
│   │   │   │   ├── deflatedecoder-read.rs
│   │   │   │   ├── deflatedecoder-write.rs
│   │   │   │   ├── deflateencoder-bufread.rs
│   │   │   │   ├── deflateencoder-read.rs
│   │   │   │   ├── deflateencoder-write.rs
│   │   │   │   ├── gzbuilder.rs
│   │   │   │   ├── gzdecoder-bufread.rs
│   │   │   │   ├── gzdecoder-read.rs
│   │   │   │   ├── gzdecoder-write.rs
│   │   │   │   ├── gzencoder-bufread.rs
│   │   │   │   ├── gzencoder-read.rs
│   │   │   │   ├── gzencoder-write.rs
│   │   │   │   ├── gzmultidecoder-bufread.rs
│   │   │   │   ├── gzmultidecoder-read.rs
│   │   │   │   ├── hello_world.txt
│   │   │   │   ├── zlibdecoder-bufread.rs
│   │   │   │   ├── zlibdecoder-read.rs
│   │   │   │   ├── zlibdecoder-write.rs
│   │   │   │   ├── zlibencoder-bufread.rs
│   │   │   │   ├── zlibencoder-read.rs
│   │   │   │   └── zlibencoder-write.rs
│   │   │   ├── src/
│   │   │   │   ├── bufreader.rs
│   │   │   │   ├── crc.rs
│   │   │   │   ├── deflate/
│   │   │   │   │   ├── bufread.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── read.rs
│   │   │   │   │   └── write.rs
│   │   │   │   ├── ffi/
│   │   │   │   │   ├── c.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── rust.rs
│   │   │   │   ├── gz/
│   │   │   │   │   ├── bufread.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── read.rs
│   │   │   │   │   └── write.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── mem.rs
│   │   │   │   ├── zio.rs
│   │   │   │   └── zlib/
│   │   │   │       ├── bufread.rs
│   │   │   │       ├── mod.rs
│   │   │   │       ├── read.rs
│   │   │   │       └── write.rs
│   │   │   └── tests/
│   │   │       ├── early-flush.rs
│   │   │       ├── empty-read.rs
│   │   │       ├── good-file.txt
│   │   │       ├── gunzip.rs
│   │   │       ├── multi.txt
│   │   │       └── zero-write.rs
│   │   ├── fnv/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── lib.rs
│   │   ├── form_urlencoded/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   ├── fs_extra/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── dir.rs
│   │   │   │   ├── error.rs
│   │   │   │   ├── file.rs
│   │   │   │   └── lib.rs
│   │   │   └── tests/
│   │   │       ├── dir.rs
│   │   │       ├── file.rs
│   │   │       └── lib.rs
│   │   ├── futures-channel/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── sync_mpsc.rs
│   │   │   ├── src/
│   │   │   │   ├── lib.rs
│   │   │   │   ├── lock.rs
│   │   │   │   ├── mpsc/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── queue.rs
│   │   │   │   │   └── sink_impl.rs
│   │   │   │   └── oneshot.rs
│   │   │   └── tests/
│   │   │       ├── channel.rs
│   │   │       ├── mpsc-close.rs
│   │   │       ├── mpsc-size_hint.rs
│   │   │       ├── mpsc.rs
│   │   │       └── oneshot.rs
│   │   ├── futures-core/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── future.rs
│   │   │       ├── lib.rs
│   │   │       ├── stream.rs
│   │   │       └── task/
│   │   │           ├── __internal/
│   │   │           │   ├── atomic_waker.rs
│   │   │           │   └── mod.rs
│   │   │           ├── mod.rs
│   │   │           └── poll.rs
│   │   ├── futures-io/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   ├── futures-sink/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   ├── futures-task/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── arc_wake.rs
│   │   │       ├── future_obj.rs
│   │   │       ├── lib.rs
│   │   │       ├── noop_waker.rs
│   │   │       ├── spawn.rs
│   │   │       ├── waker.rs
│   │   │       └── waker_ref.rs
│   │   ├── futures-util/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   ├── bilock.rs
│   │   │   │   ├── flatten_unordered.rs
│   │   │   │   ├── futures_unordered.rs
│   │   │   │   └── select.rs
│   │   │   └── src/
│   │   │       ├── abortable.rs
│   │   │       ├── async_await/
│   │   │       │   ├── join_mod.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── pending.rs
│   │   │       │   ├── poll.rs
│   │   │       │   ├── random.rs
│   │   │       │   ├── select_mod.rs
│   │   │       │   └── stream_select_mod.rs
│   │   │       ├── compat/
│   │   │       │   ├── compat01as03.rs
│   │   │       │   ├── compat03as01.rs
│   │   │       │   ├── executor.rs
│   │   │       │   └── mod.rs
│   │   │       ├── fns.rs
│   │   │       ├── future/
│   │   │       │   ├── abortable.rs
│   │   │       │   ├── either.rs
│   │   │       │   ├── future/
│   │   │       │   │   ├── catch_unwind.rs
│   │   │       │   │   ├── flatten.rs
│   │   │       │   │   ├── fuse.rs
│   │   │       │   │   ├── map.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── remote_handle.rs
│   │   │       │   │   └── shared.rs
│   │   │       │   ├── join.rs
│   │   │       │   ├── join_all.rs
│   │   │       │   ├── lazy.rs
│   │   │       │   ├── maybe_done.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── option.rs
│   │   │       │   ├── pending.rs
│   │   │       │   ├── poll_fn.rs
│   │   │       │   ├── poll_immediate.rs
│   │   │       │   ├── ready.rs
│   │   │       │   ├── select.rs
│   │   │       │   ├── select_all.rs
│   │   │       │   ├── select_ok.rs
│   │   │       │   ├── try_future/
│   │   │       │   │   ├── into_future.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── try_flatten.rs
│   │   │       │   │   └── try_flatten_err.rs
│   │   │       │   ├── try_join.rs
│   │   │       │   ├── try_join_all.rs
│   │   │       │   ├── try_maybe_done.rs
│   │   │       │   └── try_select.rs
│   │   │       ├── io/
│   │   │       │   ├── allow_std.rs
│   │   │       │   ├── buf_reader.rs
│   │   │       │   ├── buf_writer.rs
│   │   │       │   ├── chain.rs
│   │   │       │   ├── close.rs
│   │   │       │   ├── copy.rs
│   │   │       │   ├── copy_buf.rs
│   │   │       │   ├── copy_buf_abortable.rs
│   │   │       │   ├── cursor.rs
│   │   │       │   ├── empty.rs
│   │   │       │   ├── fill_buf.rs
│   │   │       │   ├── flush.rs
│   │   │       │   ├── into_sink.rs
│   │   │       │   ├── line_writer.rs
│   │   │       │   ├── lines.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── read.rs
│   │   │       │   ├── read_exact.rs
│   │   │       │   ├── read_line.rs
│   │   │       │   ├── read_to_end.rs
│   │   │       │   ├── read_to_string.rs
│   │   │       │   ├── read_until.rs
│   │   │       │   ├── read_vectored.rs
│   │   │       │   ├── repeat.rs
│   │   │       │   ├── seek.rs
│   │   │       │   ├── sink.rs
│   │   │       │   ├── split.rs
│   │   │       │   ├── take.rs
│   │   │       │   ├── window.rs
│   │   │       │   ├── write.rs
│   │   │       │   ├── write_all.rs
│   │   │       │   ├── write_all_vectored.rs
│   │   │       │   └── write_vectored.rs
│   │   │       ├── lib.rs
│   │   │       ├── lock/
│   │   │       │   ├── bilock.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── mutex.rs
│   │   │       ├── never.rs
│   │   │       ├── sink/
│   │   │       │   ├── buffer.rs
│   │   │       │   ├── close.rs
│   │   │       │   ├── drain.rs
│   │   │       │   ├── err_into.rs
│   │   │       │   ├── fanout.rs
│   │   │       │   ├── feed.rs
│   │   │       │   ├── flush.rs
│   │   │       │   ├── map_err.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── send.rs
│   │   │       │   ├── send_all.rs
│   │   │       │   ├── unfold.rs
│   │   │       │   ├── with.rs
│   │   │       │   └── with_flat_map.rs
│   │   │       ├── stream/
│   │   │       │   ├── abortable.rs
│   │   │       │   ├── empty.rs
│   │   │       │   ├── futures_ordered.rs
│   │   │       │   ├── futures_unordered/
│   │   │       │   │   ├── abort.rs
│   │   │       │   │   ├── iter.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── ready_to_run_queue.rs
│   │   │       │   │   └── task.rs
│   │   │       │   ├── iter.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── once.rs
│   │   │       │   ├── pending.rs
│   │   │       │   ├── poll_fn.rs
│   │   │       │   ├── poll_immediate.rs
│   │   │       │   ├── repeat.rs
│   │   │       │   ├── repeat_with.rs
│   │   │       │   ├── select.rs
│   │   │       │   ├── select_all.rs
│   │   │       │   ├── select_with_strategy.rs
│   │   │       │   ├── stream/
│   │   │       │   │   ├── all.rs
│   │   │       │   │   ├── any.rs
│   │   │       │   │   ├── buffer_unordered.rs
│   │   │       │   │   ├── buffered.rs
│   │   │       │   │   ├── catch_unwind.rs
│   │   │       │   │   ├── chain.rs
│   │   │       │   │   ├── chunks.rs
│   │   │       │   │   ├── collect.rs
│   │   │       │   │   ├── concat.rs
│   │   │       │   │   ├── count.rs
│   │   │       │   │   ├── cycle.rs
│   │   │       │   │   ├── enumerate.rs
│   │   │       │   │   ├── filter.rs
│   │   │       │   │   ├── filter_map.rs
│   │   │       │   │   ├── flatten.rs
│   │   │       │   │   ├── flatten_unordered.rs
│   │   │       │   │   ├── fold.rs
│   │   │       │   │   ├── for_each.rs
│   │   │       │   │   ├── for_each_concurrent.rs
│   │   │       │   │   ├── forward.rs
│   │   │       │   │   ├── fuse.rs
│   │   │       │   │   ├── into_future.rs
│   │   │       │   │   ├── map.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── next.rs
│   │   │       │   │   ├── peek.rs
│   │   │       │   │   ├── ready_chunks.rs
│   │   │       │   │   ├── scan.rs
│   │   │       │   │   ├── select_next_some.rs
│   │   │       │   │   ├── skip.rs
│   │   │       │   │   ├── skip_while.rs
│   │   │       │   │   ├── split.rs
│   │   │       │   │   ├── take.rs
│   │   │       │   │   ├── take_until.rs
│   │   │       │   │   ├── take_while.rs
│   │   │       │   │   ├── then.rs
│   │   │       │   │   ├── unzip.rs
│   │   │       │   │   └── zip.rs
│   │   │       │   ├── try_stream/
│   │   │       │   │   ├── and_then.rs
│   │   │       │   │   ├── into_async_read.rs
│   │   │       │   │   ├── into_stream.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── or_else.rs
│   │   │       │   │   ├── try_all.rs
│   │   │       │   │   ├── try_any.rs
│   │   │       │   │   ├── try_buffer_unordered.rs
│   │   │       │   │   ├── try_buffered.rs
│   │   │       │   │   ├── try_chunks.rs
│   │   │       │   │   ├── try_collect.rs
│   │   │       │   │   ├── try_concat.rs
│   │   │       │   │   ├── try_filter.rs
│   │   │       │   │   ├── try_filter_map.rs
│   │   │       │   │   ├── try_flatten.rs
│   │   │       │   │   ├── try_flatten_unordered.rs
│   │   │       │   │   ├── try_fold.rs
│   │   │       │   │   ├── try_for_each.rs
│   │   │       │   │   ├── try_for_each_concurrent.rs
│   │   │       │   │   ├── try_next.rs
│   │   │       │   │   ├── try_ready_chunks.rs
│   │   │       │   │   ├── try_skip_while.rs
│   │   │       │   │   ├── try_take_while.rs
│   │   │       │   │   └── try_unfold.rs
│   │   │       │   └── unfold.rs
│   │   │       ├── task/
│   │   │       │   ├── mod.rs
│   │   │       │   └── spawn.rs
│   │   │       └── unfold_state.rs
│   │   ├── generic-array/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── build.rs
│   │   │   └── src/
│   │   │       ├── arr.rs
│   │   │       ├── functional.rs
│   │   │       ├── hex.rs
│   │   │       ├── impl_serde.rs
│   │   │       ├── impl_zeroize.rs
│   │   │       ├── impls.rs
│   │   │       ├── iter.rs
│   │   │       ├── lib.rs
│   │   │       └── sequence.rs
│   │   ├── getrandom/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── SECURITY.md
│   │   │   ├── benches/
│   │   │   │   └── buffer.rs
│   │   │   ├── src/
│   │   │   │   ├── apple-other.rs
│   │   │   │   ├── custom.rs
│   │   │   │   ├── error.rs
│   │   │   │   ├── error_impls.rs
│   │   │   │   ├── espidf.rs
│   │   │   │   ├── fuchsia.rs
│   │   │   │   ├── getentropy.rs
│   │   │   │   ├── getrandom.rs
│   │   │   │   ├── hermit.rs
│   │   │   │   ├── js.rs
│   │   │   │   ├── lazy.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── linux_android.rs
│   │   │   │   ├── linux_android_with_fallback.rs
│   │   │   │   ├── netbsd.rs
│   │   │   │   ├── rdrand.rs
│   │   │   │   ├── solaris.rs
│   │   │   │   ├── solid.rs
│   │   │   │   ├── use_file.rs
│   │   │   │   ├── util.rs
│   │   │   │   ├── util_libc.rs
│   │   │   │   ├── vxworks.rs
│   │   │   │   ├── wasi.rs
│   │   │   │   └── windows.rs
│   │   │   └── tests/
│   │   │       ├── common/
│   │   │       │   └── mod.rs
│   │   │       ├── custom.rs
│   │   │       ├── normal.rs
│   │   │       └── rdrand.rs
│   │   ├── gimli/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── arch.rs
│   │   │       ├── common.rs
│   │   │       ├── constants.rs
│   │   │       ├── endianity.rs
│   │   │       ├── leb128.rs
│   │   │       ├── lib.rs
│   │   │       ├── read/
│   │   │       │   ├── abbrev.rs
│   │   │       │   ├── addr.rs
│   │   │       │   ├── aranges.rs
│   │   │       │   ├── cfi.rs
│   │   │       │   ├── dwarf.rs
│   │   │       │   ├── endian_reader.rs
│   │   │       │   ├── endian_slice.rs
│   │   │       │   ├── index.rs
│   │   │       │   ├── line.rs
│   │   │       │   ├── lists.rs
│   │   │       │   ├── loclists.rs
│   │   │       │   ├── lookup.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── op.rs
│   │   │       │   ├── pubnames.rs
│   │   │       │   ├── pubtypes.rs
│   │   │       │   ├── reader.rs
│   │   │       │   ├── rnglists.rs
│   │   │       │   ├── str.rs
│   │   │       │   ├── unit.rs
│   │   │       │   ├── util.rs
│   │   │       │   └── value.rs
│   │   │       ├── test_util.rs
│   │   │       └── write/
│   │   │           ├── abbrev.rs
│   │   │           ├── cfi.rs
│   │   │           ├── dwarf.rs
│   │   │           ├── endian_vec.rs
│   │   │           ├── line.rs
│   │   │           ├── loc.rs
│   │   │           ├── mod.rs
│   │   │           ├── op.rs
│   │   │           ├── range.rs
│   │   │           ├── section.rs
│   │   │           ├── str.rs
│   │   │           ├── unit.rs
│   │   │           └── writer.rs
│   │   ├── hashbrown/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   ├── bench.rs
│   │   │   │   └── insert_unique_unchecked.rs
│   │   │   ├── clippy.toml
│   │   │   ├── src/
│   │   │   │   ├── external_trait_impls/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── rayon/
│   │   │   │   │   │   ├── helpers.rs
│   │   │   │   │   │   ├── map.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── raw.rs
│   │   │   │   │   │   ├── set.rs
│   │   │   │   │   │   └── table.rs
│   │   │   │   │   ├── rkyv/
│   │   │   │   │   │   ├── hash_map.rs
│   │   │   │   │   │   ├── hash_set.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   └── serde.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── macros.rs
│   │   │   │   ├── map.rs
│   │   │   │   ├── raw/
│   │   │   │   │   ├── alloc.rs
│   │   │   │   │   ├── bitmask.rs
│   │   │   │   │   ├── generic.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── neon.rs
│   │   │   │   │   └── sse2.rs
│   │   │   │   ├── rustc_entry.rs
│   │   │   │   ├── scopeguard.rs
│   │   │   │   ├── set.rs
│   │   │   │   └── table.rs
│   │   │   └── tests/
│   │   │       ├── equivalent_trait.rs
│   │   │       ├── hasher.rs
│   │   │       ├── raw.rs
│   │   │       ├── rayon.rs
│   │   │       ├── serde.rs
│   │   │       └── set.rs
│   │   ├── heck/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── kebab.rs
│   │   │       ├── lib.rs
│   │   │       ├── lower_camel.rs
│   │   │       ├── shouty_kebab.rs
│   │   │       ├── shouty_snake.rs
│   │   │       ├── snake.rs
│   │   │       ├── title.rs
│   │   │       ├── train.rs
│   │   │       └── upper_camel.rs
│   │   ├── hermit-abi/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── errno.rs
│   │   │       ├── lib.rs
│   │   │       ├── tcplistener.rs
│   │   │       └── tcpstream.rs
│   │   ├── http/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── byte_str.rs
│   │   │   │   ├── convert.rs
│   │   │   │   ├── error.rs
│   │   │   │   ├── extensions.rs
│   │   │   │   ├── header/
│   │   │   │   │   ├── map.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── name.rs
│   │   │   │   │   └── value.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── method.rs
│   │   │   │   ├── request.rs
│   │   │   │   ├── response.rs
│   │   │   │   ├── status.rs
│   │   │   │   ├── uri/
│   │   │   │   │   ├── authority.rs
│   │   │   │   │   ├── builder.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── path.rs
│   │   │   │   │   ├── port.rs
│   │   │   │   │   ├── scheme.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   └── version.rs
│   │   │   └── tests/
│   │   │       ├── header_map.rs
│   │   │       ├── header_map_fuzz.rs
│   │   │       └── status_code.rs
│   │   ├── http-body/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── frame.rs
│   │   │   │   ├── lib.rs
│   │   │   │   └── size_hint.rs
│   │   │   └── tests/
│   │   │       └── is_end_stream.rs
│   │   ├── http-body-util/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── collected.rs
│   │   │       ├── combinators/
│   │   │       │   ├── box_body.rs
│   │   │       │   ├── collect.rs
│   │   │       │   ├── frame.rs
│   │   │       │   ├── map_err.rs
│   │   │       │   ├── map_frame.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── with_trailers.rs
│   │   │       ├── either.rs
│   │   │       ├── empty.rs
│   │   │       ├── full.rs
│   │   │       ├── lib.rs
│   │   │       ├── limited.rs
│   │   │       ├── stream.rs
│   │   │       └── util.rs
│   │   ├── httparse/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── parse.rs
│   │   │   ├── build.rs
│   │   │   ├── src/
│   │   │   │   ├── iter.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── macros.rs
│   │   │   │   └── simd/
│   │   │   │       ├── avx2.rs
│   │   │   │       ├── fallback.rs
│   │   │   │       ├── mod.rs
│   │   │   │       └── sse42.rs
│   │   │   └── tests/
│   │   │       └── uri.rs
│   │   ├── humantime/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   ├── datetime_format.rs
│   │   │   │   └── datetime_parse.rs
│   │   │   ├── bulk.yaml
│   │   │   ├── src/
│   │   │   │   ├── date.rs
│   │   │   │   ├── duration.rs
│   │   │   │   ├── lib.rs
│   │   │   │   └── wrapper.rs
│   │   │   └── vagga.yaml
│   │   ├── hyper/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   └── src/
│   │   │       ├── body/
│   │   │       │   ├── incoming.rs
│   │   │       │   ├── length.rs
│   │   │       │   └── mod.rs
│   │   │       ├── cfg.rs
│   │   │       ├── client/
│   │   │       │   ├── conn/
│   │   │       │   │   ├── http1.rs
│   │   │       │   │   ├── http2.rs
│   │   │       │   │   └── mod.rs
│   │   │       │   ├── dispatch.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── tests.rs
│   │   │       ├── common/
│   │   │       │   ├── buf.rs
│   │   │       │   ├── date.rs
│   │   │       │   ├── io/
│   │   │       │   │   ├── compat.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── rewind.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── task.rs
│   │   │       │   ├── time.rs
│   │   │       │   └── watch.rs
│   │   │       ├── error.rs
│   │   │       ├── ext/
│   │   │       │   ├── h1_reason_phrase.rs
│   │   │       │   └── mod.rs
│   │   │       ├── ffi/
│   │   │       │   ├── body.rs
│   │   │       │   ├── client.rs
│   │   │       │   ├── error.rs
│   │   │       │   ├── http_types.rs
│   │   │       │   ├── io.rs
│   │   │       │   ├── macros.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── task.rs
│   │   │       ├── headers.rs
│   │   │       ├── lib.rs
│   │   │       ├── mock.rs
│   │   │       ├── proto/
│   │   │       │   ├── h1/
│   │   │       │   │   ├── conn.rs
│   │   │       │   │   ├── decode.rs
│   │   │       │   │   ├── dispatch.rs
│   │   │       │   │   ├── encode.rs
│   │   │       │   │   ├── io.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── role.rs
│   │   │       │   ├── h2/
│   │   │       │   │   ├── client.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── ping.rs
│   │   │       │   │   └── server.rs
│   │   │       │   └── mod.rs
│   │   │       ├── rt/
│   │   │       │   ├── bounds.rs
│   │   │       │   ├── io.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── timer.rs
│   │   │       ├── server/
│   │   │       │   ├── conn/
│   │   │       │   │   ├── http1.rs
│   │   │       │   │   ├── http2.rs
│   │   │       │   │   └── mod.rs
│   │   │       │   └── mod.rs
│   │   │       ├── service/
│   │   │       │   ├── http.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── service.rs
│   │   │       │   └── util.rs
│   │   │       ├── trace.rs
│   │   │       └── upgrade.rs
│   │   ├── hyper-rustls/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-ISC
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── RELEASING.md
│   │   │   ├── examples/
│   │   │   │   ├── client.rs
│   │   │   │   ├── openssl.cnf
│   │   │   │   ├── refresh-certificates.sh
│   │   │   │   ├── sample.pem
│   │   │   │   ├── sample.rsa
│   │   │   │   └── server.rs
│   │   │   ├── src/
│   │   │   │   ├── config.rs
│   │   │   │   ├── connector/
│   │   │   │   │   └── builder.rs
│   │   │   │   ├── connector.rs
│   │   │   │   ├── lib.rs
│   │   │   │   └── stream.rs
│   │   │   └── tests/
│   │   │       └── tests.rs
│   │   ├── hyper-util/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   └── client.rs
│   │   │   ├── src/
│   │   │   │   ├── client/
│   │   │   │   │   ├── client.rs
│   │   │   │   │   ├── legacy/
│   │   │   │   │   │   ├── client.rs
│   │   │   │   │   │   ├── connect/
│   │   │   │   │   │   │   ├── dns.rs
│   │   │   │   │   │   │   ├── http.rs
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── pool.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── service.rs
│   │   │   │   ├── common/
│   │   │   │   │   ├── exec.rs
│   │   │   │   │   ├── lazy.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── rewind.rs
│   │   │   │   │   ├── sync.rs
│   │   │   │   │   └── timer.rs
│   │   │   │   ├── error.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── rt/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── tokio.rs
│   │   │   │   ├── server/
│   │   │   │   │   ├── conn/
│   │   │   │   │   │   ├── auto.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   └── service.rs
│   │   │   └── tests/
│   │   │       ├── legacy_client.rs
│   │   │       └── test_utils/
│   │   │           └── mod.rs
│   │   ├── idna/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── benches/
│   │   │   │   └── all.rs
│   │   │   ├── src/
│   │   │   │   ├── IdnaMappingTable.txt
│   │   │   │   ├── lib.rs
│   │   │   │   ├── make_uts46_mapping_table.py
│   │   │   │   ├── punycode.rs
│   │   │   │   ├── uts46.rs
│   │   │   │   └── uts46_mapping_table.rs
│   │   │   └── tests/
│   │   │       ├── IdnaTestV2.txt
│   │   │       ├── bad_punycode_tests.json
│   │   │       ├── punycode.rs
│   │   │       ├── punycode_tests.json
│   │   │       ├── tests.rs
│   │   │       ├── unit.rs
│   │   │       └── uts46.rs
│   │   ├── indexmap/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── RELEASES.md
│   │   │   ├── benches/
│   │   │   │   ├── bench.rs
│   │   │   │   └── faststring.rs
│   │   │   ├── src/
│   │   │   │   ├── arbitrary.rs
│   │   │   │   ├── borsh.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── macros.rs
│   │   │   │   ├── map/
│   │   │   │   │   ├── core/
│   │   │   │   │   │   ├── entry.rs
│   │   │   │   │   │   ├── raw.rs
│   │   │   │   │   │   └── raw_entry_v1.rs
│   │   │   │   │   ├── core.rs
│   │   │   │   │   ├── iter.rs
│   │   │   │   │   ├── mutable.rs
│   │   │   │   │   ├── serde_seq.rs
│   │   │   │   │   ├── slice.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── map.rs
│   │   │   │   ├── rayon/
│   │   │   │   │   ├── map.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── set.rs
│   │   │   │   ├── rustc.rs
│   │   │   │   ├── serde.rs
│   │   │   │   ├── set/
│   │   │   │   │   ├── iter.rs
│   │   │   │   │   ├── mutable.rs
│   │   │   │   │   ├── slice.rs
│   │   │   │   │   └── tests.rs
│   │   │   │   ├── set.rs
│   │   │   │   └── util.rs
│   │   │   └── tests/
│   │   │       ├── equivalent_trait.rs
│   │   │       ├── macros_full_path.rs
│   │   │       ├── quick.rs
│   │   │       └── tests.rs
│   │   ├── indicatif/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── deny.toml
│   │   │   ├── examples/
│   │   │   │   ├── cargo.rs
│   │   │   │   ├── cargowrap.rs
│   │   │   │   ├── download-continued.rs
│   │   │   │   ├── download-speed.rs
│   │   │   │   ├── download.rs
│   │   │   │   ├── fastbar.rs
│   │   │   │   ├── finebars.rs
│   │   │   │   ├── iterator.rs
│   │   │   │   ├── log.rs
│   │   │   │   ├── long-spinner.rs
│   │   │   │   ├── message.rs
│   │   │   │   ├── morebars.rs
│   │   │   │   ├── multi-tree-ext.rs
│   │   │   │   ├── multi-tree.rs
│   │   │   │   ├── multi.rs
│   │   │   │   ├── single.rs
│   │   │   │   ├── slow.rs
│   │   │   │   ├── spinner-loop.rs
│   │   │   │   ├── steady.rs
│   │   │   │   ├── tokio.rs
│   │   │   │   └── yarnish.rs
│   │   │   ├── src/
│   │   │   │   ├── draw_target.rs
│   │   │   │   ├── format.rs
│   │   │   │   ├── in_memory.rs
│   │   │   │   ├── iter.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── multi.rs
│   │   │   │   ├── progress_bar.rs
│   │   │   │   ├── rayon.rs
│   │   │   │   ├── state.rs
│   │   │   │   ├── style.rs
│   │   │   │   └── term_like.rs
│   │   │   └── tests/
│   │   │       ├── multi-autodrop.rs
│   │   │       └── render.rs
│   │   ├── instant/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── AUTHORS
│   │   │   ├── CHANGELOGS.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── lib.rs
│   │   │   │   ├── native.rs
│   │   │   │   └── wasm.rs
│   │   │   └── tests/
│   │   │       └── wasm.rs
│   │   ├── ipnet/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── RELEASES.md
│   │   │   └── src/
│   │   │       ├── ipext.rs
│   │   │       ├── ipnet.rs
│   │   │       ├── ipnet_schemars.rs
│   │   │       ├── ipnet_serde.rs
│   │   │       ├── lib.rs
│   │   │       ├── mask.rs
│   │   │       └── parser.rs
│   │   ├── is-terminal/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-MIT
│   │   │   ├── LICENSE-MIT-atty
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   ├── is_terminal_polyfill/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   ├── itoa/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── bench.rs
│   │   │   ├── src/
│   │   │   │   ├── lib.rs
│   │   │   │   └── udiv128.rs
│   │   │   └── tests/
│   │   │       └── test.rs
│   │   ├── js-sys/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── Temporal.rs
│   │   │   │   └── lib.rs
│   │   │   └── tests/
│   │   │       ├── headless.js
│   │   │       ├── headless.rs
│   │   │       └── wasm/
│   │   │           ├── Array.js
│   │   │           ├── Array.rs
│   │   │           ├── ArrayBuffer.rs
│   │   │           ├── ArrayIterator.rs
│   │   │           ├── BigInt.rs
│   │   │           ├── Boolean.rs
│   │   │           ├── DataView.rs
│   │   │           ├── Date.rs
│   │   │           ├── Error.rs
│   │   │           ├── EvalError.rs
│   │   │           ├── Function.js
│   │   │           ├── Function.rs
│   │   │           ├── Generator.js
│   │   │           ├── Generator.rs
│   │   │           ├── Intl.rs
│   │   │           ├── Iterator.js
│   │   │           ├── Iterator.rs
│   │   │           ├── JSON.rs
│   │   │           ├── JsString.js
│   │   │           ├── JsString.rs
│   │   │           ├── Map.rs
│   │   │           ├── MapIterator.rs
│   │   │           ├── Math.rs
│   │   │           ├── Number.js
│   │   │           ├── Number.rs
│   │   │           ├── Object.js
│   │   │           ├── Object.rs
│   │   │           ├── Promise.rs
│   │   │           ├── Proxy.js
│   │   │           ├── Proxy.rs
│   │   │           ├── RangeError.rs
│   │   │           ├── ReferenceError.rs
│   │   │           ├── Reflect.js
│   │   │           ├── Reflect.rs
│   │   │           ├── RegExp.rs
│   │   │           ├── Set.rs
│   │   │           ├── SetIterator.rs
│   │   │           ├── SharedArrayBuffer.js
│   │   │           ├── SharedArrayBuffer.rs
│   │   │           ├── Symbol.js
│   │   │           ├── Symbol.rs
│   │   │           ├── SyntaxError.rs
│   │   │           ├── Temporal.js
│   │   │           ├── Temporal.rs
│   │   │           ├── TypeError.rs
│   │   │           ├── TypedArray.rs
│   │   │           ├── UriError.rs
│   │   │           ├── WeakMap.rs
│   │   │           ├── WeakSet.rs
│   │   │           ├── WebAssembly.js
│   │   │           ├── WebAssembly.rs
│   │   │           ├── global_fns.rs
│   │   │           └── main.rs
│   │   ├── lazy_static/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── core_lazy.rs
│   │   │   │   ├── inline_lazy.rs
│   │   │   │   └── lib.rs
│   │   │   └── tests/
│   │   │       ├── no_std.rs
│   │   │       └── test.rs
│   │   ├── libc/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CONTRIBUTING.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── build.rs
│   │   │   ├── rustfmt.toml
│   │   │   ├── src/
│   │   │   │   ├── fixed_width_ints.rs
│   │   │   │   ├── fuchsia/
│   │   │   │   │   ├── aarch64.rs
│   │   │   │   │   ├── align.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── no_align.rs
│   │   │   │   │   ├── riscv64.rs
│   │   │   │   │   └── x86_64.rs
│   │   │   │   ├── hermit/
│   │   │   │   │   ├── aarch64.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── x86_64.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── macros.rs
│   │   │   │   ├── psp.rs
│   │   │   │   ├── sgx.rs
│   │   │   │   ├── solid/
│   │   │   │   │   ├── aarch64.rs
│   │   │   │   │   ├── arm.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── switch.rs
│   │   │   │   ├── teeos/
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── unix/
│   │   │   │   │   ├── aix/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── powerpc64.rs
│   │   │   │   │   ├── align.rs
│   │   │   │   │   ├── bsd/
│   │   │   │   │   │   ├── apple/
│   │   │   │   │   │   │   ├── b32/
│   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   ├── b64/
│   │   │   │   │   │   │   │   ├── aarch64/
│   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   └── x86_64/
│   │   │   │   │   │   │   │       ├── align.rs
│   │   │   │   │   │   │   │       └── mod.rs
│   │   │   │   │   │   │   ├── long_array.rs
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   ├── freebsdlike/
│   │   │   │   │   │   │   ├── dragonfly/
│   │   │   │   │   │   │   │   ├── errno.rs
│   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   ├── freebsd/
│   │   │   │   │   │   │   │   ├── aarch64.rs
│   │   │   │   │   │   │   │   ├── arm.rs
│   │   │   │   │   │   │   │   ├── freebsd11/
│   │   │   │   │   │   │   │   │   ├── b64.rs
│   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   ├── freebsd12/
│   │   │   │   │   │   │   │   │   ├── b64.rs
│   │   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   │   └── x86_64.rs
│   │   │   │   │   │   │   │   ├── freebsd13/
│   │   │   │   │   │   │   │   │   ├── b64.rs
│   │   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   │   └── x86_64.rs
│   │   │   │   │   │   │   │   ├── freebsd14/
│   │   │   │   │   │   │   │   │   ├── b64.rs
│   │   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   │   └── x86_64.rs
│   │   │   │   │   │   │   │   ├── freebsd15/
│   │   │   │   │   │   │   │   │   ├── b64.rs
│   │   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   │   └── x86_64.rs
│   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   ├── powerpc.rs
│   │   │   │   │   │   │   │   ├── powerpc64.rs
│   │   │   │   │   │   │   │   ├── riscv64.rs
│   │   │   │   │   │   │   │   ├── x86.rs
│   │   │   │   │   │   │   │   └── x86_64/
│   │   │   │   │   │   │   │       ├── align.rs
│   │   │   │   │   │   │   │       └── mod.rs
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── netbsdlike/
│   │   │   │   │   │       ├── mod.rs
│   │   │   │   │   │       ├── netbsd/
│   │   │   │   │   │       │   ├── aarch64.rs
│   │   │   │   │   │       │   ├── arm.rs
│   │   │   │   │   │       │   ├── mips.rs
│   │   │   │   │   │       │   ├── mod.rs
│   │   │   │   │   │       │   ├── powerpc.rs
│   │   │   │   │   │       │   ├── riscv64.rs
│   │   │   │   │   │       │   ├── sparc64.rs
│   │   │   │   │   │       │   ├── x86.rs
│   │   │   │   │   │       │   └── x86_64.rs
│   │   │   │   │   │       └── openbsd/
│   │   │   │   │   │           ├── aarch64.rs
│   │   │   │   │   │           ├── arm.rs
│   │   │   │   │   │           ├── mips64.rs
│   │   │   │   │   │           ├── mod.rs
│   │   │   │   │   │           ├── powerpc.rs
│   │   │   │   │   │           ├── powerpc64.rs
│   │   │   │   │   │           ├── riscv64.rs
│   │   │   │   │   │           ├── sparc64.rs
│   │   │   │   │   │           ├── x86.rs
│   │   │   │   │   │           └── x86_64.rs
│   │   │   │   │   ├── haiku/
│   │   │   │   │   │   ├── b32.rs
│   │   │   │   │   │   ├── b64.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── native.rs
│   │   │   │   │   │   └── x86_64.rs
│   │   │   │   │   ├── hurd/
│   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   ├── b32.rs
│   │   │   │   │   │   ├── b64.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── no_align.rs
│   │   │   │   │   ├── linux_like/
│   │   │   │   │   │   ├── android/
│   │   │   │   │   │   │   ├── b32/
│   │   │   │   │   │   │   │   ├── arm.rs
│   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   └── x86/
│   │   │   │   │   │   │   │       ├── align.rs
│   │   │   │   │   │   │   │       └── mod.rs
│   │   │   │   │   │   │   ├── b64/
│   │   │   │   │   │   │   │   ├── aarch64/
│   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   ├── int128.rs
│   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   ├── riscv64/
│   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   └── x86_64/
│   │   │   │   │   │   │   │       ├── align.rs
│   │   │   │   │   │   │   │       └── mod.rs
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   ├── emscripten/
│   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   ├── lfs64.rs
│   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   └── no_align.rs
│   │   │   │   │   │   ├── linux/
│   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   ├── arch/
│   │   │   │   │   │   │   │   ├── generic/
│   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   ├── mips/
│   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   ├── powerpc/
│   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   └── sparc/
│   │   │   │   │   │   │   │       └── mod.rs
│   │   │   │   │   │   │   ├── gnu/
│   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   ├── b32/
│   │   │   │   │   │   │   │   │   ├── arm/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── csky/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── m68k/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── mips/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   │   ├── powerpc.rs
│   │   │   │   │   │   │   │   │   ├── riscv32/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── sparc/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   └── x86/
│   │   │   │   │   │   │   │   │       ├── align.rs
│   │   │   │   │   │   │   │   │       └── mod.rs
│   │   │   │   │   │   │   │   ├── b64/
│   │   │   │   │   │   │   │   │   ├── aarch64/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   ├── fallback.rs
│   │   │   │   │   │   │   │   │   │   ├── ilp32.rs
│   │   │   │   │   │   │   │   │   │   ├── int128.rs
│   │   │   │   │   │   │   │   │   │   ├── lp64.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── loongarch64/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── mips64/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   │   ├── powerpc64/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── riscv64/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── s390x.rs
│   │   │   │   │   │   │   │   │   ├── sparc64/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   └── x86_64/
│   │   │   │   │   │   │   │   │       ├── align.rs
│   │   │   │   │   │   │   │   │       ├── mod.rs
│   │   │   │   │   │   │   │   │       ├── not_x32.rs
│   │   │   │   │   │   │   │   │       └── x32.rs
│   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   └── no_align.rs
│   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   ├── musl/
│   │   │   │   │   │   │   │   ├── b32/
│   │   │   │   │   │   │   │   │   ├── arm/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── hexagon.rs
│   │   │   │   │   │   │   │   │   ├── mips/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   │   ├── powerpc.rs
│   │   │   │   │   │   │   │   │   ├── riscv32/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   └── x86/
│   │   │   │   │   │   │   │   │       ├── align.rs
│   │   │   │   │   │   │   │   │       └── mod.rs
│   │   │   │   │   │   │   │   ├── b64/
│   │   │   │   │   │   │   │   │   ├── aarch64/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   ├── int128.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── loongarch64/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── mips64.rs
│   │   │   │   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   │   │   │   ├── powerpc64.rs
│   │   │   │   │   │   │   │   │   ├── riscv64/
│   │   │   │   │   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   │   │   ├── s390x.rs
│   │   │   │   │   │   │   │   │   └── x86_64/
│   │   │   │   │   │   │   │   │       ├── align.rs
│   │   │   │   │   │   │   │   │       └── mod.rs
│   │   │   │   │   │   │   │   ├── lfs64.rs
│   │   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   │   ├── no_align.rs
│   │   │   │   │   │   │   ├── non_exhaustive.rs
│   │   │   │   │   │   │   └── uclibc/
│   │   │   │   │   │   │       ├── align.rs
│   │   │   │   │   │   │       ├── arm/
│   │   │   │   │   │   │       │   ├── align.rs
│   │   │   │   │   │   │       │   ├── mod.rs
│   │   │   │   │   │   │       │   └── no_align.rs
│   │   │   │   │   │   │       ├── mips/
│   │   │   │   │   │   │       │   ├── mips32/
│   │   │   │   │   │   │       │   │   ├── align.rs
│   │   │   │   │   │   │       │   │   ├── mod.rs
│   │   │   │   │   │   │       │   │   └── no_align.rs
│   │   │   │   │   │   │       │   ├── mips64/
│   │   │   │   │   │   │       │   │   ├── align.rs
│   │   │   │   │   │   │       │   │   ├── mod.rs
│   │   │   │   │   │   │       │   │   └── no_align.rs
│   │   │   │   │   │   │       │   └── mod.rs
│   │   │   │   │   │   │       ├── mod.rs
│   │   │   │   │   │   │       ├── no_align.rs
│   │   │   │   │   │   │       └── x86_64/
│   │   │   │   │   │   │           ├── l4re.rs
│   │   │   │   │   │   │           ├── mod.rs
│   │   │   │   │   │   │           └── other.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── newlib/
│   │   │   │   │   │   ├── aarch64/
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   ├── arm/
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   ├── espidf/
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   ├── generic.rs
│   │   │   │   │   │   ├── horizon/
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── no_align.rs
│   │   │   │   │   │   ├── powerpc/
│   │   │   │   │   │   │   └── mod.rs
│   │   │   │   │   │   └── vita/
│   │   │   │   │   │       └── mod.rs
│   │   │   │   │   ├── no_align.rs
│   │   │   │   │   ├── nto/
│   │   │   │   │   │   ├── aarch64.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── neutrino.rs
│   │   │   │   │   │   └── x86_64.rs
│   │   │   │   │   ├── redox/
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   └── solarish/
│   │   │   │   │       ├── compat.rs
│   │   │   │   │       ├── illumos.rs
│   │   │   │   │       ├── mod.rs
│   │   │   │   │       ├── solaris.rs
│   │   │   │   │       ├── x86.rs
│   │   │   │   │       ├── x86_64.rs
│   │   │   │   │       └── x86_common.rs
│   │   │   │   ├── vxworks/
│   │   │   │   │   ├── aarch64.rs
│   │   │   │   │   ├── arm.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── powerpc.rs
│   │   │   │   │   ├── powerpc64.rs
│   │   │   │   │   ├── x86.rs
│   │   │   │   │   └── x86_64.rs
│   │   │   │   ├── wasi.rs
│   │   │   │   ├── windows/
│   │   │   │   │   ├── gnu/
│   │   │   │   │   │   ├── align.rs
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── msvc/
│   │   │   │   │       └── mod.rs
│   │   │   │   └── xous.rs
│   │   │   └── tests/
│   │   │       └── const_fn.rs
│   │   ├── linux-raw-sys/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CODE_OF_CONDUCT.md
│   │   │   ├── COPYRIGHT
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-Apache-2.0_WITH_LLVM-exception
│   │   │   ├── LICENSE-MIT
│   │   │   ├── ORG_CODE_OF_CONDUCT.md
│   │   │   ├── README.md
│   │   │   └── src/
│   │   │       ├── aarch64/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── arm/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── csky/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── elf.rs
│   │   │       ├── lib.rs
│   │   │       ├── loongarch64/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── mips/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── mips32r6/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── mips64/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── mips64r6/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── powerpc/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── powerpc64/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── riscv32/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── riscv64/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── s390x/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── sparc/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── sparc64/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── x32/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       ├── x86/
│   │   │       │   ├── errno.rs
│   │   │       │   ├── general.rs
│   │   │       │   ├── if_ether.rs
│   │   │       │   ├── if_packet.rs
│   │   │       │   ├── io_uring.rs
│   │   │       │   ├── ioctl.rs
│   │   │       │   ├── mempolicy.rs
│   │   │       │   ├── net.rs
│   │   │       │   ├── netlink.rs
│   │   │       │   ├── prctl.rs
│   │   │       │   ├── system.rs
│   │   │       │   └── xdp.rs
│   │   │       └── x86_64/
│   │   │           ├── errno.rs
│   │   │           ├── general.rs
│   │   │           ├── if_ether.rs
│   │   │           ├── if_packet.rs
│   │   │           ├── io_uring.rs
│   │   │           ├── ioctl.rs
│   │   │           ├── mempolicy.rs
│   │   │           ├── net.rs
│   │   │           ├── netlink.rs
│   │   │           ├── prctl.rs
│   │   │           ├── system.rs
│   │   │           └── xdp.rs
│   │   ├── log/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   └── value.rs
│   │   │   ├── src/
│   │   │   │   ├── __private_api.rs
│   │   │   │   ├── kv/
│   │   │   │   │   ├── error.rs
│   │   │   │   │   ├── key.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── source.rs
│   │   │   │   │   └── value.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── macros.rs
│   │   │   │   └── serde.rs
│   │   │   └── triagebot.toml
│   │   ├── memchr/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── COPYING
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── UNLICENSE
│   │   │   ├── rustfmt.toml
│   │   │   └── src/
│   │   │       ├── arch/
│   │   │       │   ├── aarch64/
│   │   │       │   │   ├── memchr.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── neon/
│   │   │       │   │       ├── memchr.rs
│   │   │       │   │       ├── mod.rs
│   │   │       │   │       └── packedpair.rs
│   │   │       │   ├── all/
│   │   │       │   │   ├── memchr.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── packedpair/
│   │   │       │   │   │   ├── default_rank.rs
│   │   │       │   │   │   └── mod.rs
│   │   │       │   │   ├── rabinkarp.rs
│   │   │       │   │   ├── shiftor.rs
│   │   │       │   │   └── twoway.rs
│   │   │       │   ├── generic/
│   │   │       │   │   ├── memchr.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── packedpair.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── wasm32/
│   │   │       │   │   ├── memchr.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── simd128/
│   │   │       │   │       ├── memchr.rs
│   │   │       │   │       ├── mod.rs
│   │   │       │   │       └── packedpair.rs
│   │   │       │   └── x86_64/
│   │   │       │       ├── avx2/
│   │   │       │       │   ├── memchr.rs
│   │   │       │       │   ├── mod.rs
│   │   │       │       │   └── packedpair.rs
│   │   │       │       ├── memchr.rs
│   │   │       │       ├── mod.rs
│   │   │       │       └── sse2/
│   │   │       │           ├── memchr.rs
│   │   │       │           ├── mod.rs
│   │   │       │           └── packedpair.rs
│   │   │       ├── cow.rs
│   │   │       ├── ext.rs
│   │   │       ├── lib.rs
│   │   │       ├── macros.rs
│   │   │       ├── memchr.rs
│   │   │       ├── memmem/
│   │   │       │   ├── mod.rs
│   │   │       │   └── searcher.rs
│   │   │       ├── tests/
│   │   │       │   ├── memchr/
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── naive.rs
│   │   │       │   │   └── prop.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── packedpair.rs
│   │   │       │   └── substring/
│   │   │       │       ├── mod.rs
│   │   │       │       ├── naive.rs
│   │   │       │       └── prop.rs
│   │   │       └── vector.rs
│   │   ├── mime/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CONTRIBUTING.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── benches/
│   │   │   │   ├── cmp.rs
│   │   │   │   ├── fmt.rs
│   │   │   │   └── parse.rs
│   │   │   └── src/
│   │   │       ├── lib.rs
│   │   │       └── parse.rs
│   │   ├── miniz_oxide/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── LICENSE-APACHE.md
│   │   │   ├── LICENSE-MIT.md
│   │   │   ├── LICENSE-ZLIB.md
│   │   │   ├── Readme.md
│   │   │   └── src/
│   │   │       ├── deflate/
│   │   │       │   ├── buffer.rs
│   │   │       │   ├── core.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── stream.rs
│   │   │       ├── inflate/
│   │   │       │   ├── core.rs
│   │   │       │   ├── mod.rs
│   │   │       │   ├── output_buffer.rs
│   │   │       │   └── stream.rs
│   │   │       ├── lib.rs
│   │   │       └── shared.rs
│   │   ├── mio/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   ├── tcp_listenfd_server.rs
│   │   │   │   ├── tcp_server.rs
│   │   │   │   └── udp_server.rs
│   │   │   └── src/
│   │   │       ├── event/
│   │   │       │   ├── event.rs
│   │   │       │   ├── events.rs
│   │   │       │   ├── mod.rs
│   │   │       │   └── source.rs
│   │   │       ├── interest.rs
│   │   │       ├── io_source.rs
│   │   │       ├── lib.rs
│   │   │       ├── macros.rs
│   │   │       ├── net/
│   │   │       │   ├── mod.rs
│   │   │       │   ├── tcp/
│   │   │       │   │   ├── listener.rs
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   └── stream.rs
│   │   │       │   ├── udp.rs
│   │   │       │   └── uds/
│   │   │       │       ├── datagram.rs
│   │   │       │       ├── listener.rs
│   │   │       │       ├── mod.rs
│   │   │       │       └── stream.rs
│   │   │       ├── poll.rs
│   │   │       ├── sys/
│   │   │       │   ├── mod.rs
│   │   │       │   ├── shell/
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── selector.rs
│   │   │       │   │   ├── tcp.rs
│   │   │       │   │   ├── udp.rs
│   │   │       │   │   ├── uds.rs
│   │   │       │   │   └── waker.rs
│   │   │       │   ├── unix/
│   │   │       │   │   ├── mod.rs
│   │   │       │   │   ├── net.rs
│   │   │       │   │   ├── pipe.rs
│   │   │       │   │   ├── selector/
│   │   │       │   │   │   ├── epoll.rs
│   │   │       │   │   │   ├── kqueue.rs
│   │   │       │   │   │   ├── mod.rs
│   │   │       │   │   │   └── poll.rs
│   │   │       │   │   ├── sourcefd.rs
│   │   │       │   │   ├── tcp.rs
│   │   │       │   │   ├── udp.rs
│   │   │       │   │   ├── uds/
│   │   │       │   │   │   ├── datagram.rs
│   │   │       │   │   │   ├── listener.rs
│   │   │       │   │   │   ├── mod.rs
│   │   │       │   │   │   ├── socketaddr.rs
│   │   │       │   │   │   └── stream.rs
│   │   │       │   │   └── waker.rs
│   │   │       │   ├── wasi/
│   │   │       │   │   └── mod.rs
│   │   │       │   └── windows/
│   │   │       │       ├── afd.rs
│   │   │       │       ├── event.rs
│   │   │       │       ├── handle.rs
│   │   │       │       ├── io_status_block.rs
│   │   │       │       ├── iocp.rs
│   │   │       │       ├── mod.rs
│   │   │       │       ├── named_pipe.rs
│   │   │       │       ├── net.rs
│   │   │       │       ├── overlapped.rs
│   │   │       │       ├── selector.rs
│   │   │       │       ├── tcp.rs
│   │   │       │       ├── udp.rs
│   │   │       │       └── waker.rs
│   │   │       ├── token.rs
│   │   │       └── waker.rs
│   │   ├── mozdevice/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   └── src/
│   │   │       ├── adb.rs
│   │   │       ├── lib.rs
│   │   │       ├── shell.rs
│   │   │       └── test.rs
│   │   ├── num_cpus/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── CONTRIBUTING.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── ci/
│   │   │   │   └── cgroups/
│   │   │   │       └── Dockerfile
│   │   │   ├── examples/
│   │   │   │   └── values.rs
│   │   │   ├── fixtures/
│   │   │   │   ├── cgroups/
│   │   │   │   │   ├── cgroups/
│   │   │   │   │   │   ├── ceil/
│   │   │   │   │   │   │   ├── cpu.cfs_period_us
│   │   │   │   │   │   │   └── cpu.cfs_quota_us
│   │   │   │   │   │   ├── good/
│   │   │   │   │   │   │   ├── cpu.cfs_period_us
│   │   │   │   │   │   │   └── cpu.cfs_quota_us
│   │   │   │   │   │   └── zero-period/
│   │   │   │   │   │       ├── cpu.cfs_period_us
│   │   │   │   │   │       └── cpu.cfs_quota_us
│   │   │   │   │   └── proc/
│   │   │   │   │       └── cgroups/
│   │   │   │   │           ├── cgroup
│   │   │   │   │           ├── mountinfo
│   │   │   │   │           ├── mountinfo_multi_opt
│   │   │   │   │           └── mountinfo_zero_opt
│   │   │   │   └── cgroups2/
│   │   │   │       ├── cgroups/
│   │   │   │       │   ├── ceil/
│   │   │   │       │   │   └── cpu.max
│   │   │   │       │   ├── good/
│   │   │   │       │   │   └── cpu.max
│   │   │   │       │   └── zero-period/
│   │   │   │       │       └── cpu.max
│   │   │   │       └── proc/
│   │   │   │           └── cgroups/
│   │   │   │               ├── cgroup
│   │   │   │               ├── cgroup_multi
│   │   │   │               └── mountinfo
│   │   │   └── src/
│   │   │       ├── lib.rs
│   │   │       └── linux.rs
│   │   ├── number_prefix/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── examples/
│   │   │   │   └── conversions.rs
│   │   │   └── src/
│   │   │       ├── lib.rs
│   │   │       └── parse.rs
│   │   ├── object/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── clippy.toml
│   │   │   ├── src/
│   │   │   │   ├── archive.rs
│   │   │   │   ├── common.rs
│   │   │   │   ├── elf.rs
│   │   │   │   ├── endian.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── macho.rs
│   │   │   │   ├── pe.rs
│   │   │   │   ├── pod.rs
│   │   │   │   ├── read/
│   │   │   │   │   ├── any.rs
│   │   │   │   │   ├── archive.rs
│   │   │   │   │   ├── coff/
│   │   │   │   │   │   ├── comdat.rs
│   │   │   │   │   │   ├── file.rs
│   │   │   │   │   │   ├── import.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── relocation.rs
│   │   │   │   │   │   ├── section.rs
│   │   │   │   │   │   └── symbol.rs
│   │   │   │   │   ├── elf/
│   │   │   │   │   │   ├── attributes.rs
│   │   │   │   │   │   ├── comdat.rs
│   │   │   │   │   │   ├── compression.rs
│   │   │   │   │   │   ├── dynamic.rs
│   │   │   │   │   │   ├── file.rs
│   │   │   │   │   │   ├── hash.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── note.rs
│   │   │   │   │   │   ├── relocation.rs
│   │   │   │   │   │   ├── section.rs
│   │   │   │   │   │   ├── segment.rs
│   │   │   │   │   │   ├── symbol.rs
│   │   │   │   │   │   └── version.rs
│   │   │   │   │   ├── macho/
│   │   │   │   │   │   ├── dyld_cache.rs
│   │   │   │   │   │   ├── fat.rs
│   │   │   │   │   │   ├── file.rs
│   │   │   │   │   │   ├── load_command.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── relocation.rs
│   │   │   │   │   │   ├── section.rs
│   │   │   │   │   │   ├── segment.rs
│   │   │   │   │   │   └── symbol.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── pe/
│   │   │   │   │   │   ├── data_directory.rs
│   │   │   │   │   │   ├── export.rs
│   │   │   │   │   │   ├── file.rs
│   │   │   │   │   │   ├── import.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── relocation.rs
│   │   │   │   │   │   ├── resource.rs
│   │   │   │   │   │   ├── rich.rs
│   │   │   │   │   │   └── section.rs
│   │   │   │   │   ├── read_cache.rs
│   │   │   │   │   ├── read_ref.rs
│   │   │   │   │   ├── traits.rs
│   │   │   │   │   ├── util.rs
│   │   │   │   │   ├── wasm.rs
│   │   │   │   │   └── xcoff/
│   │   │   │   │       ├── comdat.rs
│   │   │   │   │       ├── file.rs
│   │   │   │   │       ├── mod.rs
│   │   │   │   │       ├── relocation.rs
│   │   │   │   │       ├── section.rs
│   │   │   │   │       ├── segment.rs
│   │   │   │   │       └── symbol.rs
│   │   │   │   ├── write/
│   │   │   │   │   ├── coff/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── object.rs
│   │   │   │   │   │   └── writer.rs
│   │   │   │   │   ├── elf/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── object.rs
│   │   │   │   │   │   └── writer.rs
│   │   │   │   │   ├── macho.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── pe.rs
│   │   │   │   │   ├── string.rs
│   │   │   │   │   ├── util.rs
│   │   │   │   │   └── xcoff.rs
│   │   │   │   └── xcoff.rs
│   │   │   └── tests/
│   │   │       ├── integration.rs
│   │   │       ├── parse_self.rs
│   │   │       ├── read/
│   │   │       │   ├── coff.rs
│   │   │       │   └── mod.rs
│   │   │       └── round_trip/
│   │   │           ├── bss.rs
│   │   │           ├── coff.rs
│   │   │           ├── comdat.rs
│   │   │           ├── common.rs
│   │   │           ├── elf.rs
│   │   │           ├── macho.rs
│   │   │           ├── mod.rs
│   │   │           ├── section_flags.rs
│   │   │           └── tls.rs
│   │   ├── once_cell/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── bors.toml
│   │   │   ├── examples/
│   │   │   │   ├── bench.rs
│   │   │   │   ├── bench_acquire.rs
│   │   │   │   ├── lazy_static.rs
│   │   │   │   ├── reentrant_init_deadlocks.rs
│   │   │   │   ├── regex.rs
│   │   │   │   └── test_synchronization.rs
│   │   │   ├── src/
│   │   │   │   ├── imp_cs.rs
│   │   │   │   ├── imp_pl.rs
│   │   │   │   ├── imp_std.rs
│   │   │   │   ├── lib.rs
│   │   │   │   └── race.rs
│   │   │   └── tests/
│   │   │       └── it/
│   │   │           ├── main.rs
│   │   │           ├── race.rs
│   │   │           ├── race_once_box.rs
│   │   │           ├── sync_lazy.rs
│   │   │           ├── sync_once_cell.rs
│   │   │           ├── unsync_lazy.rs
│   │   │           └── unsync_once_cell.rs
│   │   ├── percent-encoding/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   └── src/
│   │   │       └── lib.rs
│   │   ├── pin-project/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── examples/
│   │   │   │   ├── README.md
│   │   │   │   ├── enum-default-expanded.rs
│   │   │   │   ├── enum-default.rs
│   │   │   │   ├── not_unpin-expanded.rs
│   │   │   │   ├── not_unpin.rs
│   │   │   │   ├── pinned_drop-expanded.rs
│   │   │   │   ├── pinned_drop.rs
│   │   │   │   ├── project_replace-expanded.rs
│   │   │   │   ├── project_replace.rs
│   │   │   │   ├── struct-default-expanded.rs
│   │   │   │   ├── struct-default.rs
│   │   │   │   ├── unsafe_unpin-expanded.rs
│   │   │   │   └── unsafe_unpin.rs
│   │   │   ├── src/
│   │   │   │   └── lib.rs
│   │   │   └── tests/
│   │   │       ├── auxiliary/
│   │   │       │   └── mod.rs
│   │   │       ├── cfg.rs
│   │   │       ├── compiletest.rs
│   │   │       ├── drop_order.rs
│   │   │       ├── expand/
│   │   │       │   ├── default/
│   │   │       │   │   ├── enum.expanded.rs
│   │   │       │   │   ├── enum.rs
│   │   │       │   │   ├── struct.expanded.rs
│   │   │       │   │   ├── struct.rs
│   │   │       │   │   ├── tuple_struct.expanded.rs
│   │   │       │   │   └── tuple_struct.rs
│   │   │       │   ├── multifields/
│   │   │       │   │   ├── enum.expanded.rs
│   │   │       │   │   ├── enum.rs
│   │   │       │   │   ├── struct.expanded.rs
│   │   │       │   │   ├── struct.rs
│   │   │       │   │   ├── tuple_struct.expanded.rs
│   │   │       │   │   └── tuple_struct.rs
│   │   │       │   ├── naming/
│   │   │       │   │   ├── enum-all.expanded.rs
│   │   │       │   │   ├── enum-all.rs
│   │   │       │   │   ├── enum-mut.expanded.rs
│   │   │       │   │   ├── enum-mut.rs
│   │   │       │   │   ├── enum-none.expanded.rs
│   │   │       │   │   ├── enum-none.rs
│   │   │       │   │   ├── enum-own.expanded.rs
│   │   │       │   │   ├── enum-own.rs
│   │   │       │   │   ├── enum-ref.expanded.rs
│   │   │       │   │   ├── enum-ref.rs
│   │   │       │   │   ├── struct-all.expanded.rs
│   │   │       │   │   ├── struct-all.rs
│   │   │       │   │   ├── struct-mut.expanded.rs
│   │   │       │   │   ├── struct-mut.rs
│   │   │       │   │   ├── struct-none.expanded.rs
│   │   │       │   │   ├── struct-none.rs
│   │   │       │   │   ├── struct-own.expanded.rs
│   │   │       │   │   ├── struct-own.rs
│   │   │       │   │   ├── struct-ref.expanded.rs
│   │   │       │   │   ├── struct-ref.rs
│   │   │       │   │   ├── tuple_struct-all.expanded.rs
│   │   │       │   │   ├── tuple_struct-all.rs
│   │   │       │   │   ├── tuple_struct-mut.expanded.rs
│   │   │       │   │   ├── tuple_struct-mut.rs
│   │   │       │   │   ├── tuple_struct-none.expanded.rs
│   │   │       │   │   ├── tuple_struct-none.rs
│   │   │       │   │   ├── tuple_struct-own.expanded.rs
│   │   │       │   │   ├── tuple_struct-own.rs
│   │   │       │   │   ├── tuple_struct-ref.expanded.rs
│   │   │       │   │   └── tuple_struct-ref.rs
│   │   │       │   ├── not_unpin/
│   │   │       │   │   ├── enum.expanded.rs
│   │   │       │   │   ├── enum.rs
│   │   │       │   │   ├── struct.expanded.rs
│   │   │       │   │   ├── struct.rs
│   │   │       │   │   ├── tuple_struct.expanded.rs
│   │   │       │   │   └── tuple_struct.rs
│   │   │       │   ├── pinned_drop/
│   │   │       │   │   ├── enum.expanded.rs
│   │   │       │   │   ├── enum.rs
│   │   │       │   │   ├── struct.expanded.rs
│   │   │       │   │   ├── struct.rs
│   │   │       │   │   ├── tuple_struct.expanded.rs
│   │   │       │   │   └── tuple_struct.rs
│   │   │       │   ├── project_replace/
│   │   │       │   │   ├── enum.expanded.rs
│   │   │       │   │   ├── enum.rs
│   │   │       │   │   ├── struct.expanded.rs
│   │   │       │   │   ├── struct.rs
│   │   │       │   │   ├── tuple_struct.expanded.rs
│   │   │       │   │   └── tuple_struct.rs
│   │   │       │   ├── pub/
│   │   │       │   │   ├── enum.expanded.rs
│   │   │       │   │   ├── enum.rs
│   │   │       │   │   ├── struct.expanded.rs
│   │   │       │   │   ├── struct.rs
│   │   │       │   │   ├── tuple_struct.expanded.rs
│   │   │       │   │   └── tuple_struct.rs
│   │   │       │   └── unsafe_unpin/
│   │   │       │       ├── enum.expanded.rs
│   │   │       │       ├── enum.rs
│   │   │       │       ├── struct.expanded.rs
│   │   │       │       ├── struct.rs
│   │   │       │       ├── tuple_struct.expanded.rs
│   │   │       │       └── tuple_struct.rs
│   │   │       ├── expandtest.rs
│   │   │       ├── include/
│   │   │       │   ├── basic-safe-part.rs
│   │   │       │   └── basic.rs
│   │   │       ├── pin_project.rs
│   │   │       ├── pinned_drop.rs
│   │   │       ├── proper_unpin.rs
│   │   │       ├── repr_packed.rs
│   │   │       ├── run-pass/
│   │   │       │   ├── negative_impls.rs
│   │   │       │   └── private_in_public-enum.rs
│   │   │       ├── ui/
│   │   │       │   ├── cfg/
│   │   │       │   │   ├── cfg_attr-resolve.rs
│   │   │       │   │   ├── cfg_attr-resolve.stderr
│   │   │       │   │   ├── cfg_attr-type-mismatch.rs
│   │   │       │   │   ├── cfg_attr-type-mismatch.stderr
│   │   │       │   │   ├── packed_sneaky-span-issue-1.rs
│   │   │       │   │   ├── packed_sneaky-span-issue-1.stderr
│   │   │       │   │   ├── packed_sneaky-span-issue-2.rs
│   │   │       │   │   ├── packed_sneaky-span-issue-2.stderr
│   │   │       │   │   ├── packed_sneaky.rs
│   │   │       │   │   ├── packed_sneaky.stderr
│   │   │       │   │   ├── unsupported.rs
│   │   │       │   │   └── unsupported.stderr
│   │   │       │   ├── not_unpin/
│   │   │       │   │   ├── conflict-unpin.rs
│   │   │       │   │   ├── conflict-unpin.stderr
│   │   │       │   │   ├── impl-unsafe-unpin.rs
│   │   │       │   │   └── impl-unsafe-unpin.stderr
│   │   │       │   ├── pin_project/
│   │   │       │   │   ├── add-attr-to-struct.rs
│   │   │       │   │   ├── add-attr-to-struct.stderr
│   │   │       │   │   ├── add-pinned-field.rs
│   │   │       │   │   ├── add-pinned-field.stderr
│   │   │       │   │   ├── conflict-drop.rs
│   │   │       │   │   ├── conflict-drop.stderr
│   │   │       │   │   ├── conflict-unpin.rs
│   │   │       │   │   ├── conflict-unpin.stderr
│   │   │       │   │   ├── impl-unsafe-unpin.rs
│   │   │       │   │   ├── impl-unsafe-unpin.stderr
│   │   │       │   │   ├── import_unnamed.rs
│   │   │       │   │   ├── import_unnamed.stderr
│   │   │       │   │   ├── invalid.rs
│   │   │       │   │   ├── invalid.stderr
│   │   │       │   │   ├── overlapping_unpin_struct.rs
│   │   │       │   │   ├── overlapping_unpin_struct.stderr
│   │   │       │   │   ├── override-priv-mod.rs
│   │   │       │   │   ├── override-priv-mod.stderr
│   │   │       │   │   ├── packed-enum.rs
│   │   │       │   │   ├── packed-enum.stderr
│   │   │       │   │   ├── packed-name-value.rs
│   │   │       │   │   ├── packed-name-value.stderr
│   │   │       │   │   ├── packed.rs
│   │   │       │   │   ├── packed.stderr
│   │   │       │   │   ├── packed_sneaky-1.rs
│   │   │       │   │   ├── packed_sneaky-1.stderr
│   │   │       │   │   ├── packed_sneaky-2.rs
│   │   │       │   │   ├── packed_sneaky-2.stderr
│   │   │       │   │   ├── packed_sneaky-3.rs
│   │   │       │   │   ├── packed_sneaky-3.stderr
│   │   │       │   │   ├── packed_sneaky-4.rs
│   │   │       │   │   ├── packed_sneaky-4.stderr
│   │   │       │   │   ├── project_replace_unsized.rs
│   │   │       │   │   ├── project_replace_unsized.stderr
│   │   │       │   │   ├── project_replace_unsized_fn_params.rs
│   │   │       │   │   ├── project_replace_unsized_fn_params.stderr
│   │   │       │   │   ├── remove-attr-from-field.rs
│   │   │       │   │   ├── remove-attr-from-field.stderr
│   │   │       │   │   ├── remove-attr-from-struct.rs
│   │   │       │   │   ├── remove-attr-from-struct.stderr
│   │   │       │   │   ├── safe_packed_borrows.rs
│   │   │       │   │   ├── safe_packed_borrows.stderr
│   │   │       │   │   ├── unaligned_references.rs
│   │   │       │   │   ├── unaligned_references.stderr
│   │   │       │   │   ├── unpin_sneaky.rs
│   │   │       │   │   ├── unpin_sneaky.stderr
│   │   │       │   │   ├── visibility.rs
│   │   │       │   │   └── visibility.stderr
│   │   │       │   ├── pinned_drop/
│   │   │       │   │   ├── call-drop-inner.rs
│   │   │       │   │   ├── call-drop-inner.stderr
│   │   │       │   │   ├── conditional-drop-impl.rs
│   │   │       │   │   ├── conditional-drop-impl.stderr
│   │   │       │   │   ├── forget-pinned-drop-impl.rs
│   │   │       │   │   ├── forget-pinned-drop-impl.stderr
│   │   │       │   │   ├── invalid-self.rs
│   │   │       │   │   ├── invalid-self.stderr
│   │   │       │   │   ├── invalid.rs
│   │   │       │   │   ├── invalid.stderr
│   │   │       │   │   ├── pinned-drop-no-attr-arg.rs
│   │   │       │   │   ├── pinned-drop-no-attr-arg.stderr
│   │   │       │   │   ├── self.rs
│   │   │       │   │   ├── self.stderr
│   │   │       │   │   ├── unsafe-call.rs
│   │   │       │   │   └── unsafe-call.stderr
│   │   │       │   ├── unsafe_unpin/
│   │   │       │   │   ├── conflict-unpin.rs
│   │   │       │   │   └── conflict-unpin.stderr
│   │   │       │   └── unstable-features/
│   │   │       │       ├── README.md
│   │   │       │       ├── marker_trait_attr-feature-gate.rs
│   │   │       │       ├── marker_trait_attr-feature-gate.stderr
│   │   │       │       ├── marker_trait_attr.rs
│   │   │       │       ├── marker_trait_attr.stderr
│   │   │       │       ├── overlapping_marker_traits-feature-gate.rs
│   │   │       │       ├── overlapping_marker_traits-feature-gate.stderr
│   │   │       │       ├── overlapping_marker_traits.rs
│   │   │       │       ├── overlapping_marker_traits.stderr
│   │   │       │       ├── trivial_bounds-feature-gate.rs
│   │   │       │       ├── trivial_bounds-feature-gate.stderr
│   │   │       │       ├── trivial_bounds.rs
│   │   │       │       └── trivial_bounds.stderr
│   │   │       └── unsafe_unpin.rs
│   │   ├── pin-project-internal/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   └── src/
│   │   │       ├── error.rs
│   │   │       ├── lib.rs
│   │   │       ├── pin_project/
│   │   │       │   ├── args.rs
│   │   │       │   ├── attribute.rs
│   │   │       │   ├── derive.rs
│   │   │       │   └── mod.rs
│   │   │       ├── pinned_drop.rs
│   │   │       └── utils.rs
│   │   ├── pin-project-lite/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   └── lib.rs
│   │   │   └── tests/
│   │   │       ├── auxiliary/
│   │   │       │   └── mod.rs
│   │   │       ├── compiletest.rs
│   │   │       ├── drop_order.rs
│   │   │       ├── expand/
│   │   │       │   ├── default/
│   │   │       │   │   ├── enum.expanded.rs
│   │   │       │   │   ├── enum.rs
│   │   │       │   │   ├── struct.expanded.rs
│   │   │       │   │   └── struct.rs
│   │   │       │   ├── multifields/
│   │   │       │   │   ├── enum.expanded.rs
│   │   │       │   │   ├── enum.rs
│   │   │       │   │   ├── struct.expanded.rs
│   │   │       │   │   └── struct.rs
│   │   │       │   ├── naming/
│   │   │       │   │   ├── enum-all.expanded.rs
│   │   │       │   │   ├── enum-all.rs
│   │   │       │   │   ├── enum-mut.expanded.rs
│   │   │       │   │   ├── enum-mut.rs
│   │   │       │   │   ├── enum-none.expanded.rs
│   │   │       │   │   ├── enum-none.rs
│   │   │       │   │   ├── enum-ref.expanded.rs
│   │   │       │   │   ├── enum-ref.rs
│   │   │       │   │   ├── struct-all.expanded.rs
│   │   │       │   │   ├── struct-all.rs
│   │   │       │   │   ├── struct-mut.expanded.rs
│   │   │       │   │   ├── struct-mut.rs
│   │   │       │   │   ├── struct-none.expanded.rs
│   │   │       │   │   ├── struct-none.rs
│   │   │       │   │   ├── struct-ref.expanded.rs
│   │   │       │   │   └── struct-ref.rs
│   │   │       │   ├── not_unpin/
│   │   │       │   │   ├── enum.expanded.rs
│   │   │       │   │   ├── enum.rs
│   │   │       │   │   ├── struct.expanded.rs
│   │   │       │   │   └── struct.rs
│   │   │       │   ├── pinned_drop/
│   │   │       │   │   ├── enum.expanded.rs
│   │   │       │   │   ├── enum.rs
│   │   │       │   │   ├── struct.expanded.rs
│   │   │       │   │   └── struct.rs
│   │   │       │   └── pub/
│   │   │       │       ├── enum.expanded.rs
│   │   │       │       ├── enum.rs
│   │   │       │       ├── struct.expanded.rs
│   │   │       │       └── struct.rs
│   │   │       ├── expandtest.rs
│   │   │       ├── include/
│   │   │       │   └── basic.rs
│   │   │       ├── proper_unpin.rs
│   │   │       ├── test.rs
│   │   │       └── ui/
│   │   │           ├── pin_project/
│   │   │           │   ├── conflict-drop.rs
│   │   │           │   ├── conflict-drop.stderr
│   │   │           │   ├── conflict-unpin.rs
│   │   │           │   ├── conflict-unpin.stderr
│   │   │           │   ├── invalid-bounds.rs
│   │   │           │   ├── invalid-bounds.stderr
│   │   │           │   ├── invalid.rs
│   │   │           │   ├── invalid.stderr
│   │   │           │   ├── overlapping_lifetime_names.rs
│   │   │           │   ├── overlapping_lifetime_names.stderr
│   │   │           │   ├── overlapping_unpin_struct.rs
│   │   │           │   ├── overlapping_unpin_struct.stderr
│   │   │           │   ├── packed.rs
│   │   │           │   ├── packed.stderr
│   │   │           │   ├── unpin_sneaky.rs
│   │   │           │   ├── unpin_sneaky.stderr
│   │   │           │   ├── unsupported.rs
│   │   │           │   └── unsupported.stderr
│   │   │           └── pinned_drop/
│   │   │               ├── call-drop-inner.rs
│   │   │               ├── call-drop-inner.stderr
│   │   │               ├── conditional-drop-impl.rs
│   │   │               └── conditional-drop-impl.stderr
│   │   ├── pin-utils/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── lib.rs
│   │   │   │   ├── projection.rs
│   │   │   │   └── stack_pin.rs
│   │   │   └── tests/
│   │   │       ├── projection.rs
│   │   │       └── stack_pin.rs
│   │   ├── portable-atomic/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── build.rs
│   │   │   ├── no_atomic.rs
│   │   │   ├── src/
│   │   │   │   ├── cfgs.rs
│   │   │   │   ├── gen/
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── imp/
│   │   │   │   │   ├── arm_linux.rs
│   │   │   │   │   ├── atomic128/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── aarch64.rs
│   │   │   │   │   │   ├── detect/
│   │   │   │   │   │   │   ├── aarch64_aa64reg.rs
│   │   │   │   │   │   │   ├── aarch64_fuchsia.rs
│   │   │   │   │   │   │   ├── aarch64_macos.rs
│   │   │   │   │   │   │   ├── aarch64_windows.rs
│   │   │   │   │   │   │   ├── auxv.rs
│   │   │   │   │   │   │   ├── common.rs
│   │   │   │   │   │   │   └── x86_64.rs
│   │   │   │   │   │   ├── intrinsics.rs
│   │   │   │   │   │   ├── macros.rs
│   │   │   │   │   │   ├── powerpc64.rs
│   │   │   │   │   │   ├── s390x.rs
│   │   │   │   │   │   └── x86_64.rs
│   │   │   │   │   ├── core_atomic.rs
│   │   │   │   │   ├── fallback/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── outline_atomics.rs
│   │   │   │   │   │   ├── seq_lock.rs
│   │   │   │   │   │   ├── seq_lock_wide.rs
│   │   │   │   │   │   └── utils.rs
│   │   │   │   │   ├── float.rs
│   │   │   │   │   ├── interrupt/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   ├── armv4t.rs
│   │   │   │   │   │   ├── armv6m.rs
│   │   │   │   │   │   ├── avr.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   ├── msp430.rs
│   │   │   │   │   │   ├── riscv.rs
│   │   │   │   │   │   └── xtensa.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── msp430.rs
│   │   │   │   │   ├── riscv.rs
│   │   │   │   │   └── x86.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── tests/
│   │   │   │   │   ├── helper.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   └── utils.rs
│   │   │   └── version.rs
│   │   ├── proc-macro2/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── build/
│   │   │   │   └── probe.rs
│   │   │   ├── build.rs
│   │   │   ├── rust-toolchain.toml
│   │   │   ├── src/
│   │   │   │   ├── detection.rs
│   │   │   │   ├── extra.rs
│   │   │   │   ├── fallback.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── location.rs
│   │   │   │   ├── marker.rs
│   │   │   │   ├── parse.rs
│   │   │   │   ├── rcvec.rs
│   │   │   │   └── wrapper.rs
│   │   │   └── tests/
│   │   │       ├── comments.rs
│   │   │       ├── features.rs
│   │   │       ├── marker.rs
│   │   │       ├── test.rs
│   │   │       ├── test_fmt.rs
│   │   │       └── test_size.rs
│   │   ├── quote/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── rust-toolchain.toml
│   │   │   ├── src/
│   │   │   │   ├── ext.rs
│   │   │   │   ├── format.rs
│   │   │   │   ├── ident_fragment.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── runtime.rs
│   │   │   │   ├── spanned.rs
│   │   │   │   └── to_tokens.rs
│   │   │   └── tests/
│   │   │       ├── compiletest.rs
│   │   │       ├── test.rs
│   │   │       └── ui/
│   │   │           ├── does-not-have-iter-interpolated-dup.rs
│   │   │           ├── does-not-have-iter-interpolated-dup.stderr
│   │   │           ├── does-not-have-iter-interpolated.rs
│   │   │           ├── does-not-have-iter-interpolated.stderr
│   │   │           ├── does-not-have-iter-separated.rs
│   │   │           ├── does-not-have-iter-separated.stderr
│   │   │           ├── does-not-have-iter.rs
│   │   │           ├── does-not-have-iter.stderr
│   │   │           ├── not-quotable.rs
│   │   │           ├── not-quotable.stderr
│   │   │           ├── not-repeatable.rs
│   │   │           ├── not-repeatable.stderr
│   │   │           ├── wrong-type-span.rs
│   │   │           └── wrong-type-span.stderr
│   │   ├── rayon/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── FAQ.md
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── RELEASES.md
│   │   │   ├── src/
│   │   │   │   ├── array.rs
│   │   │   │   ├── collections/
│   │   │   │   │   ├── binary_heap.rs
│   │   │   │   │   ├── btree_map.rs
│   │   │   │   │   ├── btree_set.rs
│   │   │   │   │   ├── hash_map.rs
│   │   │   │   │   ├── hash_set.rs
│   │   │   │   │   ├── linked_list.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── vec_deque.rs
│   │   │   │   ├── compile_fail/
│   │   │   │   │   ├── cannot_collect_filtermap_data.rs
│   │   │   │   │   ├── cannot_zip_filtered_data.rs
│   │   │   │   │   ├── cell_par_iter.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── must_use.rs
│   │   │   │   │   ├── no_send_par_iter.rs
│   │   │   │   │   └── rc_par_iter.rs
│   │   │   │   ├── delegate.rs
│   │   │   │   ├── iter/
│   │   │   │   │   ├── blocks.rs
│   │   │   │   │   ├── chain.rs
│   │   │   │   │   ├── chunks.rs
│   │   │   │   │   ├── cloned.rs
│   │   │   │   │   ├── collect/
│   │   │   │   │   │   ├── consumer.rs
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── test.rs
│   │   │   │   │   ├── copied.rs
│   │   │   │   │   ├── empty.rs
│   │   │   │   │   ├── enumerate.rs
│   │   │   │   │   ├── extend.rs
│   │   │   │   │   ├── filter.rs
│   │   │   │   │   ├── filter_map.rs
│   │   │   │   │   ├── find.rs
│   │   │   │   │   ├── find_first_last/
│   │   │   │   │   │   ├── mod.rs
│   │   │   │   │   │   └── test.rs
│   │   │   │   │   ├── flat_map.rs
│   │   │   │   │   ├── flat_map_iter.rs
│   │   │   │   │   ├── flatten.rs
│   │   │   │   │   ├── flatten_iter.rs
│   │   │   │   │   ├── fold.rs
│   │   │   │   │   ├── fold_chunks.rs
│   │   │   │   │   ├── fold_chunks_with.rs
│   │   │   │   │   ├── for_each.rs
│   │   │   │   │   ├── from_par_iter.rs
│   │   │   │   │   ├── inspect.rs
│   │   │   │   │   ├── interleave.rs
│   │   │   │   │   ├── interleave_shortest.rs
│   │   │   │   │   ├── intersperse.rs
│   │   │   │   │   ├── len.rs
│   │   │   │   │   ├── map.rs
│   │   │   │   │   ├── map_with.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── multizip.rs
│   │   │   │   │   ├── noop.rs
│   │   │   │   │   ├── once.rs
│   │   │   │   │   ├── panic_fuse.rs
│   │   │   │   │   ├── par_bridge.rs
│   │   │   │   │   ├── plumbing/
│   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   └── mod.rs
│   │   │   │   │   ├── positions.rs
│   │   │   │   │   ├── product.rs
│   │   │   │   │   ├── reduce.rs
│   │   │   │   │   ├── repeat.rs
│   │   │   │   │   ├── rev.rs
│   │   │   │   │   ├── skip.rs
│   │   │   │   │   ├── skip_any.rs
│   │   │   │   │   ├── skip_any_while.rs
│   │   │   │   │   ├── splitter.rs
│   │   │   │   │   ├── step_by.rs
│   │   │   │   │   ├── sum.rs
│   │   │   │   │   ├── take.rs
│   │   │   │   │   ├── take_any.rs
│   │   │   │   │   ├── take_any_while.rs
│   │   │   │   │   ├── test.rs
│   │   │   │   │   ├── try_fold.rs
│   │   │   │   │   ├── try_reduce.rs
│   │   │   │   │   ├── try_reduce_with.rs
│   │   │   │   │   ├── unzip.rs
│   │   │   │   │   ├── update.rs
│   │   │   │   │   ├── walk_tree.rs
│   │   │   │   │   ├── while_some.rs
│   │   │   │   │   ├── zip.rs
│   │   │   │   │   └── zip_eq.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── math.rs
│   │   │   │   ├── option.rs
│   │   │   │   ├── par_either.rs
│   │   │   │   ├── prelude.rs
│   │   │   │   ├── private.rs
│   │   │   │   ├── range.rs
│   │   │   │   ├── range_inclusive.rs
│   │   │   │   ├── result.rs
│   │   │   │   ├── slice/
│   │   │   │   │   ├── chunk_by.rs
│   │   │   │   │   ├── chunks.rs
│   │   │   │   │   ├── mergesort.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── quicksort.rs
│   │   │   │   │   ├── rchunks.rs
│   │   │   │   │   └── test.rs
│   │   │   │   ├── split_producer.rs
│   │   │   │   ├── str.rs
│   │   │   │   ├── string.rs
│   │   │   │   └── vec.rs
│   │   │   └── tests/
│   │   │       ├── chars.rs
│   │   │       ├── clones.rs
│   │   │       ├── collect.rs
│   │   │       ├── cross-pool.rs
│   │   │       ├── debug.rs
│   │   │       ├── drain_vec.rs
│   │   │       ├── intersperse.rs
│   │   │       ├── issue671-unzip.rs
│   │   │       ├── issue671.rs
│   │   │       ├── iter_panic.rs
│   │   │       ├── named-threads.rs
│   │   │       ├── octillion.rs
│   │   │       ├── par_bridge_recursion.rs
│   │   │       ├── producer_split_at.rs
│   │   │       ├── sort-panic-safe.rs
│   │   │       └── str.rs
│   │   ├── rayon-core/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── build.rs
│   │   │   ├── src/
│   │   │   │   ├── broadcast/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── test.rs
│   │   │   │   ├── compile_fail/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── quicksort_race1.rs
│   │   │   │   │   ├── quicksort_race2.rs
│   │   │   │   │   ├── quicksort_race3.rs
│   │   │   │   │   ├── rc_return.rs
│   │   │   │   │   ├── rc_upvar.rs
│   │   │   │   │   └── scope_join_bad.rs
│   │   │   │   ├── job.rs
│   │   │   │   ├── join/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── test.rs
│   │   │   │   ├── latch.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── private.rs
│   │   │   │   ├── registry.rs
│   │   │   │   ├── scope/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── test.rs
│   │   │   │   ├── sleep/
│   │   │   │   │   ├── README.md
│   │   │   │   │   ├── counters.rs
│   │   │   │   │   └── mod.rs
│   │   │   │   ├── spawn/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── test.rs
│   │   │   │   ├── test.rs
│   │   │   │   ├── thread_pool/
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── test.rs
│   │   │   │   └── unwind.rs
│   │   │   └── tests/
│   │   │       ├── double_init_fail.rs
│   │   │       ├── init_zero_threads.rs
│   │   │       ├── scope_join.rs
│   │   │       ├── scoped_threadpool.rs
│   │   │       ├── simple_panic.rs
│   │   │       ├── stack_overflow_crash.rs
│   │   │       └── use_current_thread.rs
│   │   ├── regex/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── CHANGELOG.md
│   │   │   ├── Cargo.toml
│   │   │   ├── Cross.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── UNICODE.md
│   │   │   ├── bench/
│   │   │   │   └── README.md
│   │   │   ├── record/
│   │   │   │   ├── README.md
│   │   │   │   ├── compile-test/
│   │   │   │   │   ├── 2023-04-19_1.7.3.csv
│   │   │   │   │   ├── 2023-04-20_master.csv
│   │   │   │   │   ├── 2023-07-05.csv
│   │   │   │   │   └── README.md
│   │   │   │   └── old-bench-log/
│   │   │   │       ├── 01-lazy-dfa/
│   │   │   │       │   ├── dynamic
│   │   │   │       │   ├── dynamic-no-lazy-dfa
│   │   │   │       │   ├── native
│   │   │   │       │   ├── nfa
│   │   │   │       │   └── pcre
│   │   │   │       ├── 02-set/
│   │   │   │       │   └── dynamic
│   │   │   │       ├── 03-bytes/
│   │   │   │       │   ├── onig
│   │   │   │       │   ├── pcre
│   │   │   │       │   ├── rust
│   │   │   │       │   └── rust-bytes
│   │   │   │       ├── 04/
│   │   │   │       │   ├── onig
│   │   │   │       │   ├── pcre1-jit
│   │   │   │       │   ├── pcre2-jit
│   │   │   │       │   ├── re2
│   │   │   │       │   ├── rust
│   │   │   │       │   └── tcl
│   │   │   │       ├── 05/
│   │   │   │       │   ├── onig
│   │   │   │       │   ├── onig-vs-rust
│   │   │   │       │   ├── pcre1
│   │   │   │       │   ├── pcre1-vs-rust
│   │   │   │       │   ├── pcre2
│   │   │   │       │   ├── pcre2-vs-rust
│   │   │   │       │   ├── re2
│   │   │   │       │   ├── re2-vs-rust
│   │   │   │       │   ├── rust
│   │   │   │       │   ├── tcl
│   │   │   │       │   └── tcl-vs-rust
│   │   │   │       ├── 06/
│   │   │   │       │   ├── dphobos-dmd
│   │   │   │       │   ├── dphobos-dmd-ct
│   │   │   │       │   ├── dphobos-ldc
│   │   │   │       │   ├── dphobos-ldc-ct
│   │   │   │       │   ├── pcre1
│   │   │   │       │   ├── pcre2
│   │   │   │       │   ├── re2
│   │   │   │       │   └── rust
│   │   │   │       ├── 07/
│   │   │   │       │   ├── boost
│   │   │   │       │   ├── dphobos-dmd
│   │   │   │       │   ├── dphobos-dmd-ct
│   │   │   │       │   ├── oniguruma
│   │   │   │       │   ├── pcre1
│   │   │   │       │   ├── pcre2
│   │   │   │       │   ├── re2
│   │   │   │       │   ├── rust
│   │   │   │       │   ├── rust-bytes
│   │   │   │       │   ├── stdcpp
│   │   │   │       │   ├── stdcpp-libcxx
│   │   │   │       │   └── tcl
│   │   │   │       ├── 08-new-memmem/
│   │   │   │       │   ├── rust-after-01
│   │   │   │       │   ├── rust-after-02
│   │   │   │       │   ├── rust-before-01
│   │   │   │       │   └── rust-before-02
│   │   │   │       ├── 09-new-baseline/
│   │   │   │       │   ├── pcre2
│   │   │   │       │   ├── re2
│   │   │   │       │   ├── rust
│   │   │   │       │   └── rust-bytes
│   │   │   │       ├── 10-last-frontier/
│   │   │   │       │   ├── rust-after-literal.log
│   │   │   │       │   ├── rust-before-literal.log
│   │   │   │       │   ├── rust-bytes-after-literal.log
│   │   │   │       │   └── rust-bytes-before-literal.log
│   │   │   │       ├── 11-regex-1.7.3/
│   │   │   │       │   ├── rust
│   │   │   │       │   └── rust-bytes
│   │   │   │       ├── 12-regex-1.8.1/
│   │   │   │       │   ├── rust
│   │   │   │       │   └── rust-bytes
│   │   │   │       ├── 13-regex-1.9.0/
│   │   │   │       │   ├── rust
│   │   │   │       │   └── rust-bytes
│   │   │   │       ├── README.md
│   │   │   │       └── old/
│   │   │   │           ├── 01-before
│   │   │   │           ├── 02-new-syntax-crate
│   │   │   │           ├── 03-new-syntax-crate
│   │   │   │           ├── 04-fixed-benchmark
│   │   │   │           ├── 05-thread-caching
│   │   │   │           ├── 06-major-dynamic
│   │   │   │           ├── 06-major-macro
│   │   │   │           ├── 07-prefix-improvements
│   │   │   │           ├── 08-case-fixes
│   │   │   │           ├── 09-before-compiler-rewrite
│   │   │   │           ├── 10-compiler-rewrite
│   │   │   │           ├── 11-compiler-rewrite
│   │   │   │           ├── 12-executor
│   │   │   │           ├── 12-executor-bytes
│   │   │   │           └── 13-cache-byte-range-suffixes
│   │   │   ├── rustfmt.toml
│   │   │   ├── src/
│   │   │   │   ├── builders.rs
│   │   │   │   ├── bytes.rs
│   │   │   │   ├── error.rs
│   │   │   │   ├── find_byte.rs
│   │   │   │   ├── lib.rs
│   │   │   │   ├── pattern.rs
│   │   │   │   ├── regex/
│   │   │   │   │   ├── bytes.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   └── string.rs
│   │   │   │   └── regexset/
│   │   │   │       ├── bytes.rs
│   │   │   │       ├── mod.rs
│   │   │   │       └── string.rs
│   │   │   ├── test
│   │   │   ├── testdata/
│   │   │   │   ├── README.md
│   │   │   │   ├── anchored.toml
│   │   │   │   ├── bytes.toml
│   │   │   │   ├── crazy.toml
│   │   │   │   ├── crlf.toml
│   │   │   │   ├── earliest.toml
│   │   │   │   ├── empty.toml
│   │   │   │   ├── expensive.toml
│   │   │   │   ├── flags.toml
│   │   │   │   ├── fowler/
│   │   │   │   │   ├── basic.toml
│   │   │   │   │   ├── dat/
│   │   │   │   │   │   └── README
│   │   │   │   │   ├── nullsubexpr.toml
│   │   │   │   │   └── repetition.toml
│   │   │   │   ├── iter.toml
│   │   │   │   ├── leftmost-all.toml
│   │   │   │   ├── line-terminator.toml
│   │   │   │   ├── misc.toml
│   │   │   │   ├── multiline.toml
│   │   │   │   ├── no-unicode.toml
│   │   │   │   ├── overlapping.toml
│   │   │   │   ├── regex-lite.toml
│   │   │   │   ├── regression.toml
│   │   │   │   ├── set.toml
│   │   │   │   ├── substring.toml
│   │   │   │   ├── unicode.toml
│   │   │   │   ├── utf8.toml
│   │   │   │   ├── word-boundary-special.toml
│   │   │   │   └── word-boundary.toml
│   │   │   └── tests/
│   │   │       ├── fuzz/
│   │   │       │   ├── mod.rs
│   │   │       │   └── testdata/
│   │   │       │       ├── crash-7eb3351f0965e5d6c1cb98aa8585949ef96531ff
│   │   │       │       ├── crash-8760b19b25d74e3603d4c643e9c7404fdd3631f9
│   │   │       │       ├── crash-cd33b13df59ea9d74503986f9d32a270dd43cc04
│   │   │       │       ├── minimized-from-8760b19b25d74e3603d4c643e9c7404fdd3631f9
│   │   │       │       ├── slow-unit-3ab758ea520027fefd3f00e1384d9aeef155739e
│   │   │       │       ├── slow-unit-5345fccadf3812c53c3ccc7af5aa2741b7b2106c
│   │   │       │       ├── slow-unit-6bd643eec330166e4ada91da2d3f284268481085
│   │   │       │       ├── slow-unit-93c73a43581f205f9aaffd9c17e52b34b17becd0
│   │   │       │       ├── slow-unit-9ca9cc9929fee1fcbb847a78384effb8b98ea18a
│   │   │       │       └── slow-unit-b8a052f4254802edbe5f569b6ce6e9b6c927e9d6
│   │   │       ├── lib.rs
│   │   │       ├── misc.rs
│   │   │       ├── regression.rs
│   │   │       ├── regression_fuzz.rs
│   │   │       ├── replace.rs
│   │   │       ├── searcher.rs
│   │   │       ├── suite_bytes.rs
│   │   │       ├── suite_bytes_set.rs
│   │   │       ├── suite_string.rs
│   │   │       └── suite_string_set.rs
│   │   ├── regex-automata/
│   │   │   ├── .cargo-checksum.json
│   │   │   ├── Cargo.toml
│   │   │   ├── LICENSE-APACHE
│   │   │   ├── LICENSE-MIT
│   │   │   ├── README.md
│   │   │   ├── src/
│   │   │   │   ├── dfa/
│   │   │   │   │   ├── accel.rs
│   │   │   │   │   ├── automaton.rs
│   │   │   │   │   ├── dense.rs
│   │   │   │   │   ├── determinize.rs
│   │   │   │   │   ├── minimize.rs
│   │   │   │   │   ├── mod.rs
│   │   │   │   │   ├── onepass.rs
│   │   │   │   │   ├── regex.rs
│   │   │   │   │   ├── remapper.rs
│   │   │   │   │   ├── search.rs
│   │   │   │   │   ├── sparse.rs
│   │   │   │   │   ├── special.rs
│   │   │   │   │   └── start.rs
│   │   │   │   ├── hybrid/
│   │   │   │   │   ├── dfa.rs
│   │   │
Copy disabled (too large) Download .txt
Showing preview only (22,482K chars total). Download the full file to get everything.
SYMBOL INDEX (273812 symbols across 4961 files)

FILE: apps/camera/js/bootstrap.js
  function log (line 32) | function log(msg) {
  function takePicture (line 102) | async function takePicture() {
  function pickImage (line 106) | async function pickImage() {
  function captureQRCode (line 123) | async function captureQRCode() {

FILE: apps/camera/js/camera_base.js
  class CameraBase (line 3) | class CameraBase {
    method constructor (line 4) | constructor(preview) {
    method log (line 8) | log(msg) {
    method error (line 12) | error(msg) {
    method getPreviewTransform (line 22) | getPreviewTransform({ width = 0, height = 0, angle = 0, name = "front"...
    method savePicture (line 61) | async savePicture(blob) {
    method startShutterEffect (line 103) | startShutterEffect() {
    method endShutterEffect (line 107) | endShutterEffect() {

FILE: apps/camera/js/camera_gonk.js
  class Camera (line 3) | class Camera extends CameraBase {
    method constructor (line 5) | constructor(preview) {
    method log (line 19) | log(msg) {
    method error (line 23) | error(msg) {
    method getCameraCount (line 27) | async getCameraCount() {
    method nextCamera (line 31) | async nextCamera() {
    method useCamera (line 44) | async useCamera(name) {
    method takePicture (line 81) | async takePicture(returnBlob = false) {

FILE: apps/camera/js/camera_webrtc.js
  class Camera (line 3) | class Camera extends CameraBase {
    method constructor (line 5) | constructor(preview) {
    method log (line 20) | log(msg) {
    method error (line 24) | error(msg) {
    method getCameraCount (line 28) | async getCameraCount() {
    method nextCamera (line 41) | async nextCamera() {
    method useCamera (line 53) | async useCamera(device) {
    method takePicture (line 90) | async takePicture(returnBlob = false) {

FILE: apps/camera/js/config.js
  function addStylesheet (line 9) | function addStylesheet(url) {
  function loadScript (line 17) | function loadScript(url, defer = false) {
  function loadSharedScript (line 27) | function loadSharedScript(url) {

FILE: apps/camera/js/qr_code.js
  class QrCodeScanner (line 4) | class QrCodeScanner extends EventTarget {
    method constructor (line 5) | constructor(cameraReady) {
    method start (line 15) | async start() {
    method initWasmDecoder (line 32) | async initWasmDecoder() {
    method scheduleFrame (line 38) | scheduleFrame() {
    method processFrame (line 44) | async processFrame() {
    method resume (line 78) | resume() {

FILE: apps/camera/qrdecoder/qrdecoder.js
  function lowering0Callee (line 2) | function lowering0Callee(level, msg) {
  function toUint32 (line 20) | function toUint32(val) {
  function lowering0 (line 37) | function lowering0(arg0, arg1, arg2) {
  function decodeQr (line 64) | function decodeQr(arg0, arg1, arg2) {

FILE: apps/camera/sw.js
  constant HAS_RETURN_VALUE_ACTIVITIES (line 1) | const HAS_RETURN_VALUE_ACTIVITIES = ["pick", "scan-qr-code"];
  constant ACTIVITIES_DISPOSITION (line 2) | const ACTIVITIES_DISPOSITION = { "scan-qr-code": "inline", pick: "inline...

FILE: apps/contacts/components/contact_info.js
  class ContactInfo (line 3) | class ContactInfo extends LitElement {
    method constructor (line 4) | constructor(contact, apps) {
    method log (line 14) | log(msg) {
    method properties (line 18) | static get properties() {
    method switchMode (line 27) | switchMode() {
    method onAction (line 41) | onAction(event) {
    method updatePeerInfo (line 46) | updatePeerInfo(known, paired) {
    method updatePeerApps (line 51) | updatePeerApps(enabled) {
    method launchTile (line 55) | launchTile(event) {
    method updated (line 72) | updated() {
    method emptyArray (line 76) | emptyArray(array) {
    method render (line 87) | render() {

FILE: apps/contacts/js/add_panel.js
  function elem (line 4) | function elem(id) {
  constant ALL_INPUTS (line 13) | const ALL_INPUTS = ["name", "phone", "email"];
  class AddContactPanel (line 15) | class AddContactPanel {
    method constructor (line 16) | constructor() {
    method log (line 33) | log(msg) {
    method error (line 37) | error(msg) {
    method goToMainScreen (line 41) | goToMainScreen() {
    method editContact (line 46) | async editContact(contact) {
    method setAvatar (line 71) | setAvatar() {
    method handleEvent (line 78) | async handleEvent(event) {
    method updateDidList (line 120) | updateDidList(dids) {
    method updateIdentity (line 134) | async updateIdentity() {
    method clear (line 140) | clear() {
    method init (line 151) | async init() {

FILE: apps/contacts/js/config.js
  function addStylesheet (line 9) | function addStylesheet(url) {
  function loadScript (line 17) | function loadScript(url, { defer, module } = { defer: false, module: fal...
  function loadSharedScript (line 30) | function loadSharedScript(url, params) {

FILE: apps/contacts/js/main.js
  function elem (line 1) | function elem(id) {
  class PanelWrapper (line 11) | class PanelWrapper {
    method constructor (line 12) | constructor(node, graph) {
    method sendByEvent (line 22) | sendByEvent(eventName, detail) {
    method editContact (line 32) | editContact(contact) {
    method fromContact (line 36) | fromContact(contact) {
    method handleEvent (line 42) | async handleEvent(event) {
  class PeerWatcher (line 66) | class PeerWatcher {
    method constructor (line 67) | constructor() {
    method peerKey (line 74) | peerKey(peer) {
    method log (line 78) | log(msg) {
    method init (line 82) | async init() {
    method clearWatchers (line 115) | clearWatchers() {
    method getInfo (line 119) | getInfo(did) {
    method addWatcher (line 135) | addWatcher(did, contact) {
    method updatePeerApps (line 149) | async updatePeerApps() {
    method updateContactsFor (line 159) | updateContactsFor(did) {
    method onPeerFound (line 167) | onPeerFound(peer) {
    method onPeerLost (line 172) | onPeerLost(peer) {
    method onSessionAdded (line 177) | onSessionAdded(session) {
    method onSessionRemoved (line 182) | onSessionRemoved(sessionId) {
  function ensureDrawer (line 231) | async function ensureDrawer() {
  function manageList (line 287) | async function manageList(wrappers) {
  class PasswordBasedSecret (line 340) | class PasswordBasedSecret {
    method constructor (line 341) | constructor(password) {
    method getKeyMaterial (line 353) | async getKeyMaterial() {
    method getSymKey (line 364) | async getSymKey() {
    method encrypt (line 381) | async encrypt(plaintext) {
    method decrypt (line 392) | async decrypt(ciphertext) {
  function log (line 404) | function log(msg) {
  function sendToPeer (line 408) | async function sendToPeer(dweb, sessionId, toShare) {
  function maybeAddPeers (line 425) | async function maybeAddPeers(params) {
  function publishContact (line 469) | async function publishContact(contact) {
  function fetchContact (line 522) | async function fetchContact(manager, url, password) {
  function importContact (line 543) | async function importContact(manager) {
  function editContact (line 554) | function editContact(wrappers, contact) {
  function onNewContact (line 561) | function onNewContact(wrappers, data) {
  function onImportContact (line 575) | async function onImportContact(data) {

FILE: apps/contacts/sw.js
  constant HAS_RETURN_VALUE_ACTIVITIES (line 1) | const HAS_RETURN_VALUE_ACTIVITIES = [];

FILE: apps/dialer/js/config.js
  function addLink (line 9) | function addLink(url) {
  function loadScript (line 17) | function loadScript(url, defer = false) {
  function loadSharedScript (line 27) | function loadSharedScript(url) {

FILE: apps/dialer/js/main.js
  function button (line 3) | function button(name) {
  function elem (line 7) | function elem(name) {
  function bindButtonToState (line 11) | function bindButtonToState(btnName, prop) {
  function manageIncoming (line 34) | function manageIncoming(call) {
  function onDigit (line 81) | function onDigit(event) {
  function onLongPress (line 95) | function onLongPress(event) {
  function setupDialer (line 109) | function setupDialer() {
  class PanelManager (line 163) | class PanelManager {
    method constructor (line 164) | constructor() {
    method switchTo (line 182) | switchTo(state) {

FILE: apps/files/components/container_renderer.js
  class ContainerRenderer (line 3) | class ContainerRenderer extends LitElement {
    method constructor (line 4) | constructor(id, filter) {
    method log (line 14) | log(msg) {
    method properties (line 18) | static get properties() {
    method getItems (line 26) | async getItems() {
    method onQrCode (line 122) | onQrCode(event) {
    method findNodeFromEvent (line 133) | findNodeFromEvent(event) {
    method toggleSelection (line 141) | toggleSelection(event) {
    method openResource (line 161) | openResource(event) {
    method closeApp (line 182) | closeApp() {
    method switchMode (line 186) | switchMode() {
    method clearSelected (line 190) | clearSelected() {
    method createDirectory (line 195) | async createDirectory() {
    method deleteSelected (line 219) | async deleteSelected() {
    method renameResource (line 231) | async renameResource() {
    method applyToSingleResourceWithDir (line 248) | async applyToSingleResourceWithDir(action, callback) {
    method moveResource (line 274) | async moveResource() {
    method copyResource (line 280) | async copyResource() {
    method updated (line 286) | updated() {
    method render (line 290) | render() {
    method canEdit (line 351) | canEdit() {

FILE: apps/files/components/default_renderer.js
  class DefaultRenderer (line 3) | class DefaultRenderer extends HTMLElement {
    method constructor (line 4) | constructor(resource) {
    method log (line 30) | log(msg) {
    method properties (line 34) | static get properties() {
    method connectedCallback (line 40) | connectedCallback() {
    method render (line 47) | render() {
    method canEdit (line 60) | canEdit() {

FILE: apps/files/components/directory_picker.js
  class DirectoryPicker (line 3) | class DirectoryPicker extends LitElement {
    method constructor (line 4) | constructor() {
    method properties (line 12) | static get properties() {
    method log (line 18) | log(msg) {
    method updateSelected (line 22) | updateSelected(node, resourceId) {
    method addSubtree (line 32) | async addSubtree(node, parentId = null) {
    method updated (line 90) | updated() {
    method reject (line 107) | reject() {
    method pick (line 117) | pick() {
    method onCancel (line 127) | onCancel() {
    method onOk (line 132) | onOk() {
    method render (line 144) | render() {

FILE: apps/files/components/image_renderer.js
  class ImageRenderer (line 3) | class ImageRenderer extends LitElement {
    method constructor (line 4) | constructor(resource) {
    method log (line 10) | log(msg) {
    method properties (line 14) | static get properties() {
    method updateResource (line 20) | updateResource() {
    method updated (line 24) | updated() {
    method render (line 28) | render() {
    method canEdit (line 34) | canEdit() {

FILE: apps/files/components/main_screen.js
  class MainScreen (line 3) | class MainScreen extends LitElement {
    method constructor (line 4) | constructor() {
    method log (line 23) | log(msg) {
    method error (line 27) | error(msg) {
    method properties (line 31) | static get properties() {
    method enterFilePickerMode (line 41) | enterFilePickerMode(data, defered) {
    method closeApp (line 47) | closeApp() {
    method buildBreadCrumb (line 53) | buildBreadCrumb(id) {
    method openRoot (line 75) | async openRoot() {
    method defaultMimeType (line 85) | async defaultMimeType(id) {
    method switchTo (line 91) | async switchTo(data, fromPopState = false) {
    method enterEditMode (line 145) | async enterEditMode() {
    method switchPath (line 163) | async switchPath(event) {
    method deleteResource (line 189) | async deleteResource() {
    method uploadResource (line 206) | async uploadResource() {
    method shareResource (line 220) | async shareResource() {
    method getBroadcastTicket (line 240) | async getBroadcastTicket() {
    method broadcastResource (line 260) | async broadcastResource() {
    method pickResource (line 275) | async pickResource() {
    method render (line 301) | render() {

FILE: apps/files/components/video_renderer.js
  class VideoRenderer (line 3) | class VideoRenderer extends LitElement {
    method constructor (line 4) | constructor(resource) {
    method log (line 10) | log(msg) {
    method properties (line 14) | static get properties() {
    method render (line 20) | render() {
    method canEdit (line 25) | canEdit() {

FILE: apps/files/js/bootstrap.js
  function log (line 63) | function log(msg) {
  function ensureReady (line 106) | async function ensureReady() {
  function activityViewResource (line 111) | async function activityViewResource(data) {
  function activityPick (line 118) | async function activityPick(data) {

FILE: apps/files/js/config.js
  function addLink (line 9) | function addLink(url) {
  function loadScript (line 17) | function loadScript(url, defer = false) {
  function loadSharedScript (line 27) | function loadSharedScript(url) {

FILE: apps/files/sw.js
  constant HAS_RETURN_VALUE_ACTIVITIES (line 1) | const HAS_RETURN_VALUE_ACTIVITIES = ["pick"];

FILE: apps/ftu/js/config.js
  function addStylesheet (line 9) | function addStylesheet(url) {
  function loadScript (line 17) | function loadScript(url, { defer, module } = { defer: false, module: fal...
  function loadSharedScript (line 30) | function loadSharedScript(url, params) {

FILE: apps/ftu/js/datetime_panel.js
  class DatetimePanel (line 3) | class DatetimePanel {
    method constructor (line 4) | constructor() {
    method log (line 11) | log(msg) {
    method error (line 15) | error(msg) {
    method handleEvent (line 19) | handleEvent(event) {
    method updateClock (line 25) | updateClock(event) {
    method updateTimezone (line 35) | updateTimezone(event) {
    method selectTimezone (line 49) | selectTimezone(event) {
    method ensureTimeService (line 59) | async ensureTimeService() {
    method getSuccessClockToast (line 66) | getSuccessClockToast() {
    method getErrorClockToast (line 75) | getErrorClockToast() {
    method getSuccessTimezoneToast (line 82) | getSuccessTimezoneToast() {
    method getErrorTimezoneToast (line 91) | getErrorTimezoneToast() {
    method setTimeZone (line 100) | async setTimeZone() {
    method loadTimezones (line 122) | async loadTimezones() {
    method init (line 165) | async init() {

FILE: apps/ftu/js/display_panel.js
  class DisplayPanel (line 3) | class DisplayPanel {
    method constructor (line 4) | constructor() {
    method log (line 11) | log(msg) {
    method error (line 15) | error(msg) {
    method handleEvent (line 19) | handleEvent(event) {
    method updateChoice (line 27) | async updateChoice(item) {
    method init (line 38) | async init() {

FILE: apps/ftu/js/identity_panel.js
  class IdentityPanel (line 3) | class IdentityPanel {
    method constructor (line 4) | constructor() {
    method log (line 12) | log(msg) {
    method error (line 16) | error(msg) {
    method handleEvent (line 20) | handleEvent(event) {
    method updateChoice (line 30) | async updateChoice(item) {
    method addDid (line 34) | async addDid() {
    method updateDidList (line 52) | async updateDidList() {
    method manageDeviceName (line 92) | async manageDeviceName() {
    method init (line 114) | async init() {

FILE: apps/ftu/js/language_panel.js
  class LanguagePanel (line 3) | class LanguagePanel {
    method constructor (line 4) | constructor() {
    method log (line 12) | log(msg) {
    method error (line 16) | error(msg) {
    method handleEvent (line 20) | handleEvent(event) {
    method updateChoice (line 30) | async updateChoice(item) {
    method init (line 40) | async init() {

FILE: apps/ftu/js/main.js
  function elem (line 1) | function elem(id) {
  class PanelWrapper (line 11) | class PanelWrapper {
    method constructor (line 12) | constructor(node, graph) {
    method handleEvent (line 22) | async handleEvent(event) {

FILE: apps/ftu/js/privacy_panel.js
  class PrivacyPanel (line 3) | class PrivacyPanel {
    method constructor (line 4) | constructor() {
    method log (line 11) | log(msg) {
    method error (line 15) | error(msg) {
    method handleEvent (line 19) | handleEvent(event) {
    method updateGeoloc (line 25) | updateGeoloc(event) {
    method updateTor (line 31) | updateTor(event) {
    method updateTp (line 42) | updateTp(event) {
    method updateGpc (line 48) | updateGpc(event) {
    method addSwitchBinding (line 54) | async addSwitchBinding(id, name, handler) {
    method init (line 63) | async init() {

FILE: apps/ftu/js/search_panel.js
  class SearchPanel (line 3) | class SearchPanel {
    method constructor (line 4) | constructor() {
    method log (line 12) | log(msg) {
    method error (line 16) | error(msg) {
    method handleEvent (line 20) | handleEvent(event) {
    method updateChoice (line 30) | async updateChoice(item) {
    method init (line 43) | async init() {

FILE: apps/ftu/js/webext_panel.js
  constant COLLECTION_URL (line 4) | const COLLECTION_URL =
  class Addon (line 8) | class Addon {
    method constructor (line 10) | constructor(addon, button) {
    method log (line 19) | log(msg) {
    method updateState (line 23) | async updateState() {
    method install (line 42) | async install() {
    method remove (line 54) | async remove() {
    method handleEvent (line 62) | handleEvent(event) {
  class WebextPanel (line 87) | class WebextPanel {
    method constructor (line 88) | constructor() {
    method log (line 95) | log(msg) {
    method error (line 99) | error(msg) {
    method handleEvent (line 103) | handleEvent(event) {
    method createExtList (line 111) | async createExtList() {
    method setupAlertBox (line 137) | setupAlertBox() {
    method init (line 161) | async init() {

FILE: apps/ftu/js/wifi_panel.js
  function buildNetworkItem (line 4) | function buildNetworkItem(network) {
  class PasswordDialog (line 27) | class PasswordDialog {
    method constructor (line 28) | constructor(network) {
    method result (line 68) | result() {
    method updateValidity (line 75) | updateValidity() {
    method handleEvent (line 79) | handleEvent(event) {
    method close (line 88) | close(target) {
    method show (line 98) | show() {
  class WifiPanel (line 103) | class WifiPanel {
    method constructor (line 104) | constructor() {
    method log (line 111) | log(msg) {
    method error (line 115) | error(msg) {
    method handleEvent (line 119) | handleEvent(event) {
    method clearNetworkList (line 125) | clearNetworkList() {
    method forceScan (line 135) | async forceScan() {
    method updateNetworkList (line 148) | updateNetworkList(networks) {
    method associateNetwork (line 190) | async associateNetwork(network) {
    method init (line 219) | async init() {

FILE: apps/homescreen/components/action_activity.js
  class ActionActivity (line 3) | class ActionActivity extends HTMLElement {
    method constructor (line 4) | constructor(data) {
    method init (line 11) | init(data) {
    method connectedCallback (line 17) | connectedCallback() {
    method disconnectedCallback (line 40) | disconnectedCallback() {
    method animate (line 44) | animate(value) {

FILE: apps/homescreen/components/action_bookmark.js
  class ActionBookmark (line 3) | class ActionBookmark extends HTMLElement {
    method constructor (line 4) | constructor(data) {
    method init (line 10) | init(data) {
    method connectedCallback (line 19) | connectedCallback() {
    method disconnectedCallback (line 40) | disconnectedCallback() {
    method animate (line 46) | animate(value) {

FILE: apps/homescreen/components/action_box.js
  class ActionBox (line 5) | class ActionBox extends HTMLElement {
    method observedAttributes (line 6) | static get observedAttributes() {
    method constructor (line 10) | constructor() {
    method connectedCallback (line 14) | connectedCallback() {
    method menuClick (line 49) | menuClick() {
    method handleEvent (line 55) | handleEvent(event) {
    method attributeChangedCallback (line 81) | attributeChangedCallback(_name, _oldValue, newValue) {
    method translateBy (line 89) | translateBy(deltaX, deltaY) {
    method animate (line 99) | animate(value) {
    method setGhostState (line 126) | setGhostState(enabled) {
    method setGhostActive (line 134) | setGhostActive(enabled) {

FILE: apps/homescreen/components/action_widget.js
  class ActionWidget (line 3) | class ActionWidget extends HTMLElement {
    method constructor (line 4) | constructor(data) {
    method init (line 11) | init(data) {
    method connectedCallback (line 15) | connectedCallback() {
    method disconnectedCallback (line 23) | disconnectedCallback() {}
    method animate (line 25) | animate(value) {

FILE: apps/homescreen/components/actions_wall.js
  class ActionsWall (line 7) | class ActionsWall extends HTMLElement {
    method constructor (line 8) | constructor() {
    method log (line 53) | log(msg) {
    method error (line 57) | error(msg) {
    method addAppAction (line 61) | async addAppAction(app) {
    method createBox (line 74) | createBox(action, inner) {
    method addAction (line 88) | addAction(action) {
    method addNewAction (line 101) | async addNewAction(action) {
    method addGhostAt (line 122) | addGhostAt(position, action) {
    method removeAllGhosts (line 137) | removeAllGhosts() {
    method removeActionNode (line 143) | removeActionNode(node) {
    method connectedCallback (line 154) | connectedCallback() {
    method findHoverBox (line 204) | findHoverBox(element) {
    method handleEvent (line 211) | handleEvent(event) {

FILE: apps/homescreen/components/default_results.js
  class DefaultResults (line 3) | class DefaultResults extends LitElement {
    method constructor (line 4) | constructor() {
    method properties (line 12) | static get properties() {
    method updated (line 18) | updated() {
    method render (line 29) | render() {
    method resultClick (line 82) | resultClick(event) {
    method switchMode (line 94) | switchMode(event) {
    method goHome (line 106) | goHome() {
    method refreshOpenFolder (line 111) | async refreshOpenFolder() {
    method refresh (line 164) | async refresh() {
    method clear (line 190) | clear() {
    method onTabKey (line 195) | onTabKey(event) {
    method onEnterKey (line 221) | onEnterKey() {
  constant PLACES_MIME_TYPE (line 236) | const PLACES_MIME_TYPE = "application/x-places+json";
  constant MEDIA_MIME_TYPE (line 237) | const MEDIA_MIME_TYPE = "application/x-media+json";
  class ContentManagerResource (line 239) | class ContentManagerResource extends LitElement {
    method constructor (line 240) | constructor(item, lib) {
    method properties (line 258) | static get properties() {
    method openURL (line 264) | openURL(url) {
    method activate (line 269) | async activate() {
    method render (line 307) | render() {

FILE: apps/homescreen/components/qr_dialog.js
  class QrDialog (line 6) | class QrDialog extends LitElement {
    method constructor (line 7) | constructor() {
    method properties (line 13) | static get properties() {
    method log (line 19) | log(msg) {
    method error (line 23) | error(msg) {
    method updated (line 27) | updated() {
    method render (line 31) | render() {
    method dialog (line 62) | get dialog() {
    method copyToClipboard (line 66) | copyToClipboard() {
    method share (line 80) | share() {
    method close (line 85) | close() {
    method open (line 90) | open(value) {

FILE: apps/homescreen/js/actions_store.js
  class ActionsStore (line 3) | class ActionsStore extends EventTarget {
    method constructor (line 4) | constructor() {
    method log (line 15) | log(msg) {
    method error (line 19) | error(msg) {
    method fetchAsBlob (line 23) | fetchAsBlob(url) {
    method loadActions (line 45) | async loadActions() {
    method loadOrUseDefaults (line 79) | async loadOrUseDefaults(initEmpty) {
    method updateAction (line 114) | async updateAction(action) {
    method saveAll (line 147) | async saveAll() {
    method removeAction (line 153) | async removeAction(actionId) {
    method getActionById (line 170) | getActionById(actionId) {
    method getActionByManifestUrl (line 176) | getActionByManifestUrl(manifestUrl) {
    method addAction (line 182) | async addAction(action) {
    method forEach (line 191) | forEach(callback) {
    method init (line 195) | async init() {
    method getEmptySlots (line 213) | getEmptySlots(width) {
    method updatePositionFor (line 243) | updatePositionFor(id, position) {

FILE: apps/homescreen/js/bootstrap.js
  class KeyBindings (line 7) | class KeyBindings {
    method constructor (line 8) | constructor() {
    method handleEvent (line 14) | handleEvent(event) {
  function openSearchBox (line 26) | function openSearchBox() {
  function isPrivateBrowsing (line 34) | function isPrivateBrowsing() {
  function maybeOpenURL (line 41) | function maybeOpenURL(url, details = {}) {
  function ensurePanelManager (line 103) | async function ensurePanelManager() {
  function openSearchPanel (line 114) | async function openSearchPanel() {
  function closeSearchPanel (line 120) | function closeSearchPanel() {
  function displayQRCodeResult (line 228) | async function displayQRCodeResult(text) {
  function addToHome (line 233) | async function addToHome(data) {

FILE: apps/homescreen/js/config.js
  function addLink (line 9) | function addLink(url) {
  function loadScript (line 17) | function loadScript(url, defer = false) {
  function loadSharedScript (line 27) | function loadSharedScript(url) {

FILE: apps/homescreen/js/search/apps.js
  class AppsSearch (line 3) | class AppsSearch {
    method constructor (line 4) | constructor() {
    method handleEvent (line 11) | async handleEvent() {
    method updateApps (line 17) | async updateApps() {
    method search (line 50) | search(what, count) {
  class AppsSource (line 64) | class AppsSource extends SearchSource {
    method constructor (line 65) | constructor(sectionName) {
    method domForResult (line 69) | domForResult(result) {
    method activate (line 79) | activate(_result) {

FILE: apps/homescreen/js/search/contacts.js
  class ContactsSearch (line 3) | class ContactsSearch {
    method constructor (line 4) | constructor() {}
    method search (line 7) | async search(query, count) {
  class ContactsSource (line 32) | class ContactsSource extends SearchSource {
    method constructor (line 33) | constructor(sectionName) {
    method domForResult (line 37) | domForResult(result) {
    method activate (line 99) | activate(result) {

FILE: apps/homescreen/js/search/fend.js
  class FendConverter (line 7) | class FendConverter {
    method constructor (line 8) | constructor() {
    method init (line 12) | async init() {
    method search (line 21) | async search(what, count) {
  class FendConverterSource (line 33) | class FendConverterSource extends SearchSource {
    method constructor (line 34) | constructor(sectionName) {
    method domForResult (line 39) | domForResult(result) {
    method activate (line 76) | activate(_result) {

FILE: apps/homescreen/js/search/fend_wasm.js
  function getObject (line 16) | function getObject(idx) { return heap[idx]; }
  function dropObject (line 20) | function dropObject(idx) {
  function takeObject (line 26) | function takeObject(idx) {
  function getUint8Memory0 (line 38) | function getUint8Memory0() {
  function getStringFromWasm0 (line 45) | function getStringFromWasm0(ptr, len) {
  function addHeapObject (line 49) | function addHeapObject(obj) {
  function passStringToWasm0 (line 75) | function passStringToWasm0(arg, malloc, realloc) {
  function isLikeNone (line 113) | function isLikeNone(x) {
  function getInt32Memory0 (line 119) | function getInt32Memory0() {
  function getFloat64Memory0 (line 128) | function getFloat64Memory0() {
  function debugString (line 135) | function debugString(val) {
  function handleError (line 316) | function handleError(f, args) {
  function __wbg_adapter_29 (line 323) | function __wbg_adapter_29(arg0, arg1, arg2, arg3) {
  function notDefined (line 327) | function notDefined(what) { return () => { throw new Error(`${what} is n...
  function load (line 329) | async function load(module, imports) {
  function getImports (line 360) | function getImports() {
  function initMemory (line 468) | function initMemory(imports, maybe_memory) {
  function finalizeInit (line 472) | function finalizeInit(instance, module) {
  function initSync (line 483) | function initSync(module) {
  function init (line 497) | async function init(input) {

FILE: apps/homescreen/js/search/media.js
  class Media (line 3) | class Media {
    method search (line 5) | async search(query, count) {
  class MediaSource (line 23) | class MediaSource extends SearchSource {
    method constructor (line 24) | constructor(sectionName) {
    method domForResult (line 28) | domForResult(result) {
    method activate (line 32) | activate(result) {
  class MediaItem (line 42) | class MediaItem extends HTMLElement {
    method constructor (line 43) | constructor(data) {
    method variant (line 49) | variant(name = "default") {
    method connectedCallback (line 62) | connectedCallback() {
    method disconnectedCallback (line 84) | disconnectedCallback() {
    method activate (line 89) | activate() {

FILE: apps/homescreen/js/search/opensearch.js
  class OpenSearch (line 3) | class OpenSearch {
    method constructor (line 4) | constructor() {
    method log (line 9) | log(msg) {
    method init (line 13) | async init() {
    method searchDesc (line 29) | get searchDesc() {
    method buildUrl (line 36) | buildUrl(what, template) {
    method templateUrlFor (line 44) | templateUrlFor(kind = "search") {
    method search (line 71) | search(what, count) {
    method getSearchUrlFor (line 101) | getSearchUrlFor(what) {
  class OpenSearchSource (line 111) | class OpenSearchSource extends SearchSource {
    method constructor (line 112) | constructor(sectionName) {
    method activate (line 116) | activate(result) {
    method domForResult (line 120) | domForResult(result) {

FILE: apps/homescreen/js/search/places.js
  class Places (line 3) | class Places {
    method search (line 5) | async search(query, count) {
  class PlacesSource (line 22) | class PlacesSource extends SearchSource {
    method constructor (line 23) | constructor(sectionName) {
    method domForResult (line 27) | domForResult(result) {
    method activate (line 31) | activate(result) {
  class PlacesItem (line 39) | class PlacesItem extends LitElement {
    method constructor (line 41) | constructor(data) {
    method properties (line 47) | static get properties() {
    method variant (line 53) | variant(name = "default") {
    method render (line 66) | render() {
    method disconnectedCallback (line 78) | disconnectedCallback() {
    method activate (line 84) | activate() {

FILE: apps/homescreen/js/search/search_activity.js
  class SearchActivity (line 4) | class SearchActivity {
    method search (line 6) | async search(input, count) {
  class SearchActivitySource (line 24) | class SearchActivitySource extends SearchSource {
    method constructor (line 25) | constructor(sectionName) {
    method domForResult (line 30) | domForResult(result) {
    method activate (line 67) | activate(result) {

FILE: apps/homescreen/js/search/search_source.js
  class SearchSource (line 4) | class SearchSource {
    method constructor (line 5) | constructor(sourceName, engine) {
    method closeSearch (line 29) | static closeSearch() {
    method resultsNode (line 33) | get resultsNode() {
    method titleNode (line 37) | get titleNode() {
    method clearResults (line 41) | clearResults() {
    method search (line 46) | search(what, maxCount) {

FILE: apps/homescreen/js/search/skills.js
  class Skill (line 3) | class Skill {
    method constructor (line 4) | constructor(skill) {
    method splitOnBlank (line 11) | static splitOnBlank(input, lowerCase = false) {
    method parseTrigger (line 18) | parseTrigger() {
    method matches (line 65) | matches(request) {
    method isEmail (line 120) | static isEmail(value) {
    method isPhoneNumber (line 126) | static isPhoneNumber(value) {
    method asInt (line 139) | static asInt(value) {
    method isContact (line 147) | static async isContact(value) {
    method parseRequest (line 153) | static async parseRequest(request) {
  class SkillsSearch (line 173) | class SkillsSearch {
    method constructor (line 174) | constructor() {
    method handleEvent (line 181) | async handleEvent() {
    method updateApps (line 187) | async updateApps() {
    method search (line 205) | async search(what, count) {
  class SkillsSource (line 223) | class SkillsSource extends SearchSource {
    method constructor (line 224) | constructor(sectionName) {
    method domForResult (line 229) | domForResult(result) {
    method activate (line 276) | activate(result) {

FILE: apps/homescreen/js/search/top_sites.js
  class TopSites (line 3) | class TopSites {
    method constructor (line 4) | constructor() {
    method search (line 30) | search(what, count) {
  class TopSitesSource (line 50) | class TopSitesSource extends SearchSource {
    method constructor (line 51) | constructor(sectionName) {
    method domForResult (line 55) | domForResult(result) {
    method activate (line 61) | activate(result) {

FILE: apps/homescreen/js/search_panel.js
  class SearchPanel (line 3) | class SearchPanel {
    method init (line 4) | init() {
    method onOpen (line 37) | onOpen() {
    method onClose (line 56) | onClose() {
    method openURL (line 66) | openURL(url, search) {
    method clearAllResults (line 70) | clearAllResults() {
    method mergeDom (line 79) | mergeDom(parent, nodes) {
    method handleEvent (line 107) | handleEvent() {
    method getTopFrecencyResults (line 159) | async getTopFrecencyResults() {

FILE: apps/homescreen/sw.js
  constant HAS_RETURN_VALUE_ACTIVITIES (line 1) | const HAS_RETURN_VALUE_ACTIVITIES = ["add-to-home"];

FILE: apps/keyboard/js/config.js
  function addLink (line 9) | function addLink(url) {
  function loadScript (line 17) | function loadScript(url, defer = false) {
  function loadSharedScript (line 27) | function loadSharedScript(url) {

FILE: apps/keyboard/js/main.js
  class KeyboardLayout (line 1) | class KeyboardLayout {
    method constructor (line 2) | constructor(root) {
    method loadLayout (line 12) | async loadLayout(name) {
    method selectLayout (line 18) | selectLayout(name) {
    method buildView (line 28) | buildView(name) {
    method switchToView (line 112) | switchToView(viewName) {
    method processCommand (line 123) | processCommand(cmd) {
    method showKeyBubble (line 141) | showKeyBubble(target, key) {
    method handleEvent (line 158) | handleEvent(event) {

FILE: apps/mediacenter/components/default_results.js
  class DefaultResults (line 3) | class DefaultResults extends LitElement {
    method constructor (line 4) | constructor() {
    method createRenderRoot (line 13) | createRenderRoot() {
    method properties (line 20) | static get properties() {
    method render (line 26) | render() {
    method resultClick (line 59) | resultClick(event) {
    method refresh (line 71) | async refresh() {
    method clear (line 84) | clear() {
    method onEnterKey (line 89) | onEnterKey() {

FILE: apps/mediacenter/js/bootstrap.js
  class KeyBindings (line 7) | class KeyBindings {
    method constructor (line 8) | constructor() {
    method handleEvent (line 14) | handleEvent(event) {
  function openSearchBox (line 26) | function openSearchBox() {
  class SearchPanel (line 36) | class SearchPanel {
    method constructor (line 37) | constructor() {
    method init (line 42) | init(graph) {
    method ensureLoaded (line 48) | async ensureLoaded() {
    method open (line 59) | async open() {
    method close (line 66) | close() {
    method manager (line 72) | manager() {
  function maybeOpenURL (line 81) | function maybeOpenURL(url, details = {}) {
  function setupSpatialNavigation (line 220) | function setupSpatialNavigation() {
  function updateClock (line 248) | function updateClock() {
  class MinuteTimer (line 262) | class MinuteTimer extends EventTarget {
    method constructor (line 263) | constructor() {
    method schedule (line 270) | schedule() {
    method suspend (line 289) | suspend() {
    method resume (line 297) | resume() {
  function addToHome (line 308) | async function addToHome(data) {

FILE: apps/mediacenter/js/config.js
  function addLink (line 9) | function addLink(url) {
  function loadScript (line 17) | function loadScript(url, defer = false) {
  function loadSharedScript (line 27) | function loadSharedScript(url) {

FILE: apps/mediacenter/js/favorites.js
  class Favorites (line 3) | class Favorites {
    method constructor (line 4) | constructor(parent, containerName) {
    method log (line 19) | log(msg) {
    method init (line 23) | async init() {
    method handleEvent (line 54) | async handleEvent(event) {
    method addChild (line 72) | async addChild(item) {
    method removeChild (line 88) | removeChild(item) {
    method updateList (line 110) | async updateList(list) {
  class Apps (line 137) | class Apps extends Favorites {
    method constructor (line 138) | constructor(parent) {
    method shouldDisplay (line 142) | shouldDisplay(content) {
    method buildNodeFor (line 146) | buildNodeFor(content, resource) {
  class Videos (line 181) | class Videos extends Favorites {
    method constructor (line 182) | constructor(parent) {
    method shouldDisplay (line 186) | shouldDisplay(content) {
    method buildNodeFor (line 191) | buildNodeFor(content, resource) {

FILE: apps/mediacenter/js/search/opensearch.js
  class OpenSearch (line 3) | class OpenSearch {
    method constructor (line 4) | constructor() {
    method log (line 9) | log(msg) {
    method init (line 13) | async init() {
    method searchDesc (line 29) | get searchDesc() {
    method buildUrl (line 36) | buildUrl(what, template) {
    method templateUrlFor (line 44) | templateUrlFor(kind = "search") {
    method search (line 71) | search(what, count) {
    method getSearchUrlFor (line 101) | getSearchUrlFor(what) {
  class OpenSearchSource (line 111) | class OpenSearchSource extends SearchSource {
    method constructor (line 112) | constructor(sectionName) {
    method activate (line 116) | activate(result) {
    method domForResult (line 120) | domForResult(result) {

FILE: apps/mediacenter/js/search/places.js
  class Places (line 3) | class Places {
    method search (line 5) | async search(query, count) {
  class PlacesSource (line 20) | class PlacesSource extends SearchSource {
    method constructor (line 21) | constructor(sectionName) {
    method domForResult (line 25) | domForResult(result) {
    method activate (line 29) | activate(result) {
  class PlacesItem (line 37) | class PlacesItem extends LitElement {
    method constructor (line 39) | constructor(data) {
    method createRenderRoot (line 59) | createRenderRoot() {
    method properties (line 66) | static get properties() {
    method handleEvent (line 72) | handleEvent(event) {
    method variant (line 83) | variant(name = "default") {
    method render (line 96) | render() {
    method disconnectedCallback (line 107) | disconnectedCallback() {
    method activate (line 113) | activate() {

FILE: apps/mediacenter/js/search/search_source.js
  class SearchSource (line 4) | class SearchSource {
    method constructor (line 5) | constructor(sourceName, engine) {
    method updateSpatialNavigation (line 32) | updateSpatialNavigation(nodes) {
    method closeSearch (line 39) | static closeSearch() {
    method resultsNode (line 43) | get resultsNode() {
    method titleNode (line 47) | get titleNode() {
    method clearResults (line 51) | clearResults() {
    method search (line 56) | search(what, maxCount) {

FILE: apps/mediacenter/js/search/top_sites.js
  class TopSites (line 3) | class TopSites {
    method constructor (line 4) | constructor() {
    method search (line 30) | search(what, count) {
  class TopSitesSource (line 48) | class TopSitesSource extends SearchSource {
    method constructor (line 49) | constructor(sectionName) {
    method domForResult (line 53) | domForResult(result) {
    method activate (line 61) | activate(result) {

FILE: apps/mediacenter/js/search_panel.js
  class SearchPanel (line 3) | class SearchPanel {
    method init (line 4) | init() {
    method onOpen (line 15) | onOpen() {
    method onClose (line 34) | onClose() {
    method openURL (line 43) | openURL(url, search) {
    method clearAllResults (line 47) | clearAllResults() {
    method mergeDom (line 56) | mergeDom(parent, nodes) {
    method handleEvent (line 84) | handleEvent() {
    method getTopFrecencyResults (line 136) | async getTopFrecencyResults() {

FILE: apps/mediacenter/sw.js
  constant HAS_RETURN_VALUE_ACTIVITIES (line 1) | const HAS_RETURN_VALUE_ACTIVITIES = ["add-to-home"];

FILE: apps/messages/components/message_display.js
  class MessageDisplay (line 4) | class MessageDisplay extends LitElement {
    method constructor (line 6) | constructor(data) {
    method properties (line 11) | static get properties() {
    method setData (line 19) | setData(data) {
    method linkify (line 49) | linkify(input) {
    method render (line 63) | render() {

FILE: apps/messages/components/thread_head.js
  class ThreadHead (line 4) | class ThreadHead extends LitElement {
    method constructor (line 6) | constructor(data) {
    method properties (line 12) | static get properties() {
    method setData (line 21) | setData(data) {
    method handleEvent (line 41) | handleEvent(_event) {
    method render (line 52) | render() {

FILE: apps/messages/js/bootstrap.js
  class UiManager (line 26) | class UiManager {
    method constructor (line 27) | constructor() {
    method panelManager (line 59) | set panelManager(value) {
    method updatePanelLinks (line 64) | updatePanelLinks() {
    method handleEvent (line 72) | handleEvent(event) {
    method updateThreadList (line 94) | async updateThreadList() {
    method findAndOpenThred (line 110) | async findAndOpenThred(search) {
    method openThread (line 140) | async openThread(thread) {
  function createDummyMessageList (line 172) | function createDummyMessageList(list) {
  function createDummyThreadList (line 202) | function createDummyThreadList() {
  class PanelFactory (line 218) | class PanelFactory {
    method constructor (line 219) | constructor() {
    method log (line 232) | log(msg) {
    method open (line 236) | open(name, data) {
    method hide (line 246) | hide() {
    method panelManager (line 252) | set panelManager(value) {

FILE: apps/messages/js/config.js
  function addLink (line 9) | function addLink(url) {
  function loadScript (line 17) | function loadScript(url, defer = false) {
  function loadSharedScript (line 27) | function loadSharedScript(url) {

FILE: apps/peers/js/bootstrap.js
  function log (line 29) | function log(msg) {
  function shareBlob (line 68) | async function shareBlob(blob, name = "") {
  function sendToPeer (line 96) | async function sendToPeer(dweb, sessionId, toShare) {
  function onShare (line 125) | async function onShare(data) {

FILE: apps/peers/js/config.js
  function addStylesheet (line 9) | function addStylesheet(url) {
  function loadScript (line 17) | function loadScript(url, defer = false) {
  function loadSharedScript (line 27) | function loadSharedScript(url) {

FILE: apps/peers/sw.js
  constant HAS_RETURN_VALUE_ACTIVITIES (line 1) | const HAS_RETURN_VALUE_ACTIVITIES = ["share"];
  constant ACTIVITIES_DISPOSITION (line 2) | const ACTIVITIES_DISPOSITION = { share: "inline" };

FILE: apps/remotecontrol/js/bootstrap.js
  function log (line 19) | function log(msg) {
  class CodeInput (line 24) | class CodeInput {
    method constructor (line 25) | constructor() {
    method init (line 29) | init() {
    method updateInputStatus (line 64) | updateInputStatus() {
    method onKey (line 72) | onKey(target) {
    method onDelete (line 80) | onDelete() {
    method onEnter (line 89) | onEnter() {
    method getCode (line 93) | async getCode() {
  class Webrtc (line 119) | class Webrtc extends EventTarget {
    method constructor (line 120) | constructor() {
    method ensurePeerConnection (line 126) | ensurePeerConnection() {
    method setupChannel (line 159) | setupChannel(channel) {
    method handleEvent (line 170) | async handleEvent(event) {
    method offer (line 183) | async offer() {
    method answer (line 195) | async answer() {
    method setRemoteDescription (line 203) | setRemoteDescription(answer) {
  class RemoteControl (line 209) | class RemoteControl {
    method constructor (line 210) | constructor() {
    method ensureDweb (line 217) | async ensureDweb() {
    method setupWebrtcEvents (line 226) | setupWebrtcEvents() {
    method init (line 246) | async init(sessionId) {
    method handleMessage (line 276) | async handleMessage(data) {
    method handleEvent (line 280) | async handleEvent(event) {
  function onRemoteControl (line 351) | async function onRemoteControl(data) {

FILE: apps/remotecontrol/js/config.js
  function addStylesheet (line 9) | function addStylesheet(url) {
  function loadScript (line 17) | function loadScript(url, defer = false) {
  function loadSharedScript (line 27) | function loadSharedScript(url) {

FILE: apps/settings/js/apps_panel.js
  class AppItem (line 3) | class AppItem extends HTMLElement {
    method constructor (line 4) | constructor(app) {
    method connectedCallback (line 14) | connectedCallback() {
    method disconnectedCallback (line 42) | disconnectedCallback() {
  class AppsPanel (line 51) | class AppsPanel {
    method constructor (line 52) | constructor() {
    method addSwitchBinding (line 61) | async addSwitchBinding(id, name, handler) {
    method log (line 70) | log(msg) {
    method error (line 74) | error(msg) {
    method maybeRemove (line 80) | maybeRemove(container, manifestUrl) {
    method addApp (line 96) | async addApp(app, updateVisibility) {
    method handleEvent (line 112) | handleEvent(event) {
    method createAppList (line 127) | async createAppList() {
    method init (line 153) | async init() {

FILE: apps/settings/js/config.js
  function addStylesheet (line 9) | function addStylesheet(url) {
  function loadScript (line 17) | function loadScript(url, { defer, module } = { defer: false, module: fal...
  function loadSharedScript (line 30) | function loadSharedScript(url, params) {

FILE: apps/settings/js/datetime_panel.js
  class DatetimePanel (line 3) | class DatetimePanel {
    method constructor (line 4) | constructor() {
    method log (line 11) | log(msg) {
    method error (line 15) | error(msg) {
    method handleEvent (line 19) | handleEvent(event) {
    method updateClock (line 25) | updateClock(event) {
    method updateTimezone (line 35) | updateTimezone(event) {
    method selectTimezone (line 49) | selectTimezone(event) {
    method ensureTimeService (line 59) | async ensureTimeService() {
    method getSuccessClockToast (line 66) | getSuccessClockToast() {
    method getErrorClockToast (line 75) | getErrorClockToast() {
    method getSuccessTimezoneToast (line 82) | getSuccessTimezoneToast() {
    method getErrorTimezoneToast (line 91) | getErrorTimezoneToast() {
    method setTimeZone (line 100) | async setTimeZone() {
    method loadTimezones (line 122) | async loadTimezones() {
    method init (line 165) | async init() {

FILE: apps/settings/js/display_panel.js
  class DisplayPanel (line 3) | class DisplayPanel {
    method constructor (line 4) | constructor() {
    method log (line 12) | log(msg) {
    method error (line 16) | error(msg) {
    method handleEvent (line 20) | async handleEvent(event) {
    method updateChoice (line 62) | async updateChoice(item) {
    method init (line 73) | async init() {

FILE: apps/settings/js/dweb_panel.js
  class DwebPanel (line 3) | class DwebPanel {
    method constructor (line 4) | constructor() {
    method log (line 11) | log(msg) {
    method error (line 15) | error(msg) {
    method handleEvent (line 19) | handleEvent(event) {
    method manageEstuary (line 25) | async manageEstuary() {
    method addSwitchBinding (line 42) | async addSwitchBinding(id, name, handler) {
    method p2pDiscovery (line 52) | p2pDiscovery(event) {
    method initDid (line 60) | async initDid() {
    method init (line 82) | async init() {

FILE: apps/settings/js/identity_panel.js
  class IdentityPanel (line 3) | class IdentityPanel {
    method constructor (line 4) | constructor() {
    method log (line 12) | log(msg) {
    method error (line 16) | error(msg) {
    method handleEvent (line 20) | handleEvent(event) {
    method updateChoice (line 30) | async updateChoice(item) {
    method addDid (line 34) | async addDid() {
    method updateList (line 52) | async updateList() {
    method init (line 92) | async init() {

FILE: apps/settings/js/language_panel.js
  class LanguagePanel (line 3) | class LanguagePanel {
    method constructor (line 4) | constructor() {
    method log (line 12) | log(msg) {
    method error (line 16) | error(msg) {
    method handleEvent (line 20) | handleEvent(event) {
    method updateChoice (line 30) | async updateChoice(item) {
    method init (line 40) | async init() {

FILE: apps/settings/js/lockscreen_panel.js
  class LockscreenPanel (line 3) | class LockscreenPanel {
    method constructor (line 4) | constructor() {
    method log (line 11) | log(msg) {
    method error (line 15) | error(msg) {
    method handleEvent (line 19) | handleEvent(event) {
    method init (line 25) | async init() {
  class StateManager (line 37) | class StateManager {
    method init (line 38) | async init() {
    method getSetting (line 120) | async getSetting(name, defaultValue) {
    method updateUI (line 129) | async updateUI() {

FILE: apps/settings/js/main.js
  function elem (line 1) | function elem(id) {
  class PanelWrapper (line 11) | class PanelWrapper {
    method constructor (line 12) | constructor(node, graph) {
    method handleEvent (line 22) | async handleEvent(event) {

FILE: apps/settings/js/privacy_panel.js
  class PrivacyPanel (line 3) | class PrivacyPanel {
    method constructor (line 4) | constructor() {
    method log (line 11) | log(msg) {
    method error (line 15) | error(msg) {
    method handleEvent (line 19) | handleEvent(event) {
    method updateGeoloc (line 25) | updateGeoloc(event) {
    method updateTor (line 31) | updateTor(event) {
    method updateTp (line 42) | updateTp(event) {
    method updateGpc (line 48) | updateGpc(event) {
    method addSwitchBinding (line 54) | async addSwitchBinding(id, name, handler) {
    method init (line 63) | async init() {

FILE: apps/settings/js/search_panel.js
  class SearchPanel (line 3) | class SearchPanel {
    method constructor (line 4) | constructor() {
    method log (line 12) | log(msg) {
    method error (line 16) | error(msg) {
    method handleEvent (line 20) | handleEvent(event) {
    method updateChoice (line 30) | async updateChoice(item) {
    method init (line 43) | async init() {

FILE: apps/settings/js/systeminfo_panel.js
  class SystemInfoPanel (line 3) | class SystemInfoPanel {
    method constructor (line 4) | constructor() {
    method log (line 11) | log(msg) {
    method error (line 15) | error(msg) {
    method handleEvent (line 19) | handleEvent(event) {
    method displayBuildInfo (line 25) | async displayBuildInfo() {
    method displayTelephony (line 65) | async displayTelephony() {
    method manageDeviceName (line 94) | async manageDeviceName() {
    method init (line 109) | async init() {

FILE: apps/settings/js/telephony_panel.js
  class TelephonyPanel (line 3) | class TelephonyPanel {
    method constructor (line 4) | constructor() {
    method log (line 11) | log(msg) {
    method error (line 15) | error(msg) {
    method handleEvent (line 19) | handleEvent(event) {
    method addSwitchBinding (line 25) | async addSwitchBinding(id, name, handler) {
    method ensureApnData (line 34) | async ensureApnData() {
    method ensureSettings (line 41) | async ensureSettings() {
    method updateMobileData (line 48) | async updateMobileData(event) {
    method loadApnConfig (line 88) | async loadApnConfig() {
    method buildRow (line 100) | buildRow(name, value) {
    method appendTo (line 111) | appendTo(table, name, value) {
    method updateDetails (line 115) | updateDetails() {
    method searchNetworks (line 171) | searchNetworks() {
    method logDOMRequesterror (line 199) | logDOMRequesterror(request, msg) {
    method init (line 218) | async init() {

FILE: apps/settings/js/webext_panel.js
  class WebExtension (line 3) | class WebExtension extends HTMLElement {
    method constructor (line 4) | constructor(addon) {
    method connectedCallback (line 9) | connectedCallback() {
    method handleEvent (line 45) | handleEvent() {
    method updateUI (line 51) | updateUI() {
  class WebextPanel (line 59) | class WebextPanel {
    method constructor (line 60) | constructor() {
    method log (line 71) | log(msg) {
    method error (line 75) | error(msg) {
    method handleEvent (line 79) | handleEvent(event) {
    method createExtList (line 91) | async createExtList(clearFirst = false) {
    method init (line 119) | async init() {

FILE: apps/settings/js/wifi_panel.js
  function buildNetworkItem (line 9) | function buildNetworkItem(network) {
  class PasswordDialog (line 32) | class PasswordDialog {
    method constructor (line 33) | constructor(network) {
    method result (line 73) | result() {
    method updateValidity (line 80) | updateValidity() {
    method handleEvent (line 84) | handleEvent(event) {
    method close (line 93) | close(target) {
    method show (line 103) | show() {
  class WifiPanel (line 108) | class WifiPanel {
    method constructor (line 109) | constructor() {
    method log (line 118) | log(msg) {
    method error (line 122) | error(msg) {
    method handleEvent (line 126) | handleEvent(event) {
    method clearNetworkList (line 132) | clearNetworkList() {
    method forceScan (line 147) | async forceScan() {
    method updateNetworkList (line 160) | updateNetworkList(networks) {
    method associateNetwork (line 204) | async associateNetwork(network) {
    method init (line 233) | async init() {

FILE: apps/shared/components/lit.js
  class T (line 7) | class T{constructor({strings:t,_$litType$:e},s){let i;this.parts=[];let ...
    method constructor (line 7) | constructor({strings:t,_$litType$:e},s){let i;this.parts=[];let o=0,h=...
    method createElement (line 7) | static createElement(t,e){const s=a.createElement("template");return s...
  function N (line 7) | function N(t,e,s=t,i){var n,o,r,l;if(e===E)return e;let h=void 0!==i?nul...
  class R (line 7) | class R{constructor(t,e){this.l=[],this.N=void 0,this.D=t,this.M=e}u(t){...
    method constructor (line 7) | constructor(t,e){this.l=[],this.N=void 0,this.D=t,this.M=e}
    method u (line 7) | u(t){var e;const{el:{content:s},parts:i}=this.D,n=(null!==(e=null==t?v...
    method v (line 7) | v(t){let e=0;for(const s of this.l)void 0!==s&&(void 0!==s.strings?(s....
  class O (line 7) | class O{constructor(t,e,s,i){this.type=2,this.N=void 0,this.A=t,this.B=e...
    method constructor (line 7) | constructor(t,e,s,i){this.type=2,this.N=void 0,this.A=t,this.B=e,this....
    method setConnected (line 7) | setConnected(t){var e;null===(e=this.P)||void 0===e||e.call(this,t)}
    method parentNode (line 7) | get parentNode(){return this.A.parentNode}
    method startNode (line 7) | get startNode(){return this.A}
    method endNode (line 7) | get endNode(){return this.B}
    method I (line 7) | I(t,e=this){t=N(this,t,e),c(t)?t===U||null==t||""===t?(this.H!==U&&thi...
    method k (line 7) | k(t,e=this.B){return this.A.parentNode.insertBefore(t,e)}
    method $ (line 7) | $(t){this.H!==t&&(this.R(),this.H=this.k(t))}
    method m (line 7) | m(t){const e=this.A.nextSibling;null!==e&&3===e.nodeType&&(null===this...
    method _ (line 7) | _(t){var e;const{values:s,_$litType$:i}=t,n="number"==typeof i?this.C(...
    method C (line 7) | C(t){let e=P.get(t.strings);return void 0===e&&P.set(t.strings,e=new T...
    method g (line 7) | g(t){u(this.H)||(this.H=[],this.R());const e=this.H;let s,i=0;for(cons...
    method R (line 7) | R(t=this.A.nextSibling,e){var s;for(null===(s=this.P)||void 0===s||s.c...
  class k (line 7) | class k{constructor(t,e,s,i,n){this.type=1,this.H=U,this.N=void 0,this.V...
    method constructor (line 7) | constructor(t,e,s,i,n){this.type=1,this.H=U,this.N=void 0,this.V=void ...
    method tagName (line 7) | get tagName(){return this.element.tagName}
    method I (line 7) | I(t,e=this,s,i){const n=this.strings;let o=!1;if(void 0===n)t=N(this,t...
    method W (line 7) | W(t){t===U?this.element.removeAttribute(this.name):this.element.setAtt...
  class L (line 7) | class L extends k{constructor(){super(...arguments),this.type=3}W(t){thi...
    method constructor (line 7) | constructor(){super(...arguments),this.type=3}
    method W (line 7) | W(t){this.element[this.name]=t===U?void 0:t}
  class M (line 7) | class M extends k{constructor(){super(...arguments),this.type=4}W(t){t&&...
    method constructor (line 7) | constructor(){super(...arguments),this.type=4}
    method W (line 7) | W(t){t&&t!==U?this.element.setAttribute(this.name,""):this.element.rem...
  class _ (line 7) | class _ extends k{constructor(){super(...arguments),this.type=5}I(t,e=th...
    method constructor (line 7) | constructor(){super(...arguments),this.type=5}
    method I (line 7) | I(t,e=this){var s;if((t=null!==(s=N(this,t,e,0))&&void 0!==s?s:U)===E)...
    method handleEvent (line 7) | handleEvent(t){var e,s;"function"==typeof this.H?this.H.call(null!==(s...
  class B (line 7) | class B{constructor(t,e,s){this.element=t,this.type=6,this.N=void 0,this...
    method constructor (line 7) | constructor(t,e,s){this.element=t,this.type=6,this.N=void 0,this.V=voi...
    method I (line 7) | I(t){N(this,t)}
  class V (line 7) | class V{constructor(t,e){if(e!==j)throw Error("CSSResult is not construc...
    method constructor (line 7) | constructor(t,e){if(e!==j)throw Error("CSSResult is not constructable....
    method styleSheet (line 7) | get styleSheet(){return I&&void 0===this.t&&(this.t=new CSSStyleSheet,...
    method toString (line 7) | toString(){return this.cssText}
  method toAttribute (line 7) | toAttribute(t,e){switch(e){case Boolean:t=t?"":null;break;case Object:ca...
  method fromAttribute (line 7) | fromAttribute(t,e){let s=t;switch(e){case Boolean:s=null!==t;break;case ...
  class st (line 7) | class st extends HTMLElement{constructor(){super(),this.Πi=new Map,this....
    method constructor (line 7) | constructor(){super(),this.Πi=new Map,this.Πo=void 0,this.Πl=void 0,th...
    method addInitializer (line 7) | static addInitializer(t){var e;null!==(e=this.v)&&void 0!==e||(this.v=...
    method observedAttributes (line 7) | static get observedAttributes(){this.finalize();const t=[];return this...
    method createProperty (line 7) | static createProperty(t,e=et){if(e.state&&(e.attribute=!1),this.finali...
    method getPropertyDescriptor (line 7) | static getPropertyDescriptor(t,e,s){return{get(){return this[e]},set(i...
    method getPropertyOptions (line 7) | static getPropertyOptions(t){return this.elementProperties.get(t)||et}
    method finalize (line 7) | static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.fi...
    method finalizeStyles (line 7) | static finalizeStyles(t){const e=[];if(Array.isArray(t)){const s=new S...
    method "Πp" (line 7) | static"Πp"(t,e){const s=e.attribute;return!1===s?void 0:"string"==type...
    method u (line 7) | u(){var t;this.Πg=new Promise((t=>this.enableUpdating=t)),this.L=new M...
    method addController (line 7) | addController(t){var e,s;(null!==(e=this.ΠU)&&void 0!==e?e:this.ΠU=[])...
    method removeController (line 7) | removeController(t){var e;null===(e=this.ΠU)||void 0===e||e.splice(thi...
    method "Π_" (line 7) | "Π_"(){this.constructor.elementProperties.forEach(((t,e)=>{this.hasOwn...
    method createRenderRoot (line 7) | createRenderRoot(){var t;const e=null!==(t=this.shadowRoot)&&void 0!==...
    method connectedCallback (line 7) | connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=t...
    method enableUpdating (line 7) | enableUpdating(t){}
    method disconnectedCallback (line 7) | disconnectedCallback(){var t;null===(t=this.ΠU)||void 0===t||t.forEach...
    method attributeChangedCallback (line 7) | attributeChangedCallback(t,e,s){this.K(t,s)}
    method "Πj" (line 7) | "Πj"(t,e,s=et){var i,n;const o=this.constructor.Πp(t,s);if(void 0!==o&...
    method K (line 7) | K(t,e){var s,i,n;const o=this.constructor,r=o.Πm.get(t);if(void 0!==r&...
    method requestUpdate (line 7) | requestUpdate(t,e,s){let i=!0;void 0!==t&&(((s=s||this.constructor.get...
    method "Πq" (line 7) | async"Πq"(){this.isUpdatePending=!0;try{for(await this.Πg;this.Πo;)awa...
    method performUpdate (line 7) | performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,...
    method willUpdate (line 7) | willUpdate(t){}
    method E (line 7) | E(t){var e;null===(e=this.ΠU)||void 0===e||e.forEach((t=>{var e;return...
    method "Π$" (line 7) | "Π$"(){this.L=new Map,this.isUpdatePending=!1}
    method updateComplete (line 7) | get updateComplete(){return this.getUpdateComplete()}
    method getUpdateComplete (line 7) | getUpdateComplete(){return this.Πg}
    method shouldUpdate (line 7) | shouldUpdate(t){return!0}
    method update (line 7) | update(t){void 0!==this.Πk&&(this.Πk.forEach(((t,e)=>this.Πj(e,this[e]...
    method updated (line 7) | updated(t){}
    method firstUpdated (line 7) | firstUpdated(t){}
  class dt (line 7) | class dt extends st{constructor(){super(...arguments),this.renderOptions...
    method constructor (line 7) | constructor(){super(...arguments),this.renderOptions={host:this},this....
    method createRenderRoot (line 7) | createRenderRoot(){var t,e;const s=super.createRenderRoot();return nul...
    method update (line 7) | update(t){const e=this.render();super.update(t),this.Φt=$(e,this.rende...
    method connectedCallback (line 7) | connectedCallback(){var t;super.connectedCallback(),null===(t=this.Φt)...
    method disconnectedCallback (line 7) | disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=th...
    method render (line 7) | render(){return E}

FILE: apps/shared/components/lucide_icon.js
  class LucideIcon (line 5) | class LucideIcon extends LitElement {
    method constructor (line 6) | constructor() {
    method properties (line 10) | static get properties() {
    method styles (line 16) | static get styles() {
    method render (line 26) | render() {

FILE: apps/shared/js/activity_manager.js
  class ActivityManager (line 6) | class ActivityManager {
    method constructor (line 7) | constructor(handlers) {
    method handleEvent (line 31) | handleEvent(event) {

FILE: apps/shared/js/activity_sw.js
  function log (line 1) | function log(msg) {
  function error (line 5) | function error(msg) {
  function getClient (line 39) | async function getClient(activityName) {
  function handleActivity (line 64) | async function handleActivity(event, handler) {
  method addHandler (line 113) | addHandler(handler) {
  method removeHandler (line 120) | removeHandler(id) {
  method getHandler (line 125) | getHandler(id) {
  method size (line 129) | get size() {

FILE: apps/shared/js/api_daemon.js
  function TimedPromise (line 5) | function TimedPromise(promise, msg) {
  class ApiDaemon (line 27) | class ApiDaemon {
    method constructor (line 28) | constructor(config, global) {
    method setDebug (line 105) | setDebug(val) {
    method debug (line 109) | debug(msg) {
    method onsessionconnected (line 115) | onsessionconnected() {
    method onsessiondisconnected (line 120) | onsessiondisconnected() {
    method registerService (line 124) | registerService(urlName, serviceName) {
    method _getService (line 143) | _getService(serviceName) {
    method getSettings (line 184) | getSettings() {
    method getPowerManager (line 188) | getPowerManager() {
    method getProcManager (line 192) | getProcManager() {
    method getAppsManager (line 196) | getAppsManager() {
    method getContactsManager (line 200) | getContactsManager() {
    method getContentManager (line 204) | getContentManager() {
    method getTimeService (line 208) | getTimeService() {
    method getDwebService (line 212) | getDwebService() {
    method getEvmService (line 216) | getEvmService() {
    method getLibraryFor (line 220) | getLibraryFor(serviceName) {
    method getSession (line 225) | getSession() {

FILE: apps/shared/js/apps_manager.js
  class AppsManager (line 3) | class AppsManager extends EventTarget {
    method constructor (line 4) | constructor() {
    method log (line 15) | log(msg) {
    method error (line 19) | error(msg) {
    method addApp (line 23) | async addApp(app) {
    method removeApp (line 44) | removeApp(manifestUrl) {
    method getAll (line 58) | async getAll() {
    method uninstall (line 63) | async uninstall(manifestUrl) {
    method getSummary (line 77) | async getSummary(app) {
    method init (line 124) | async init() {

FILE: apps/shared/js/content_manager.js
  constant PLACES_MIME_TYPE (line 3) | const PLACES_MIME_TYPE = "application/x-places+json";
  constant MEDIA_MIME_TYPE (line 4) | const MEDIA_MIME_TYPE = "application/x-media+json";
  constant CONTACTS_MIME_TYPE (line 5) | const CONTACTS_MIME_TYPE = "application/x-contact+json";
  class ContentManager (line 7) | class ContentManager extends EventTarget {
    method constructor (line 8) | constructor() {
    method as_superuser (line 20) | async as_superuser() {
    method getOpenSearchManager (line 27) | getOpenSearchManager(callback) {
    method getContactsManager (line 32) | getContactsManager(callback) {
    method getContainerManager (line 36) | getContainerManager(name, variants) {
    method log (line 40) | log(msg) {
    method error (line 44) | error(msg) {
    method lib (line 48) | async lib() {
    method getService (line 57) | async getService() {
    method ensureHttpKey (line 62) | async ensureHttpKey(svc) {
    method formatSize (line 73) | formatSize(size) {
    method iconFor (line 99) | iconFor(isFolder, mimeType) {
    method iconForResource (line 135) | async iconForResource(meta) {
    method hasTopLevelContainer (line 144) | async hasTopLevelContainer(containerName) {
    method ensureTopLevelContainer (line 163) | async ensureTopLevelContainer(containerName) {
    method childByName (line 233) | async childByName(parent, name, variant = "default") {
    method jsonChildByName (line 248) | async jsonChildByName(parent, name, variant = "default") {
    method hasChildByName (line 262) | async hasChildByName(parent, name) {
    method create (line 273) | async create(parent, name, blob, tags = []) {
    method resourceFromId (line 292) | async resourceFromId(id) {
    method isValidUrl (line 299) | isValidUrl(url) {
    method cleanupUrl (line 315) | cleanupUrl(url) {
    method createOrUpdatePlacesEntry (line 326) | async createOrUpdatePlacesEntry(url, title, icon) {
    method visitUrl (line 340) | async visitUrl(url, container, highPriority = false) {
    method getPlace (line 364) | async getPlace(url) {
    method visitPlace (line 370) | async visitPlace(url, highPriority = false) {
    method visitMedia (line 374) | async visitMedia(url, highPriority = false) {
    method drainPlacesQueryFor (line 378) | async drainPlacesQueryFor(url) {
    method createOrUpdateMediaEntry (line 412) | async createOrUpdateMediaEntry(url, icon, meta) {
    method processCursor (line 452) | async processCursor(cursor, withContent, variantNames, callback) {
    method search (line 543) | async search(query, maxCount, tag, withContent, variantNames, callback) {
    method topByFrecency (line 551) | async topByFrecency(maxCount, callback) {
    method lastModified (line 561) | async lastModified(maxCount, callback) {
    method searchPlaces (line 570) | async searchPlaces(query, maxCount, callback) {
    method searchMedia (line 574) | async searchMedia(query, maxCount, callback) {
    method searchContacts (line 585) | async searchContacts(query, maxCount, callback) {
  class ContentResource (line 591) | class ContentResource {
    method constructor (line 592) | constructor(service, http_key, meta, blob, variant) {
    method log (line 603) | log(msg) {
    method error (line 607) | error(msg) {
    method variant (line 611) | variant(name = "default") {
    method meta (line 615) | get meta() {
    method id (line 619) | get id() {
    method update (line 623) | async update(blob, variant = "default") {
    method updateVariantFromUrl (line 628) | async updateVariantFromUrl(url, variant) {
    method delete (line 651) | async delete() {
    method observe (line 657) | async observe(callback) {
    method variantUrl (line 665) | variantUrl(variant = "default") {
    method addTag (line 669) | async addTag(tag) {
    method removeTag (line 673) | async removeTag(tag) {
    method debug (line 677) | debug() {
  class OpenSearchManager (line 689) | class OpenSearchManager extends ContentManager {
    method constructor (line 690) | constructor(updatedCallback = null) {
    method log (line 699) | log(msg) {
    method error (line 703) | error(msg) {
    method ready (line 707) | async ready() {
    method onchange (line 721) | async onchange(change) {
    method init (line 731) | async init() {
    method hasEngine (line 739) | hasEngine(url) {
    method hasEngineName (line 743) | async hasEngineName(current) {
    method update (line 761) | async update() {
    method addFromJson (line 802) | async addFromJson(json, url, enabled = false, favicon = null) {
    method addFromUrl (line 863) | async addFromUrl(url, enabled = false, substituteUrl = null, favicon =...
    method xmlToJson (line 890) | xmlToJson(xml) {
    method loadDefaults (line 928) | async loadDefaults() {
  class Contact (line 956) | class Contact {
    method constructor (line 957) | constructor(init = null, tags = []) {
    method fromJson (line 972) | static fromJson(json, id, tags = []) {
    method asDefaultVariant (line 989) | asDefaultVariant() {
  class ContactsManager (line 1001) | class ContactsManager extends ContentManager {
    method constructor (line 1002) | constructor(updatedCallback = null) {
    method newContact (line 1011) | newContact(init = null) {
    method log (line 1015) | log(msg) {
    method error (line 1019) | error(msg) {
    method ready (line 1023) | async ready() {
    method onchange (line 1032) | async onchange(change) {
    method deleteContact (line 1043) | async deleteContact(contact) {
    method init (line 1047) | async init() {
    method contactWithDid (line 1054) | async contactWithDid(did) {
    method updateList (line 1066) | async updateList() {
    method add (line 1107) | async add(contact) {
    method update (line 1141) | async update(id, contact) {
  class ContainerManager (line 1165) | class ContainerManager extends ContentManager {
    method constructor (line 1166) | constructor(containerName, variants = []) {
    method log (line 1173) | log(msg) {
    method error (line 1177) | error(msg) {
    method ready (line 1181) | async ready() {
    method onchange (line 1190) | onchange(change) {
    method init (line 1202) | async init() {
    method updateList (line 1210) | async updateList() {

FILE: apps/shared/js/dep_graph.js
  function scriptLoader (line 5) | function scriptLoader(url) {
  function sharedScriptLoader (line 17) | function sharedScriptLoader(url) {
  function styleLoader (line 21) | function styleLoader(url) {
  function sharedStyleLoader (line 32) | function sharedStyleLoader(url) {
  function linkPreLoader (line 36) | function linkPreLoader(url, type_, as) {
  function sharedLinkPreLoader (line 48) | function sharedLinkPreLoader(url, type_, as) {
  function moduleLoader (line 57) | function moduleLoader(url, props = null) {
  function sharedModuleLoader (line 76) | function sharedModuleLoader(url, props) {
  function windowModuleLoader (line 84) | function windowModuleLoader(url, winProp, moduleProp) {
  function sharedWindowModuleLoader (line 104) | function sharedWindowModuleLoader(url, winProp, moduleProp) {
  class ParallelGraphLoader (line 125) | class ParallelGraphLoader {
    method constructor (line 126) | constructor(targets, custom, config = {}) {
    method applyConfig (line 161) | applyConfig(value) {
    method buildNodeRunner (line 172) | buildNodeRunner(node) {
    method waitForDeps (line 229) | async waitForDeps(name = "root") {
    method getRunnerFor (line 241) | getRunnerFor(dep) {
  function getSharedDeps (line 369) | function getSharedDeps(names) {
  function addShoelaceDeps (line 427) | function addShoelaceDeps(currentDeps) {
  function addSharedDeps (line 470) | function addSharedDeps(currentDeps) {

FILE: apps/shared/js/fluent_web.js
  function getLikelySubtagsMin (line 1) | function getLikelySubtagsMin(e){if(likelySubtagsMin.hasOwnProperty(e))re...
  class Locale (line 1) | class Locale{constructor(e){const t=localeRe.exec(e.replace(/_/g,"-"));i...
    method constructor (line 1) | constructor(e){const t=localeRe.exec(e.replace(/_/g,"-"));if(!t)return...
    method isEqual (line 1) | isEqual(e){return localeParts.every(t=>this[t]===e[t])}
    method matches (line 1) | matches(e,t=!1,n=!1){return localeParts.every(a=>t&&void 0===this[a]||...
    method toString (line 1) | toString(){return localeParts.map(e=>this[e]).filter(e=>e!==void 0).jo...
    method clearVariants (line 1) | clearVariants(){this.variant=void 0}
    method clearRegion (line 1) | clearRegion(){this.region=void 0}
    method addLikelySubtags (line 1) | addLikelySubtags(){const e=getLikelySubtagsMin(this.toString().toLower...
  function filterMatches (line 1) | function filterMatches(e,t,n){const a=new Set,r=new Map;for(let a of t){...
  function GetOption (line 1) | function GetOption(e,t,n,a,r){let l=e[t];if(void 0!==l){if("boolean"===n...
  function negotiateLanguages (line 1) | function negotiateLanguages(e,t,n={}){const a=GetOption(n,"defaultLocale...
  class FluentType (line 1) | class FluentType{constructor(e){this.value=e}valueOf(){return this.value...
    method constructor (line 1) | constructor(e){this.value=e}
    method valueOf (line 1) | valueOf(){return this.value}
    method toString (line 1) | toString(){throw new Error("Subclasses of FluentType must implement to...
  class FluentNone (line 1) | class FluentNone extends FluentType{constructor(e="???"){super(e)}toStri...
    method constructor (line 1) | constructor(e="???"){super(e)}
    method toString (line 1) | toString(){return`{${this.value}}`}
  class FluentNumber (line 1) | class FluentNumber extends FluentType{constructor(e,t){super(e),this.opt...
    method constructor (line 1) | constructor(e,t){super(e),this.opts=t}
    method toString (line 1) | toString(e){try{const t=e.memoizeIntlObject(Intl.NumberFormat,this.opt...
  class FluentDateTime (line 1) | class FluentDateTime extends FluentType{constructor(e,t){super(e),this.o...
    method constructor (line 1) | constructor(e,t){super(e),this.opts=t}
    method toString (line 1) | toString(e){try{const t=e.memoizeIntlObject(Intl.DateTimeFormat,this.o...
  function merge (line 1) | function merge(e,t){return Object.assign({},e,values(t))}
  function values (line 1) | function values(e){const t={};for(const[n,a]of Object.entries(e))t[n]=a....
  function NUMBER (line 1) | function NUMBER([e],t){if(e instanceof FluentNone)return new FluentNone(...
  function DATETIME (line 1) | function DATETIME([e],t){if(e instanceof FluentNone)return new FluentNon...
  function match (line 1) | function match(e,t,n){if(n===t)return!0;if(n instanceof FluentNumber&&t ...
  function getDefault (line 1) | function getDefault(e,t,n){return t[n]?resolvePattern(e,t[n].value):(e.r...
  function getArguments (line 1) | function getArguments(e,t){const n=[],a=Object.create(null);for(const r ...
  function resolveExpression (line 1) | function resolveExpression(e,t){switch(t.type){case"str":return t.value;...
  function VariableReference (line 1) | function VariableReference(e,{name:t}){let n;if(e.params){if(Object.prot...
  function MessageReference (line 1) | function MessageReference(e,{name:t,attr:n}){const a=e.bundle._messages....
  function TermReference (line 1) | function TermReference(e,{name:t,attr:n,args:a}){const r=`-${t}`,l=e.bun...
  function FunctionReference (line 1) | function FunctionReference(e,{name:t,args:n}){const a=e.bundle._function...
  function SelectExpression (line 1) | function SelectExpression(e,{selector:t,variants:n,star:a}){let r=resolv...
  function resolveComplexPattern (line 1) | function resolveComplexPattern(e,t){if(e.dirty.has(t))return e.reportErr...
  function resolvePattern (line 1) | function resolvePattern(e,t){return"string"==typeof t?e.bundle._transfor...
  class Scope (line 1) | class Scope{constructor(e,t,n){this.bundle=e,this.errors=t,this.args=n,t...
    method constructor (line 1) | constructor(e,t,n){this.bundle=e,this.errors=t,this.args=n,this.dirty=...
    method reportError (line 1) | reportError(e){if(!this.errors)throw e;this.errors.push(e)}
    method memoizeIntlObject (line 1) | memoizeIntlObject(e,t){let n=this.bundle._intls.get(e);n||(n={},this.b...
  class FluentBundle (line 1) | class FluentBundle{constructor(e,{functions:t={},useIsolating:n=!0,trans...
    method constructor (line 1) | constructor(e,{functions:t={},useIsolating:n=!0,transform:a=e=>e}={}){...
    method hasMessage (line 1) | hasMessage(e){return this._messages.has(e)}
    method getMessage (line 1) | getMessage(e){return this._messages.get(e)}
    method addResource (line 1) | addResource(e,{allowOverrides:t=!1}={}){const n=[];for(let a,r=0;r<e.b...
    method formatPattern (line 1) | formatPattern(e,t,n){if("string"==typeof e)return this._transform(e);l...
  class FluentError (line 1) | class FluentError extends Error{}
  class FluentResource (line 1) | class FluentResource{constructor(e){this.body=this._parse(e)}_parse(e){f...
    method constructor (line 1) | constructor(e){this.body=this._parse(e)}
    method _parse (line 1) | _parse(e){function t(t){return t.lastIndex=I,t.test(e)}function n(t,n)...
  function translateElement (line 1) | function translateElement(e,t){const{value:n}=t;if("string"==typeof n)if...
  function overlayChildNodes (line 1) | function overlayChildNodes(e,t){for(const n of e.childNodes)if(n.nodeTyp...
  function hasAttribute (line 1) | function hasAttribute(e,t){if(!e)return!1;for(let n of e)if(n.name===t)r...
  function overlayAttributes (line 1) | function overlayAttributes(e,t){const n=t.hasAttribute("data-l10n-attrs"...
  function getNodeForNamedElement (line 1) | function getNodeForNamedElement(e,t){const n=t.getAttribute("data-l10n-n...
  function createSanitizedElement (line 1) | function createSanitizedElement(e){const t=e.ownerDocument.createElement...
  function createTextNodeFromTextContent (line 1) | function createTextNodeFromTextContent(e){return e.ownerDocument.createT...
  function isElementAllowed (line 1) | function isElementAllowed(e){const t=TEXT_LEVEL_ELEMENTS[e.namespaceURI]...
  function isAttrNameLocalizable (line 1) | function isAttrNameLocalizable(e,t,n=null){if(n&&n.includes(e))return!0;...
  function shallowPopulateUsing (line 1) | function shallowPopulateUsing(e,t){return t.textContent=e.textContent,ov...
  class CachedIterable (line 1) | class CachedIterable extends Array{static from(e){return e instanceof th...
    method from (line 1) | static from(e){return e instanceof this?e:new this(e)}
  class CachedAsyncIterable (line 1) | class CachedAsyncIterable extends CachedIterable{constructor(e){if(super...
    method constructor (line 1) | constructor(e){if(super(),Symbol.asyncIterator in Object(e))this.itera...
    method touchNext (line 1) | async touchNext(e=1){for(let t=0;t++<e;){const e=this[this.length-1];i...
  method [Symbol.asyncIterator] (line 1) | [Symbol.asyncIterator](){const e=this;let t=0;return{async next(){return...
  class Localization (line 1) | class Localization{constructor(e=[],t){this.resourceIds=e,this.generateB...
    method constructor (line 1) | constructor(e=[],t){this.resourceIds=e,this.generateBundles=t,this.onC...
    method addResourceIds (line 1) | addResourceIds(e,t=!1){return this.resourceIds.push(...e),this.onChang...
    method removeResourceIds (line 1) | removeResourceIds(e){return this.resourceIds=this.resourceIds.filter(t...
    method formatWithFallback (line 1) | async formatWithFallback(e,t){const n=[];let a=!1;for await(const r of...
    method formatMessages (line 3) | formatMessages(e){return this.formatWithFallback(e,messageFromBundle)}
    method formatValues (line 3) | formatValues(e){return this.formatWithFallback(e,valueFromBundle)}
    method formatValue (line 3) | async formatValue(e,t){const[n]=await this.formatValues([{id:e,args:t}...
    method handleEvent (line 3) | handleEvent(){this.onChange()}
    method onChange (line 3) | onChange(e=!1){this.bundles=CachedAsyncIterable.from(this.generateBund...
  function valueFromBundle (line 3) | function valueFromBundle(e,t,n,a){return n.value?e.formatPattern(n.value...
  function messageFromBundle (line 3) | function messageFromBundle(e,t,n,a){const r={value:null,attributes:null}...
  function keysFromBundle (line 3) | function keysFromBundle(e,t,n,a){const r=[],l=new Set;return n.forEach((...
  class DOMLocalization (line 3) | class DOMLocalization extends Localization{constructor(e,t){super(e,t),t...
    method constructor (line 3) | constructor(e,t){super(e,t),this.roots=new Set,this.pendingrAF=null,th...
    method onChange (line 3) | onChange(e=!1){super.onChange(e),this.roots&&this.translateRoots()}
    method setAttributes (line 3) | setAttributes(e,t,n){return e.setAttribute(L10NID_ATTR_NAME,t),n?e.set...
    method getAttributes (line 3) | getAttributes(e){return{id:e.getAttribute(L10NID_ATTR_NAME),args:JSON....
    method connectRoot (line 3) | connectRoot(e){for(const t of this.roots)if(t===e||t.contains(e)||e.co...
    method disconnectRoot (line 4) | disconnectRoot(e){return(this.roots.delete(e),this.pauseObserving(),0=...
    method translateRoots (line 4) | translateRoots(){const e=Array.from(this.roots);return Promise.all(e.m...
    method pauseObserving (line 4) | pauseObserving(){this.mutationObserver&&(this.translateMutations(this....
    method resumeObserving (line 4) | resumeObserving(){if(this.mutationObserver)for(const e of this.roots)t...
    method translateMutations (line 4) | translateMutations(e){for(const t of e)switch(t.type){case"attributes"...
    method translateFragment (line 4) | translateFragment(e){return this.translateElements(this.getTranslatabl...
    method translateElements (line 4) | async translateElements(e){if(!e.length)return;const t=e.map(this.getK...
    method applyTranslations (line 4) | applyTranslations(e,t){this.pauseObserving();for(let n=0;n<e.length;n+...
    method getTranslatables (line 4) | getTranslatables(e){const t=Array.from(e.querySelectorAll(L10N_ELEMENT...
    method getKeysForElement (line 4) | getKeysForElement(e){return{id:e.getAttribute(L10NID_ATTR_NAME),args:J...
  function documentReady (line 4) | function documentReady(){const e=document.readyState;return"interactive"...
  function getMeta (line 4) | function getMeta(e){return{available:e.querySelector("meta[name=\"availa...
  function getResourceLinks (line 4) | function getResourceLinks(e){return Array.prototype.map.call(e.querySele...
  function fetchResource (line 4) | async function fetchResource(e,t){const n=t.replace("{locale}",e),a=awai...
  function createContext (line 4) | async function createContext(e,t){const n=new FluentBundle([e]),a=await ...

FILE: apps/shared/js/injected.js
  constant INJECTED_SCRIPTS (line 3) | const INJECTED_SCRIPTS = {
  function canInjectIn (line 7) | function canInjectIn(origin) {
  function injectedScriptLoader (line 12) | async function injectedScriptLoader(origin) {

FILE: apps/shared/js/injected_scripts/netflix_tv.js
  function getRect (line 95) | function getRect(elem) {
  function partition (line 115) | function partition(rects, targetRect, straightOverlapThreshold) {
  function generateDistanceFunction (line 182) | function generateDistanceFunction(targetRect) {
  function prioritize (line 235) | function prioritize(priorities) {
  function navigate (line 264) | function navigate(target, direction, candidates, config) {
  function generateId (line 448) | function generateId() {
  function parseSelector (line 459) | function parseSelector(selector) {
  function matchSelector (line 477) | function matchSelector(elem, selector) {
  function getCurrentFocusedElement (line 488) | function getCurrentFocusedElement() {
  function extend (line 495) | function extend(out) {
  function exclude (line 513) | function exclude(elemList, excludedElem) {
  function isNavigable (line 526) | function isNavigable(elem, sectionId, verifySectionSelector) {
  function getSectionId (line 559) | function getSectionId(elem) {
  function getSectionNavigableElements (line 570) | function getSectionNavigableElements(sectionId) {
  function getSectionDefaultElement (line 579) | function getSectionDefaultElement(sectionId) {
  function getSectionLastFocusedElement (line 591) | function getSectionLastFocusedElement(sectionId) {
  function fireEvent (line 599) | function fireEvent(elem, type, details, cancelable) {
  function focusElement (line 608) | function focusElement(elem, sectionId, direction) {
  function focusChanged (line 670) | function focusChanged(elem, sectionId) {
  function focusExtendedSelector (line 680) | function focusExtendedSelector(selector, direction) {
  function focusSection (line 700) | function focusSection(sectionId) {
  function fireNavigatefailed (line 745) | function fireNavigatefailed(elem, direction) {
  function gotoLeaveFor (line 756) | function gotoLeaveFor(sectionId, direction) {
  function focusNext (line 782) | function focusNext(direction, currentFocusedElement, currentSectionId) {
  function onKeyDown (line 880) | function onKeyDown(evt) {
  function onKeyUp (line 948) | function onKeyUp(evt) {
  function onFocus (line 968) | function onFocus(evt) {
  function onBlur (line 1000) | function onBlur(evt) {

FILE: apps/shared/js/ipfs.js
  class PasswordBasedSecret (line 3) | class PasswordBasedSecret {
    method constructor (line 4) | constructor(password) {
    method getKeyMaterial (line 16) | async getKeyMaterial() {
    method getSymKey (line 27) | async getSymKey() {
    method encrypt (line 44) | async encrypt(plaintext) {
    method decrypt (line 55) | async decrypt(ciphertext) {
  class IpfsPublisher (line 67) | class IpfsPublisher {
    method constructor (line 68) | constructor() {
    method log (line 72) | log(msg) {
    method publish (line 76) | publish(blob) {

FILE: apps/shared/js/panel_manager.js
  class PanelManager (line 5) | class PanelManager {
    method log (line 6) | log(msg) {
    method constructor (line 10) | constructor(panelFactory, selector) {
    method registerPanelLink (line 19) | registerPanelLink(node) {
    method handleEvent (line 30) | handleEvent(event) {
    method processLocation (line 54) | processLocation() {
    method maybeShowPanel (line 64) | maybeShowPanel() {
    method openPanel (line 76) | openPanel(data) {
    method showHome (line 84) | showHome() {

FILE: apps/shared/js/shoelace_setup.js
  function addTheme (line 20) | function addTheme() {
  function updateDocumentTheme (line 28) | async function updateDocumentTheme(isDarkMode) {
  function initShoelace (line 37) | async function initShoelace() {

FILE: apps/shared/js/spatial_navigation.js
  function getRect (line 90) | function getRect(elem) {
  function partition (line 110) | function partition(rects, targetRect, straightOverlapThreshold) {
  function generateDistanceFunction (line 177) | function generateDistanceFunction(targetRect) {
  function prioritize (line 230) | function prioritize(priorities) {
  function navigate (line 259) | function navigate(target, direction, candidates, config) {
  function generateId (line 443) | function generateId() {
  function parseSelector (line 454) | function parseSelector(selector) {
  function matchSelector (line 474) | function matchSelector(elem, selector) {
  function getCurrentFocusedElement (line 487) | function getCurrentFocusedElement() {
  function extend (line 494) | function extend(out) {
  function exclude (line 512) | function exclude(elemList, excludedElem) {
  function isNavigable (line 525) | function isNavigable(elem, sectionId, verifySectionSelector) {
  function getSectionId (line 558) | function getSectionId(elem) {
  function getSectionNavigableElements (line 569) | function getSectionNavigableElements(sectionId) {
  function getSectionDefaultElement (line 578) | function getSectionDefaultElement(sectionId) {
  function getSectionLastFocusedElement (line 590) | function getSectionLastFocusedElement(sectionId) {
  function fireEvent (line 598) | function fireEvent(elem, type, details, cancelable) {
  function focusElement (line 607) | function focusElement(elem, sectionId, direction) {
  function focusChanged (line 669) | function focusChanged(elem, sectionId) {
  function focusExtendedSelector (line 679) | function focusExtendedSelector(selector, direction) {
  function focusSection (line 699) | function focusSection(sectionId) {
  function fireNavigatefailed (line 744) | function fireNavigatefailed(elem, direction) {
  function gotoLeaveFor (line 755) | function gotoLeaveFor(sectionId, direction) {
  function focusNext (line 781) | function focusNext(direction, currentFocusedElement, currentSectionId) {
  function onKeyDown (line 879) | function onKeyDown(evt) {
  function onKeyUp (line 947) | function onKeyUp(evt) {
  function onFocus (line 967) | function onFocus(evt) {
  function onBlur (line 999) | function onBlur(evt) {

FILE: apps/shared/js/switch_setting.js
  class SwitchAndSetting (line 3) | class SwitchAndSetting extends EventTarget {
    method constructor (line 4) | constructor(element, name) {
    method init (line 12) | async init() {

FILE: apps/shared/js/tile.js
  class Webrtc (line 3) | class Webrtc extends EventTarget {
    method constructor (line 4) | constructor(peer) {
    method ensurePeerConnection (line 11) | ensurePeerConnection() {
    method setupChannel (line 44) | setupChannel(channel) {
    method handleEvent (line 54) | async handleEvent(event) {
    method offer (line 69) | async offer() {
    method answer (line 81) | async answer() {
    method setRemoteDescription (line 89) | setRemoteDescription(answer) {
  class TileHelper (line 95) | class TileHelper extends EventTarget {
    method constructor (line 96) | constructor(data) {
    method log (line 102) | log(msg) {
    method setupWebrtcEvents (line 106) | setupWebrtcEvents(webrtc) {
    method enterDevMode (line 122) | async enterDevMode() {
    method onStart (line 149) | async onStart() {
    method onCalled (line 177) | async onCalled() {
  class TileRpcClient (line 199) | class TileRpcClient extends EventTarget {
    method constructor (line 200) | constructor(channel) {
    method callFunc (line 209) | callFunc(funcName, params) {
    method addMessageListener (line 218) | addMessageListener(name) {
    method removeMessageListener (line 223) | removeMessageListener(name) {
    method handleEvent (line 228) | handleEvent(event) {
  class TileRpcServer (line 265) | class TileRpcServer extends EventTarget {
    method constructor (line 266) | constructor(channel) {
    method handleEvent (line 275) | async handleEvent(event) {
    method broadcastMessage (line 308) | broadcastMessage({ name, detail }) {

FILE: apps/shared/shoelace/chunks/chunk.27ILGUWR.js
  method constructor (line 7) | constructor(t5, e7, o7) {
  method styleSheet (line 12) | get styleSheet() {
  method toString (line 21) | toString() {
  method toAttribute (line 59) | toAttribute(t5, s6) {
  method fromAttribute (line 69) | fromAttribute(t5, s6) {
  method addInitializer (line 93) | static addInitializer(t5) {
  method observedAttributes (line 97) | static get observedAttributes() {
  method createProperty (line 100) | static createProperty(t5, s6 = y) {
  method getPropertyDescriptor (line 106) | static getPropertyDescriptor(t5, s6, i7) {
  method getPropertyOptions (line 120) | static getPropertyOptions(t5) {
  method _$Ei (line 124) | static _$Ei() {
  method finalize (line 130) | static finalize() {
  method finalizeStyles (line 152) | static finalizeStyles(s6) {
  method _$Eu (line 162) | static _$Eu(t5, s6) {
  method constructor (line 166) | constructor() {
  method _$Ev (line 169) | _$Ev() {
  method addController (line 173) | addController(t5) {
  method removeController (line 177) | removeController(t5) {
  method _$E_ (line 181) | _$E_() {
  method createRenderRoot (line 187) | createRenderRoot() {
  method connectedCallback (line 192) | connectedCallback() {
  method enableUpdating (line 199) | enableUpdating(t5) {
  method disconnectedCallback (line 201) | disconnectedCallback() {
  method attributeChangedCallback (line 208) | attributeChangedCallback(t5, s6, i7) {
  method _$EO (line 211) | _$EO(t5, s6) {
  method _$AK (line 219) | _$AK(t5, s6) {
  method requestUpdate (line 227) | requestUpdate(t5, s6, i7, e7 = false, r8) {
  method C (line 236) | C(t5, s6, i7) {
  method _$EP (line 240) | async _$EP() {
  method scheduleUpdate (line 250) | scheduleUpdate() {
  method performUpdate (line 253) | performUpdate() {
  method willUpdate (line 280) | willUpdate(t5) {
  method _$AE (line 282) | _$AE(t5) {
  method _$ET (line 289) | _$ET() {
  method updateComplete (line 292) | get updateComplete() {
  method getUpdateComplete (line 295) | getUpdateComplete() {
  method shouldUpdate (line 298) | shouldUpdate(t5) {
  method update (line 301) | update(t5) {
  method updated (line 304) | updated(t5) {
  method firstUpdated (line 306) | firstUpdated(t5) {
  function C (line 341) | function C(t5, i7) {
  method constructor (line 360) | constructor({ strings: t5, _$litType$: s6 }, n7) {
  method createElement (line 398) | static createElement(t5, i7) {
  function N (line 403) | function N(t5, i7, s6 = t5, e7) {
  method constructor (line 412) | constructor(t5, i7) {
  method parentNode (line 415) | get parentNode() {
  method _$AU (line 418) | get _$AU() {
  method u (line 421) | u(t5) {
  method p (line 435) | p(t5) {
  method _$AU (line 442) | get _$AU() {
  method constructor (line 446) | constructor(t5, i7, s6, e7) {
  method parentNode (line 450) | get parentNode() {
  method startNode (line 455) | get startNode() {
  method endNode (line 458) | get endNode() {
  method _$AI (line 461) | _$AI(t5, i7 = this) {
  method k (line 464) | k(t5) {
  method $ (line 467) | $(t5) {
  method _ (line 470) | _(t5) {
  method g (line 473) | g(t5) {
  method _$AC (line 483) | _$AC(t5) {
  method T (line 487) | T(t5) {
  method _$AR (line 495) | _$AR(t5 = this._$AA.nextSibling, i7) {
  method setConnected (line 502) | setConnected(t5) {
  method tagName (line 508) | get tagName() {
  method _$AU (line 511) | get _$AU() {
  method constructor (line 514) | constructor(t5, i7, s6, e7, h5) {
  method _$AI (line 517) | _$AI(t5, i7 = this, s6, e7) {
  method j (line 530) | j(t5) {
  method constructor (line 535) | constructor() {
  method j (line 538) | j(t5) {
  method constructor (line 543) | constructor() {
  method j (line 546) | j(t5) {
  method constructor (line 551) | constructor(t5, i7, s6, e7, h5) {
  method _$AI (line 554) | _$AI(t5, i7 = this) {
  method handleEvent (line 561) | handleEvent(t5) {
  method constructor (line 567) | constructor(t5, i7, s6) {
  method _$AU (line 570) | get _$AU() {
  method _$AI (line 573) | _$AI(t5) {
  method constructor (line 597) | constructor(t5, e7, o7) {
  method styleSheet (line 602) | get styleSheet() {
  method toString (line 611) | toString() {
  method toAttribute (line 639) | toAttribute(t5, s6) {
  method fromAttribute (line 649) | fromAttribute(t5, s6) {
  method addInitializer (line 673) | static addInitializer(t5) {
  method observedAttributes (line 677) | static get observedAttributes() {
  method createProperty (line 680) | static createProperty(t5, s6 = y3) {
  method getPropertyDescriptor (line 686) | static getPropertyDescriptor(t5, s6, i7) {
  method getPropertyOptions (line 700) | static getPropertyOptions(t5) {
  method _$Ei (line 704) | static _$Ei() {
  method finalize (line 710) | static finalize() {
  method finalizeStyles (line 732) | static finalizeStyles(s6) {
  method _$Eu (line 742) | static _$Eu(t5, s6) {
  method constructor (line 746) | constructor() {
  method _$Ev (line 749) | _$Ev() {
  method addController (line 753) | addController(t5) {
  method removeController (line 757) | removeController(t5) {
  method _$E_ (line 761) | _$E_() {
  method createRenderRoot (line 767) | createRenderRoot() {
  method connectedCallback (line 772) | connectedCallback() {
  method enableUpdating (line 779) | enableUpdating(t5) {
  method disconnectedCallback (line 781) | disconnectedCallback() {
  method attributeChangedCallback (line 788) | attributeChangedCallback(t5, s6, i7) {
  method _$EO (line 791) | _$EO(t5, s6) {
  method _$AK (line 799) | _$AK(t5, s6) {
  method requestUpdate (line 807) | requestUpdate(t5, s6, i7, e7 = false, r8) {
  method C (line 816) | C(t5, s6, i7) {
  method _$EP (line 820) | async _$EP() {
  method scheduleUpdate (line 830) | scheduleUpdate() {
  method performUpdate (line 833) | performUpdate() {
  method willUpdate (line 860) | willUpdate(t5) {
  method _$AE (line 862) | _$AE(t5) {
  method _$ET (line 869) | _$ET() {
  method updateComplete (line 872) | get updateComplete() {
  method getUpdateComplete (line 875) | getUpdateComplete() {
  method shouldUpdate (line 878) | shouldUpdate(t5) {
  method update (line 881) | update(t5) {
  method updated (line 884) | updated(t5) {
  method firstUpdated (line 886) | firstUpdated(t5) {
  function C2 (line 921) | function C2(t5, i7) {
  method constructor (line 940) | constructor({ strings: t5, _$litType$: s6 }, n7) {
  method createElement (line 978) | static createElement(t5, i7) {
  function N2 (line 983) | function N2(t5, i7, s6 = t5, e7) {
  method constructor (line 992) | constructor(t5, i7) {
  method parentNode (line 995) | get parentNode() {
  method _$AU (line 998) | get _$AU() {
  method u (line 1001) | u(t5) {
  method p (line 1015) | p(t5) {
  method _$AU (line 1022) | get _$AU() {
  method constructor (line 1026) | constructor(t5, i7, s6, e7) {
  method parentNode (line 1030) | get parentNode() {
  method startNode (line 1035) | get startNode() {
  method endNode (line 1038) | get endNode() {
  method _$AI (line 1041) | _$AI(t5, i7 = this) {
  method k (line 1044) | k(t5) {
  method $ (line 1047) | $(t5) {
  method _ (line 1050) | _(t5) {
  method g (line 1053) | g(t5) {
  method _$AC (line 1063) | _$AC(t5) {
  method T (line 1067) | T(t5) {
  method _$AR (line 1075) | _$AR(t5 = this._$AA.nextSibling, i7) {
  method setConnected (line 1082) | setConnected(t5) {
  method tagName (line 1088) | get tagName() {
  method _$AU (line 1091) | get _$AU() {
  method constructor (line 1094) | constructor(t5, i7, s6, e7, h5) {
  method _$AI (line 1097) | _$AI(t5, i7 = this, s6, e7) {
  method j (line 1110) | j(t5) {
  method constructor (line 1115) | constructor() {
  method j (line 1118) | j(t5) {
  method constructor (line 1123) | constructor() {
  method j (line 1126) | j(t5) {
  method constructor (line 1131) | constructor(t5, i7, s6, e7, h5) {
  method _$AI (line 1134) | _$AI(t5, i7 = this) {
  method handleEvent (line 1141) | handleEvent(t5) {
  method constructor (line 1147) | constructor(t5, i7, s6) {
  method _$AU (line 1150) | get _$AU() {
  method _$AI (line 1153) | _$AI(t5) {
  method constructor (line 1164) | constructor() {
  method createRenderRoot (line 1167) | createRenderRoot() {
  method update (line 1172) | update(t5) {
  method connectedCallback (line 1176) | connectedCallback() {
  method disconnectedCallback (line 1180) | disconnectedCallback() {
  method render (line 1184) | render() {

FILE: apps/shared/shoelace/chunks/chunk.2MCJQUSU.js
  function clamp (line 41) | function clamp(start, value, end) {
  function evaluate (line 44) | function evaluate(value, param) {
  function getSide (line 47) | function getSide(placement) {
  function getAlignment (line 50) | function getAlignment(placement) {
  function getOppositeAxis (line 53) | function getOppositeAxis(axis) {
  function getAxisLength (line 56) | function getAxisLength(axis) {
  function getSideAxis (line 59) | function getSideAxis(placement) {
  function getAlignmentAxis (line 62) | function getAlignmentAxis(placement) {
  function getAlignmentSides (line 65) | function getAlignmentSides(placement, rects, rtl) {
  function getExpandedPlacements (line 78) | function getExpandedPlacements(placement) {
  function getOppositeAlignmentPlacement (line 82) | function getOppositeAlignmentPlacement(placement) {
  function getSideList (line 85) | function getSideList(side, isStart, rtl) {
  function getOppositeAxisPlacements (line 103) | function getOppositeAxisPlacements(placement, flipAlignment, direction, ...
  function getOppositePlacement (line 114) | function getOppositePlacement(placement) {
  function expandPaddingObject (line 117) | function expandPaddingObject(padding) {
  function getPaddingObject (line 125) | function getPaddingObject(padding) {
  function rectToClientRect (line 133) | function rectToClientRect(rect) {
  function computeCoordsFromPlacement (line 143) | function computeCoordsFromPlacement(_ref, placement, rtl) {
  function detectOverflow (line 278) | async function detectOverflow(state, options) {
  method fn (line 334) | async fn(state) {
  method fn (line 399) | async fn(state) {
  function convertValueToCoords (line 492) | async function convertValueToCoords(state, options) {
  method fn (line 536) | async fn(state) {
  method fn (line 557) | async fn(state) {
  method fn (line 626) | async fn(state) {
  function getNodeName (line 697) | function getNodeName(node) {
  function getWindow (line 703) | function getWindow(node) {
  function getDocumentElement (line 707) | function getDocumentElement(node) {
  function isNode (line 711) | function isNode(value) {
  function isElement (line 714) | function isElement(value) {
  function isHTMLElement (line 717) | function isHTMLElement(value) {
  function isShadowRoot (line 720) | function isShadowRoot(value) {
  function isOverflowElement (line 726) | function isOverflowElement(element) {
  function isTableElement (line 735) | function isTableElement(element) {
  function isContainingBlock (line 738) | function isContainingBlock(element) {
  function getContainingBlock (line 743) | function getContainingBlock(element) {
  function isWebKit (line 754) | function isWebKit() {
  function isLastTraversableNode (line 759) | function isLastTraversableNode(node) {
  function getComputedStyle2 (line 762) | function getComputedStyle2(element) {
  function getNodeScroll (line 765) | function getNodeScroll(element) {
  function getParentNode (line 777) | function getParentNode(node) {
  function getNearestOverflowAncestor (line 790) | function getNearestOverflowAncestor(node) {
  function getOverflowAncestors (line 800) | function getOverflowAncestors(node, list, traverseIframes) {
  function getCssDimensions (line 818) | function getCssDimensions(element) {
  function unwrapElement (line 836) | function unwrapElement(element) {
  function getScale (line 839) | function getScale(element) {
  function getVisualOffsets (line 864) | function getVisualOffsets(element) {
  function shouldAddVisualOffsets (line 874) | function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {
  function getBoundingClientRect (line 883) | function getBoundingClientRect(element, includeScale, isFixedStrategy, o...
  function convertOffsetParentRelativeRectToViewportRelativeRect (line 933) | function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
  function getClientRects (line 968) | function getClientRects(element) {
  function getWindowScrollBarX (line 971) | function getWindowScrollBarX(element) {
  function getDocumentRect (line 974) | function getDocumentRect(element) {
  function getViewportRect (line 992) | function getViewportRect(element, strategy) {
  function getInnerBoundingClientRect (line 1016) | function getInnerBoundingClientRect(element, strategy) {
  function getClientRectFromClippingAncestor (line 1032) | function getClientRectFromClippingAncestor(element, clippingAncestor, st...
  function hasFixedPositionAncestor (line 1049) | function hasFixedPositionAncestor(element, stopNode) {
  function getClippingElementAncestors (line 1056) | function getClippingElementAncestors(element, cache) {
  function getClippingRect (line 1082) | function getClippingRect(_ref) {
  function getDimensions (line 1107) | function getDimensions(element) {
  function getRectRelativeToOffsetParent (line 1110) | function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
  function getTrueOffsetParent (line 1139) | function getTrueOffsetParent(element, polyfill) {
  function getOffsetParent (line 1148) | function getOffsetParent(element, polyfill) {
  function isRTL (line 1178) | function isRTL(element) {
  function observeMove (line 1193) | function observeMove(element, onMove) {
  function autoUpdate (line 1261) | function autoUpdate(reference, floating, update, options) {
  function t (line 1341) | function t(t2) {
  function o (line 1344) | function o(t2) {
  function r (line 1347) | function r(t2) {
  function isVirtualElement (line 1366) | function isVirtualElement(e3) {
  method constructor (line 1370) | constructor() {
  method connectedCallback (line 1388) | async connectedCallback() {
  method disconnectedCallback (line 1393) | disconnectedCallback() {
  method updated (line 1397) | async updated(changedProps) {
  method handleAnchorChange (line 1414) | async handleAnchorChange() {
  method start (line 1431) | start() {
  method stop (line 1439) | async stop() {
  method reposition (line 1454) | reposition() {
  method render (line 1578) | render() {

FILE: apps/shared/shoelace/chunks/chunk.34S4OTPW.js
  method constructor (line 54) | constructor() {
  method firstUpdated (line 69) | firstUpdated() {
  method disconnectedCallback (line 77) | disconnectedCallback() {
  method requestClose (line 82) | requestClose(source) {
  method addOpenListeners (line 94) | addOpenListeners() {
  method removeOpenListeners (line 97) | removeOpenListeners() {
  method handleOpenChange (line 100) | async handleOpenChange() {
  method show (line 160) | async show() {
  method hide (line 168) | async hide() {
  method render (line 175) | render() {

FILE: apps/shared/shoelace/chunks/chunk.36T65R7Z.js
  method constructor (line 14) | constructor() {
  method render (line 21) | render() {

FILE: apps/shared/shoelace/chunks/chunk.3A33BUSS.js
  method constructor (line 42) | constructor() {
  method connectedCallback (line 99) | connectedCallback() {
  method firstUpdated (line 102) | firstUpdated() {
  method hasTrigger (line 109) | hasTrigger(triggerType) {
  method handleOpenChange (line 113) | async handleOpenChange() {
  method handleOptionsChange (line 135) | async handleOptionsChange() {
  method handleDisabledChange (line 141) | handleDisabledChange() {
  method show (line 147) | async show() {
  method hide (line 155) | async hide() {
  method render (line 168) | render() {

FILE: apps/shared/shoelace/chunks/chunk.3K4U45R6.js
  method constructor (line 44) | constructor() {
  method validity (line 66) | get validity() {
  method validationMessage (line 70) | get validationMessage() {
  method connectedCallback (line 73) | connectedCallback() {
  method disconnectedCallback (line 87) | disconnectedCallback() {
  method handleChange (line 91) | handleChange() {
  method handleInput (line 94) | handleInput() {
  method handleBlur (line 99) | handleBlur() {
  method handleFocus (line 104) | handleFocus() {
  method handleThumbDragStart (line 109) | handleThumbDragStart() {
  method handleThumbDragEnd (line 112) | handleThumbDragEnd() {
  method syncProgress (line 115) | syncProgress(percent) {
  method syncTooltip (line 118) | syncTooltip(percent) {
  method handleValueChange (line 134) | handleValueChange() {
  method handleDisabledChange (line 140) | handleDisabledChange() {
  method syncRange (line 143) | syncRange() {
  method handleInvalid (line 150) | handleInvalid(event) {
  method focus (line 155) | focus(options) {
  method blur (line 159) | blur() {
  method stepUp (line 163) | stepUp() {
  method stepDown (line 170) | stepDown() {
  method checkValidity (line 177) | checkValidity() {
  method getForm (line 181) | getForm() {
  method reportValidity (line 185) | reportValidity() {
  method setCustomValidity (line 189) | setCustomValidity(message) {
  method render (line 193) | render() {

FILE: apps/shared/shoelace/chunks/chunk.3KCPXO34.js
  method constructor (line 33) | constructor() {
  method resolveIcon (line 41) | async resolveIcon(url, library) {
  method connectedCallback (line 74) | connectedCallback() {
  method firstUpdated (line 78) | firstUpdated() {
  method disconnectedCallback (line 82) | disconnectedCallback() {
  method getIconSource (line 86) | getIconSource() {
  method handleLabelChange (line 99) | handleLabelChange() {
  method setIcon (line 111) | async setIcon() {
  method render (line 150) | render() {

FILE: apps/shared/shoelace/chunks/chunk.3TH5U7GS.js
  method constructor (line 10) | constructor(host) {
  method hostConnected (line 53) | async hostConnected() {
  method hostDisconnected (line 63) | hostDisconnected() {
  method handleDragStart (line 72) | handleDragStart() {
  method handleDrag (line 78) | handleDrag(event) {
  method handleDragEnd (line 84) | handleDragEnd() {

FILE: apps/shared/shoelace/chunks/chunk.3Y6SB6QS.js
  function setBasePath (line 3) | function setBasePath(path) {
  function getBasePath (line 6) | function getBasePath(subpath = "") {

FILE: apps/shared/shoelace/chunks/chunk.4AGXO3EP.js
  method constructor (line 63) | constructor() {
  method validity (line 217) | get validity() {
  method validationMessage (line 221) | get validationMessage() {
  method connectedCallback (line 224) | connectedCallback() {
  method addOpenListeners (line 228) | addOpenListeners() {
  method removeOpenListeners (line 233) | removeOpenListeners() {
  method handleFocus (line 238) | handleFocus() {
  method handleBlur (line 243) | handleBlur() {
  method handleLabelClick (line 247) | handleLabelClick() {
  method handleComboboxMouseDown (line 250) | handleComboboxMouseDown(event) {
  method handleComboboxKeyDown (line 260) | handleComboboxKeyDown(event) {
  method handleClearClick (line 264) | handleClearClick(event) {
  method handleClearMouseDown (line 276) | handleClearMouseDown(event) {
  method handleOptionClick (line 280) | handleOptionClick(event) {
  method handleDefaultSlotChange (line 303) | handleDefaultSlotChange() {
  method handleTagRemove (line 314) | handleTagRemove(event, option) {
  method getAllOptions (line 325) | getAllOptions() {
  method getFirstOption (line 329) | getFirstOption() {
  method setCurrentOption (line 334) | setCurrentOption(option) {
  method setSelectedOptions (line 348) | setSelectedOptions(option) {
  method toggleOptionSelection (line 358) | toggleOptionSelection(option, force) {
  method selectionChanged (line 368) | selectionChanged() {
  method tags (line 386) | get tags() {
  method handleInvalid (line 399) | handleInvalid(event) {
  method handleDisabledChange (line 403) | handleDisabledChange() {
  method handleValueChange (line 409) | handleValueChange() {
  method handleOpenChange (line 414) | async handleOpenChange() {
  method show (line 443) | async show() {
  method hide (line 452) | async hide() {
  method checkValidity (line 461) | checkValidity() {
  method getForm (line 465) | getForm() {
  method reportValidity (line 469) | reportValidity() {
  method setCustomValidity (line 473) | setCustomValidity(message) {
  method focus (line 478) | focus(options) {
  method blur (line 482) | blur() {
  method render (line 485) | render() {

FILE: apps/shared/shoelace/chunks/chunk.4AL4ELCP.js
  method constructor (line 13) | constructor(i2) {
  method render (line 17) | render(r) {

FILE: apps/shared/shoelace/chunks/chunk.4M5XFOS7.js
  method constructor (line 31) | constructor() {
  method disconnectedCallback (line 42) | disconnectedCallback() {
  method render (line 46) | render() {
  function getTimeUntilNextUnit (line 107) | function getTimeUntilNextUnit(unit) {

FILE: apps/shared/shoelace/chunks/chunk.4PLZZP5P.js
  method constructor (line 14) | constructor() {
  method render (line 23) | render() {

FILE: apps/shared/shoelace/chunks/chunk.52GJFLW5.js
  function ensureAnimation (line 9) | function ensureAnimation(animation) {
  function getLogicalAnimation (line 12) | function getLogicalAnimation(animation, dir) {
  function setDefaultAnimation (line 21) | function setDefaultAnimation(animationName, animation) {
  function setAnimation (line 24) | function setAnimation(el, animationName, animation) {
  function getAnimation (line 27) | function getAnimation(el, animationName, options) {

FILE: apps/shared/shoelace/chunks/chunk.5H6S5K32.js
  method constructor (line 20) | constructor() {
  method render (line 24) | render() {

FILE: apps/shared/shoelace/chunks/chunk.5QCEXB5W.js
  method constructor (line 26) | constructor() {
  method render (line 31) | render() {

FILE: apps/shared/shoelace/chunks/chunk.63UPDLBW.js
  method constructor (line 45) | constructor() {
  method validity (line 70) | get validity() {
  method validationMessage (line 77) | get validationMessage() {
  method firstUpdated (line 83) | firstUpdated() {
  method handleBlur (line 88) | handleBlur() {
  method handleFocus (line 92) | handleFocus() {
  method handleClick (line 96) | handleClick() {
  method handleInvalid (line 104) | handleInvalid(event) {
  method isButton (line 108) | isButton() {
  method isLink (line 111) | isLink() {
  method handleDisabledChange (line 114) | handleDisabledChange() {
  method click (line 120) | click() {
  method focus (line 124) | focus(options) {
  method blur (line 128) | blur() {
  method checkValidity (line 132) | checkValidity() {
  method getForm (line 139) | getForm() {
  method reportValidity (line 143) | reportValidity() {
  method setCustomValidity (line 150) | setCustomValidity(message) {
  method render (line 156) | render() {

FILE: apps/shared/shoelace/chunks/chunk.7KSQ6COJ.js
  method constructor (line 37) | constructor() {
  method validity (line 55) | get validity() {
  method validationMessage (line 59) | get validationMessage() {
  method firstUpdated (line 62) | firstUpdated() {
  method handleBlur (line 65) | handleBlur() {
  method handleInput (line 69) | handleInput() {
  method handleInvalid (line 72) | handleInvalid(event) {
  method handleClick (line 76) | handleClick() {
  method handleFocus (line 80) | handleFocus() {
  method handleKeyDown (line 84) | handleKeyDown(event) {
  method handleCheckedChange (line 98) | handleCheckedChange() {
  method handleDisabledChange (line 102) | handleDisabledChange() {
  method click (line 106) | click() {
  method focus (line 110) | focus(options) {
  method blur (line 114) | blur() {
  method checkValidity (line 118) | checkValidity() {
  method getForm (line 122) | getForm() {
  method reportValidity (line 126) | reportValidity() {
  method setCustomValidity (line 130) | setCustomValidity(message) {
  method render (line 134) | render() {

FILE: apps/shared/shoelace/chunks/chunk.7WOVQUDP.js
  method constructor (line 112) | constructor() {
  method connectedCallback (line 142) | connectedCallback() {
  method disconnectedCallback (line 166) | disconnectedCallback() {
  method firstUpdated (line 171) | firstUpdated() {
  method willUpdate (line 179) | willUpdate(changedProperties) {
  method getPageCount (line 184) | getPageCount() {
  method getCurrentPage (line 190) | getCurrentPage() {
  method canScrollNext (line 193) | canScrollNext() {
  method canScrollPrev (line 196) | canScrollPrev() {
  method getSlides (line 200) | getSlides({ excludeClones = true } = {}) {
  method handleKeyDown (line 205) | handleKeyDown(event) {
  method handleScrollEnd (line 238) | handleScrollEnd() {
  method isCarouselItem (line 250) | isCarouselItem(node) {
  method initializeSlides (line 253) | initializeSlides() {
  method createClones (line 274) | createClones() {
  method handelSlideChange (line 290) | handelSlideChange() {
  method updateSlidesSnap (line 304) | updateSlidesSnap() {
  method handleAutoplayChange (line 316) | handleAutoplayChange() {
  method handleMouseDraggingChange (line 322) | handleMouseDraggingChange() {
  method previous (line 330) | previous(behavior = "smooth") {
  method next (line 338) | next(behavior = "smooth") {
  method goToSlide (line 347) | goToSlide(index, behavior = "smooth") {
  method render (line 366) | render() {

FILE: apps/shared/shoelace/chunks/chunk.A4SOQOK5.js
  function drag (line 2) | function drag(container, options) {

FILE: apps/shared/shoelace/chunks/chunk.B3SICWSY.js
  method constructor (line 29) | constructor() {
  method handleBlur (line 35) | handleBlur() {
  method handleFocus (line 39) | handleFocus() {
  method handleClick (line 43) | handleClick(event) {
  method click (line 50) | click() {
  method focus (line 54) | focus(options) {
  method blur (line 58) | blur() {
  method render (line 61) | render() {

FILE: apps/shared/shoelace/chunks/chunk.B4BZKR24.js
  function waitForEvent (line 2) | function waitForEvent(el, eventName) {

FILE: apps/shared/shoelace/chunks/chunk.BB3IFNZA.js
  method constructor (line 25) | constructor() {
  method handleClick (line 29) | handleClick() {
  method handleLoad (line 32) | handleLoad() {
  method handleError (line 44) | handleError() {
  method handlePlayChange (line 47) | handlePlayChange() {
  method handleSrcChange (line 53) | handleSrcChange() {
  method render (line 56) | render() {

FILE: apps/shared/shoelace/chunks/chunk.BT5IXD6R.js
  method constructor (line 29) | constructor() {
  method render (line 36) | render() {

FILE: apps/shared/shoelace/chunks/chunk.CEOSQBTO.js
  method constructor (line 17) | constructor() {
  method render (line 23) | render() {

FILE: apps/shared/shoelace/chunks/chunk.CWNX3TEY.js
  method constructor (line 37) | constructor() {
  method validity (line 54) | get validity() {
  method validationMessage (line 65) | get validationMessage() {
  method connectedCallback (line 75) | connectedCallback() {
  method firstUpdated (line 79) | firstUpdated() {
  method getAllRadios (line 82) | getAllRadios() {
  method handleRadioClick (line 85) | handleRadioClick(event) {
  method handleKeyDown (line 99) | handleKeyDown(event) {
  method handleLabelClick (line 135) | handleLabelClick() {
  method handleInvalid (line 143) | handleInvalid(event) {
  method syncRadioElements (line 147) | async syncRadioElements() {
  method syncRadios (line 176) | syncRadios() {
  method updateCheckedRadio (line 192) | updateCheckedRadio() {
  method handleSizeChange (line 197) | handleSizeChange() {
  method handleValueChange (line 200) | handleValueChange() {
  method checkValidity (line 206) | checkValidity() {
  method getForm (line 216) | getForm() {
  method reportValidity (line 220) | reportValidity() {
  method setCustomValidity (line 234) | setCustomValidity(message = "") {
  method render (line 240) | render() {

FILE: apps/shared/shoelace/chunks/chunk.DOEQE6VP.js
  function h (line 42) | function h(i2) {
  function n (line 45) | function n(i2, t2 = false, e3 = 0) {
  method constructor (line 62) | constructor() {
  method _$AT (line 65) | _$AT(i2, t2, e3) {
  method _$AO (line 68) | _$AO(i2, t2 = true) {
  method setValue (line 72) | setValue(t2) {
  method disconnected (line 80) | disconnected() {
  method reconnected (line 82) | reconnected() {
  method render (line 92) | render(i2) {
  method update (line 95) | update(i2, [s2]) {
  method ot (line 100) | ot(t2) {
  method rt (line 109) | get rt() {
  method disconnected (line 113) | disconnected() {
  method reconnected (line 116) | reconnected() {
  method constructor (line 123) | constructor(host, hasSlotController, localize) {
  method hostConnected (line 202) | hostConnected() {
  method hostDisconnected (line 207) | hostDisconnected() {
  method hostUpdated (line 210) | hostUpdated() {
  method addListeners (line 218) | addListeners() {
  method removeListeners (line 235) | removeListeners() {
  method handleSubmenuEntry (line 252) | handleSubmenuEntry(event) {
  method setSubmenuState (line 290) | setSubmenuState(state) {
  method enableSubmenu (line 300) | enableSubmenu(delay = true) {
  method disableSubmenu (line 309) | disableSubmenu() {
  method updateSkidding (line 314) | updateSkidding() {
  method isExpanded (line 330) | isExpanded() {
  method renderSubmenu (line 333) | renderSubmenu() {

FILE: apps/shared/shoelace/chunks/chunk.DOYC4G7X.js
  method constructor (line 12) | constructor(t2) {
  method render (line 17) | render(t2) {
  method update (line 20) | update(s, [i2]) {

FILE: apps/shared/shoelace/chunks/chunk.EP23WFU3.js
  method constructor (line 19) | constructor() {
  method handleFocus (line 24) | handleFocus(event) {
  method handleBlur (line 28) | handleBlur(event) {
  method handleMouseOver (line 32) | handleMouseOver(event) {
  method handleMouseOut (line 36) | handleMouseOut(event) {
  method handleSlotChange (line 40) | handleSlotChange() {
  method render (line 54) | render() {
  function findButton (line 81) | function findButton(el) {

FILE: apps/shared/shoelace/chunks/chunk.F4R62TH3.js
  method connectedCallback (line 13) | connectedCallback() {
  method render (line 17) | render() {

FILE: apps/shared/shoelace/chunks/chunk.F4VGSDIW.js
  method constructor (line 3) | constructor(host, tickCallback) {
  method hostConnected (line 24) | hostConnected() {
  method hostDisconnected (line 32) | hostDisconnected() {
  method start (line 41) | start(interval) {
  method stop (line 50) | stop() {

FILE: apps/shared/shoelace/chunks/chunk.FZX37GM3.js
  function getDeepestActiveElement (line 17) | function getDeepestActiveElement() {
  method constructor (line 24) | constructor(element) {
  method activate (line 69) | activate() {
  method deactivate (line 76) | deactivate() {
  method isActive (line 84) | isActive() {
  method activateExternal (line 88) | activateExternal() {
  method deactivateExternal (line 92) | deactivateExternal() {
  method checkFocus (line 95) | checkFocus() {

FILE: apps/shared/shoelace/chunks/chunk.G4FTAQJB.js
  method constructor (line 35) | constructor() {
  method connectedCallback (line 45) | connectedCallback() {
  method disconnectedCallback (line 80) | disconnectedCallback() {
  method getAllTabs (line 85) | getAllTabs(options = { includeDisabled: true }) {
  method getAllPanels (line 91) | getAllPanels() {
  method getActiveTab (line 94) | getActiveTab() {
  method handleClick (line 97) | handleClick(event) {
  method handleKeyDown (line 108) | handleKeyDown(event) {
  method handleScrollToStart (line 152) | handleScrollToStart() {
  method handleScrollToEnd (line 158) | handleScrollToEnd() {
  method setActiveTab (line 164) | setActiveTab(tab, options) {
  method setAriaLabels (line 189) | setAriaLabels() {
  method repositionIndicator (line 198) | repositionIndicator() {
  method syncTabsAndPanels (line 231) | syncTabsAndPanels() {
  method updateScrollControls (line 237) | updateScrollControls() {
  method syncIndicator (line 244) | syncIndicator() {
  method show (line 254) | show(panel) {
  method render (line 260) | render() {

FILE: apps/shared/shoelace/chunks/chunk.GCUAIUGA.js
  method constructor (line 45) | constructor() {
  method firstUpdated (line 54) | firstUpdated() {
  method restartAutoHide (line 57) | restartAutoHide() {
  method handleCloseClick (line 63) | handleCloseClick() {
  method handleMouseMove (line 66) | handleMouseMove() {
  method handleOpenChange (line 69) | async handleOpenChange() {
  method handleDurationChange (line 90) | handleDurationChange() {
  method show (line 94) | async show() {
  method hide (line 102) | async hide() {
  method toast (line 114) | async toast() {
  method render (line 137) | render() {

FILE: apps/shared/shoelace/chunks/chunk.HF7GESMZ.js
  function clamp (line 2) | function clamp(value, min, max) {

FILE: apps/shared/shoelace/chunks/chunk.HPQ3PGLN.js
  method constructor (line 17) | constructor(r) {
  method render (line 23) | render(r) {
  method update (line 26) | update(i2, [t2]) {

FILE: apps/shared/shoelace/chunks/chunk.IHSUO777.js
  function bound01 (line 63) | function bound01(n2, max) {
  function clamp01 (line 82) | function clamp01(val) {
  function isOnePointZero (line 85) | function isOnePointZero(n2) {
  function isPercentage (line 88) | function isPercentage(n2) {
  function boundAlpha (line 91) | function boundAlpha(a) {
  function convertToPercentage (line 98) | function convertToPercentage(n2) {
  function pad2 (line 104) | function pad2(c) {
  function rgbToRgb (line 109) | function rgbToRgb(r2, g, b) {
  function rgbToHsl (line 116) | function rgbToHsl(r2, g, b) {
  function hue2rgb (line 148) | function hue2rgb(p, q, t) {
  function hslToRgb (line 166) | function hslToRgb(h, s, l) {
  function rgbToHsv (line 186) | function rgbToHsv(r2, g, b) {
  function hsvToRgb (line 216) | function hsvToRgb(h, s, v) {
  function rgbToHex (line 231) | function rgbToHex(r2, g, b, allow3Char) {
  function rgbaToHex (line 242) | function rgbaToHex(r2, g, b, a, allow4Char) {
  function convertDecimalToHex (line 254) | function convertDecimalToHex(d) {
  function convertHexToDecimal (line 257) | function convertHexToDecimal(h) {
  function parseIntFromHex (line 260) | function parseIntFromHex(val) {
  function numberInputToObject (line 263) | function numberInputToObject(color) {
  function inputToRGB (line 424) | function inputToRGB(color) {
  function stringInputToObject (line 485) | function stringInputToObject(color) {
  function isValidCSSUnit (line 561) | function isValidCSSUnit(color) {
  method constructor (line 567) | constructor(color = "", opts = {}) {
  method isDark (line 596) | isDark() {
  method isLight (line 599) | isLight() {
  method getBrightness (line 605) | getBrightness() {
  method getLuminance (line 612) | getLuminance() {
  method getAlpha (line 640) | getAlpha() {
  method setAlpha (line 648) | setAlpha(alpha) {
  method isMonochrome (line 656) | isMonochrome() {
  method toHsv (line 663) | toHsv() {
  method toHsvString (line 671) | toHsvString() {
  method toHsl (line 681) | toHsl() {
  method toHslString (line 689) | toHslString() {
  method toHex (line 700) | toHex(allow3Char = false) {
  method toHexString (line 707) | toHexString(allow3Char = false) {
  method toHex8 (line 714) | toHex8(allow4Char = false) {
  method toHex8String (line 721) | toHex8String(allow4Char = false) {
  method toHexShortString (line 728) | toHexShortString(allowShortChar = false) {
  method toRgb (line 734) | toRgb() {
  method toRgbString (line 746) | toRgbString() {
  method toPercentageRgb (line 755) | toPercentageRgb() {
  method toPercentageRgbString (line 767) | toPercentageRgbString() {
  method toName (line 774) | toName() {
  method toString (line 789) | toString(format) {
  method toNumber (line 830) | toNumber() {
  method clone (line 833) | clone() {
  method lighten (line 840) | lighten(amount = 10) {
  method brighten (line 850) | brighten(amount = 10) {
  method darken (line 862) | darken(amount = 10) {
  method tint (line 873) | tint(amount = 10) {
  method shade (line 881) | shade(amount = 10) {
  method desaturate (line 889) | desaturate(amount = 10) {
  method saturate (line 899) | saturate(amount = 10) {
  method greyscale (line 909) | greyscale() {
  method spin (line 916) | spin(amount) {
  method mix (line 926) | mix(color, amount = 50) {
  method analogous (line 938) | analogous(results = 6, slices = 30) {
  method complement (line 951) | complement() {
  method monochromatic (line 956) | monochromatic(results = 6) {
  method splitcomplement (line 969) | splitcomplement() {
  method onBackground (line 981) | onBackground(background) {
  method triad (line 995) | triad() {
  method tetrad (line 1001) | tetrad() {
  method polyad (line 1008) | polyad(n2) {
  method equals (line 1021) | equals(color) {
  method constructor (line 1029) | constructor() {
  method validity (line 1069) | get validity() {
  method validationMessage (line 1073) | get validationMessage() {
  method firstUpdated (line 1076) | firstUpdated() {
  method handleCopy (line 1081) | handleCopy() {
  method handleFormatToggle (line 1090) | handleFormatToggle() {
  method handleAlphaDrag (line 1098) | handleAlphaDrag(event) {
  method handleHueDrag (line 1124) | handleHueDrag(event) {
  method handleGridDrag (line 1150) | handleGridDrag(event) {
  method handleAlphaKeyDown (line 1179) | handleAlphaKeyDown(event) {
  method handleHueKeyDown (line 1207) | handleHueKeyDown(event) {
  method handleGridKeyDown (line 1235) | handleGridKeyDown(event) {
  method handleInputChange (line 1263) | handleInputChange(event) {
  method handleInputInput (line 1278) | handleInputInput(event) {
  method handleInputKeyDown (line 1282) | handleInputKeyDown(event) {
  method handleInputInvalid (line 1298) | handleInputInvalid(event) {
  method handleTouchMove (line 1302) | handleTouchMove(event) {
  method parseColor (line 1305) | parseColor(colorString) {
  method setColor (line 1377) | setColor(colorString) {
  method setLetterCase (line 1389) | setLetterCase(string) {
  method syncValues (line 1395) | async syncValues() {
  method handleAfterHide (line 1416) | handleAfterHide() {
  method handleEyeDropper (line 1419) | handleEyeDropper() {
  method selectSwatch (line 1434) | selectSwatch(color) {
  method getHexString (line 1445) | getHexString(hue, saturation, brightness, alpha = 100) {
  method stopNestedEventPropagation (line 1453) | stopNestedEventPropagation(event) {
  method handleFormatChange (line 1456) | handleFormatChange() {
  method handleOpacityChange (line 1459) | handleOpacityChange() {
  method handleValueChange (line 1462) | handleValueChange(oldValue, newValue) {
  method focus (line 1485) | focus(options) {
  method blur (line 1493) | blur() {
  method getFormattedValue (line 1505) | getFormattedValue(format = "hex") {
  method checkValidity (line 1534) | checkValidity() {
  method getForm (line 1538) | getForm() {
  method reportValidity (line 1542) | reportValidity() {
  method setCustomValidity (line 1554) | setCustomValidity(message) {
  method render (line 1558) | render() {

FILE: apps/shared/shoelace/chunks/chunk.IQJYZEEZ.js
  method constructor (line 33) | constructor() {
  method connectedCallback (line 41) | connectedCallback() {
  method disconnectedCallback (line 48) | disconnectedCallback() {
  method detectSize (line 52) | detectSize() {
  method percentageToPixels (line 56) | percentageToPixels(value) {
  method pixelsToPercentage (line 59) | pixelsToPercentage(value) {
  method handleDrag (line 62) | handleDrag(event) {
  method handleKeyDown (line 98) | handleKeyDown(event) {
  method handleResize (line 121) | handleResize(entries) {
  method handlePositionChange (line 128) | handlePositionChange() {
  method handlePositionInPixelsChange (line 133) | handlePositionInPixelsChange() {
  method handleVerticalChange (line 136) | handleVerticalChange() {
  method render (line 139) | render() {

FILE: apps/shared/shoelace/chunks/chunk.JJNPZ52S.js
  method constructor (line 5) | constructor(t2) {
  method _$AU (line 7) | get _$AU() {
  method _$AT (line 10) | _$AT(t2, e2, i2) {
  method _$AS (line 13) | _$AS(t2, e2) {
  method update (line 16) | update(t2, e2) {

FILE: apps/shared/shoelace/chunks/chunk.JJXJQJAR.js
  method constructor (line 31) | constructor() {
  method connectedCallback (line 40) | connectedCallback() {
  method handleBlur (line 44) | handleBlur() {
  method handleClick (line 48) | handleClick(e3) {
  method handleFocus (line 56) | handleFocus() {
  method handleDisabledChange (line 60) | handleDisabledChange() {
  method focus (line 64) | focus(options) {
  method blur (line 68) | blur() {
  method render (line 71) | render() {

FILE: apps/shared/shoelace/chunks/chunk.KAB3KNWB.js
  method constructor (line 46) | constructor() {
  method valueAsDate (line 85) | get valueAsDate() {
  method valueAsDate (line 91) | set valueAsDate(newValue) {
  method valueAsNumber (line 97) | get valueAsNumber() {
  method valueAsNumber (line 102) | set valueAsNumber(newValue) {
  method validity (line 107) | get validity() {
  method validationMessage (line 111) | get validationMessage() {
  method firstUpdated (line 114) | firstUpdated() {
  method handleBlur (line 117) | handleBlur() {
  method handleChange (line 121) | handleChange() {
  method handleClearClick (line 125) | handleClearClick(event) {
  method handleFocus (line 133) | handleFocus() {
  method handleInput (line 137) | handleInput() {
  method handleInvalid (line 142) | handleInvalid(event) {
  method handleKeyDown (line 146) | handleKeyDown(event) {
  method handlePasswordToggle (line 156) | handlePasswordToggle() {
  method handleDisabledChange (line 159) | handleDisabledChange() {
  method handleStepChange (line 162) | handleStepChange() {
  method handleValueChange (line 166) | async handleValueChange() {
  method focus (line 171) | focus(options) {
  method blur (line 175) | blur() {
  method select (line 179) | select() {
  method setSelectionRange (line 183) | setSelectionRange(selectionStart, selectionEnd, selectionDirection = "no...
  method setRangeText (line 187) | setRangeText(replacement, start, end, selectMode) {
  method showPicker (line 194) | showPicker() {
  method stepUp (line 200) | stepUp() {
  method stepDown (line 207) | stepDown() {
  method checkValidity (line 214) | checkValidity() {
  method getForm (line 218) | getForm() {
  method reportValidity (line 222) | reportValidity() {
  method setCustomValidity (line 226) | setCustomValidity(message) {
  method render (line 230) | render() {

FILE: apps/shared/shoelace/chunks/chunk.KAS54FN5.js
  method constructor (line 16) | constructor() {
  method render (line 20) | render() {

FILE: apps/shared/shoelace/chunks/chunk.LB5X72JH.js
  method constructor (line 39) | constructor() {
  method handleDrag (line 44) | handleDrag(event) {
  method handleKeyDown (line 57) | handleKeyDown(event) {
  method handlePositionChange (line 80) | handlePositionChange() {
  method render (line 83) | render() {

FILE: apps/shared/shoelace/chunks/chunk.LYHKREWF.js
  method render (line 13) | render() {

FILE: apps/shared/shoelace/chunks/chunk.MGGPZXNU.js
  method constructor (line 40) | constructor() {
  method validity (line 65) | get validity() {
  method validationMessage (line 69) | get validationMessage() {
  method connectedCallback (line 72) | connectedCallback() {
  method firstUpdated (line 80) | firstUpdated() {
  method disconnectedCallback (line 83) | disconnectedCallback() {
  method handleBlur (line 87) | handleBlur() {
  method handleChange (line 91) | handleChange() {
  method handleFocus (line 96) | handleFocus() {
  method handleInput (line 100) | handleInput() {
  method handleInvalid (line 104) | handleInvalid(event) {
  method setTextareaHeight (line 108) | setTextareaHeight() {
  method handleDisabledChange (line 116) | handleDisabledChange() {
  method handleRowsChange (line 119) | handleRowsChange() {
  method handleValueChange (line 122) | async handleValueChange() {
  method focus (line 128) | focus(options) {
  method blur (line 132) | blur() {
  method select (line 136) | select() {
  method scrollPosition (line 140) | scrollPosition(position) {
  method setSelectionRange (line 154) | setSelectionRange(selectionStart, selectionEnd, selectionDirection = "no...
  method setRangeText (line 158) | setRangeText(replacement, start, end, selectMode) {
  method checkValidity (line 169) | checkValidity() {
  method getForm (line 173) | getForm() {
  method reportValidity (line 177) | reportValidity() {
  method setCustomValidity (line 181) | setCustomValidity(message) {
  method render (line 185) | render() {

FILE: apps/shared/shoelace/chunks/chunk.MNWM7R7R.js
  method constructor (line 23) | constructor() {
  method executeScript (line 28) | executeScript(script) {
  method handleSrcChange (line 34) | async handleSrcChange() {
  method render (line 54) | render() {

FILE: apps/shared/shoelace/chunks/chunk.NFJPZESI.js
  method constructor (line 31) | constructor() {
  method connectedCallback (line 41) | connectedCallback() {
  method handleCloseClick (line 45) | handleCloseClick(event) {
  method handleActiveChange (line 49) | handleActiveChange() {
  method handleDisabledChange (line 52) | handleDisabledChange() {
  method focus (line 56) | focus(options) {
  method blur (line 60) | blur() {
  method render (line 63) | render() {

FILE: apps/shared/shoelace/chunks/chunk.NKJH6YIR.js
  method constructor (line 40) | constructor() {
  method validity (line 59) | get validity() {
  method validationMessage (line 63) | get validationMessage() {
  method firstUpdated (line 66) | firstUpdated() {
  method handleClick (line 69) | handleClick() {
  method handleBlur (line 74) | handleBlur() {
  method handleInput (line 78) | handleInput() {
  method handleInvalid (line 81) | handleInvalid(event) {
  method handleFocus (line 85) | handleFocus() {
  method handleDisabledChange (line 89) | handleDisabledChange() {
  method handleStateChange (line 92) | handleStateChange() {
  method click (line 98) | click() {
  method focus (line 102) | focus(options) {
  method blur (line 106) | blur() {
  method checkValidity (line 110) | checkValidity() {
  method getForm (line 114) | getForm() {
  method reportValidity (line 118) | reportValidity() {
  method setCustomValidity (line 125) | setCustomValidity(message) {
  method render (line 129) | render() {

FILE: apps/shared/shoelace/chunks/chunk.NUUXJW3X.js
  method constructor (line 27) | constructor() {
  method connectedCallback (line 50) | connectedCallback() {
  method setInitialAttributes (line 54) | setInitialAttributes() {
  method handleCheckedChange (line 59) | handleCheckedChange() {
  method handleDisabledChange (line 63) | handleDisabledChange() {
  method render (line 66) | render() {

FILE: apps/shared/shoelace/chunks/chunk.NYIIDP5N.js
  method constructor (line 3) | constructor(host, ...slotNames) {
  method hasDefaultSlot (line 14) | hasDefaultSlot() {
  method hasNamedSlot (line 32) | hasNamedSlot(name) {
  method test (line 35) | test(slotName) {
  method hostConnected (line 38) | hostConnected() {
  method hostDisconnected (line 41) | hostDisconnected() {
  function getTextContent (line 45) | function getTextContent(slot) {

FILE: apps/shared/shoelace/chunks/chunk.O27EHOBW.js
  function registerTranslation (line 12) | function registerTranslation(...translation) {
  function update (line 26) | function update() {
  method constructor (line 36) | constructor(host) {
  method hostConnected (line 40) | hostConnected() {
  method hostDisconnected (line 43) | hostDisconnected() {
  method dir (line 46) | dir() {
  method lang (line 49) | lang() {
  method getTranslationData (line 52) | getTranslationData(lang) {
  method exists (line 61) | exists(key, options) {
  method term (line 70) | term(key, ...args) {
  method date (line 88) | date(dateToFormat, options) {
  method number (line 92) | number(numberToFormat, options) {
  method relativeTime (line 96) | relativeTime(value, unit, options) {

FILE: apps/shared/shoelace/chunks/chunk.ONJD6DZB.js
  method constructor (line 20) | constructor() {
  method connectedCallback (line 25) | connectedCallback() {
  method disconnectedCallback (line 34) | disconnectedCallback() {
  method handleSlotChange (line 38) | handleSlotChange() {
  method startObserver (line 43) | startObserver() {
  method stopObserver (line 55) | stopObserver() {
  method handleDisabledChange (line 58) | handleDisabledChange() {
  method render (line 65) | render() {

FILE: apps/shared/shoelace/chunks/chunk.OOUCCK4P.js
  function syncCheckboxes (line 29) | function syncCheckboxes(changedTreeItem, initialSync = false) {
  method constructor (line 59) | constructor() {
  method connectedCallback (line 111) | async connectedCallback() {
  method disconnectedCallback (line 119) | disconnectedCallback() {
  method getExpandButtonIcon (line 124) | getExpandButtonIcon(status) {
  method selectItem (line 136) | selectItem(selectedItem) {
  method getAllTreeItems (line 159) | getAllTreeItems() {
  method focusItem (line 162) | focusItem(item) {
  method handleKeyDown (line 165) | handleKeyDown(event) {
  method handleClick (line 216) | handleClick(event) {
  method handleMouseDown (line 232) | handleMouseDown(event) {
  method handleSlotChange (line 235) | handleSlotChange() {
  method handleSelectionChange (line 239) | async handleSelectionChange() {
  method selectedItems (line 254) | get selectedItems() {
  method getFocusableItems (line 260) | getFocusableItems() {
  method render (line 274) | render() {

FILE: apps/shared/shoelace/chunks/chunk.OQXQSIH6.js
  method constructor (line 13) | constructor(host, options) {
  method hostConnected (line 109) | hostConnected() {
  method hostDisconnected (line 119) | hostDisconnected() {
  method hostUpdated (line 126) | hostUpdated() {
  method attachForm (line 139) | attachForm(form) {
  method detachForm (line 162) | detachForm() {
  method setUserInteracted (line 185) | setUserInteracted(el, hasInteracted) {
  method doAction (line 193) | doAction(type, submitter) {
  method getForm (line 218) | getForm() {
  method reset (line 223) | reset(submitter) {
  method submit (line 227) | submit(submitter) {
  method setValidity (line 234) | setValidity(isValid) {
  method updateValidity (line 249) | updateValidity() {
  method emitInvalidEvent (line 260) | emitInvalidEvent(originalInvalidEvent) {

FILE: apps/shared/shoelace/chunks/chunk.OZPGMRHW.js
  function animateTo (line 7) | function animateTo(el, keyframes, options) {
  function parseDuration (line 19) | function parseDuration(delay) {
  function prefersReducedMotion (line 29) | function prefersReducedMotion() {
  function stopAnimations (line 33) | function stopAnimations(el) {
  function shimKeyframesHeightAuto (line 45) | function shimKeyframesHeightAuto(keyframes, calculatedHeight) {

FILE: apps/shared/shoelace/chunks/chunk.PCVNFXVK.js
  method constructor (line 20) | constructor() {
  method render (line 26) | render() {

FILE: apps/shared/shoelace/chunks/chunk.PCYEP4ET.js
  method constructor (line 22) | constructor() {
  method updated (line 28) | updated(changedProps) {
  method render (line 37) | render() {

FILE: apps/shared/shoelace/chunks/chunk.PI42AQQ3.js
  method constructor (line 19) | constructor() {
  method render (line 23) | render() {

FILE: apps/shared/shoelace/chunks/chunk.PO3FKNES.js
  method constructor (line 24) | constructor() {
  method connectedCallback (line 31) | connectedCallback() {
  method handleActiveChange (line 36) | handleActiveChange() {
  method render (line 39) | render() {

FILE: apps/shared/shoelace/chunks/chunk.QNMV47GO.js
  method constructor (line 26) | constructor() {
  method handleRemoveClick (line 34) | handleRemoveClick() {
  method render (line 37) | render() {

FILE: apps/shared/shoelace/chunks/chunk.R3O4O6CQ.js
  method constructor (line 20) | constructor() {
  method connectedCallback (line 33) | connectedCallback() {
  method disconnectedCallback (line 40) | disconnectedCallback() {
  method startObserver (line 44) | startObserver() {
  method stopObserver (line 60) | stopObserver() {
  method handleDisabledChange (line 63) | handleDisabledChange() {
  method handleChange (line 70) | handleChange() {
  method render (line 74) | render() {

FILE: apps/shared/shoelace/chunks/chunk.RK73WSZS.js
  function getOffset (line 2) | function getOffset(element, parent) {
  function getScrollbarWidth (line 11) | function getScrollbarWidth() {
  function lockBodyScrolling (line 15) | function lockBodyScrolling(lockingEl) {
  function unlockBodyScrolling (line 23) | function unlockBodyScrolling(lockingEl) {
  function scrollIntoView (line 30) | function scrollIntoView(element, container, direction = "vertical", beha...

FILE: apps/shared/shoelace/chunks/chunk.SWKYFDKR.js
  method constructor (line 40) | constructor() {
  method connectedCallback (line 60) | connectedCallback() {
  method disconnectedCallback (line 65) | disconnectedCallback() {
  method handleDefaultSlotChange (line 70) | handleDefaultSlotChange() {
  method handleCheckedChange (line 81) | handleCheckedChange() {
  method handleDisabledChange (line 93) | handleDisabledChange() {
  method handleTypeChange (line 96) | handleTypeChange() {
  method getTextLabel (line 106) | getTextLabel() {
  method isSubmenu (line 109) | isSubmenu() {
  method render (line 112) | render() {

FILE: apps/shared/shoelace/chunks/chunk.TH6UOT5H.js
  function serialize (line 6) | function serialize(form) {
  function getFormControls (line 23) | function getFormControls(form) {

FILE: apps/shared/shoelace/chunks/chunk.U52RAU7L.js
  method constructor (line 41) | constructor() {
  method getValueFromMousePosition (line 54) | getValueFromMousePosition(event) {
  method getValueFromTouchPosition (line 57) | getValueFromTouchPosition(event) {
  method getValueFromXCoordinate (line 60) | getValueFromXCoordinate(coordinate) {
  method handleClick (line 66) | handleClick(event) {
  method setValue (line 73) | setValue(newValue) {
  method handleKeyDown (line 80) | handleKeyDown(event) {
  method handleMouseEnter (line 109) | handleMouseEnter(event) {
  method handleMouseMove (line 113) | handleMouseMove(event) {
  method handleMouseLeave (line 116) | handleMouseLeave() {
  method handleTouchStart (line 119) | handleTouchStart(event) {
  method handleTouchMove (line 124) | handleTouchMove(event) {
  method handleTouchEnd (line 127) | handleTouchEnd(event) {
  method roundToPrecision (line 133) | roundToPrecision(numberToRound, precision = 0.5) {
  method handleHoverValueChange (line 137) | handleHoverValueChange() {
  method handleIsHoveringChange (line 145) | handleIsHoveringChange() {
  method focus (line 154) | focus(options) {
  method blur (line 158) | blur() {
  method render (line 161) | render() {

FILE: apps/shared/shoelace/chunks/chunk.UCEQC7L4.js
  method render (line 13) | render() {

FILE: apps/shared/shoelace/chunks/chunk.UGWBMCKI.js
  function B (line 31) | function B(t, c, a, e2) {
  function C (line 48) | function C(t, c, a, e2, b, h, r, d, g, x2) {
  function z (line 58) | function z(t, c, a, e2, b, h, r, d, g, x2) {
  function A (line 73) | function A(t, c) {
  function y (line 92) | function y(t, c) {
  function w (line 157) | function w(c) {
  function B (line 168) | function B() {
  function C (line 192) | function C(c, a) {
  function z (line 319) | function z(c, a) {
  function c (line 356) | function c(b) {
  function c (line 501) | function c(b, c2) {
  method constructor (line 718) | constructor() {
  method firstUpdated (line 728) | firstUpdated() {
  method generate (line 731) | generate() {
  method render (line 748) | render() {

FILE: apps/shared/shoelace/chunks/chunk.URBIOJXY.js
  method set (line 19) | set(r5) {
  method init (line 22) | init(e4) {
  function n (line 35) | function n(t2) {
  function r2 (line 43) | function r2(r4) {
  function t (line 48) | function t(t2) {
  function e2 (line 59) | function e2(e3, r4) {
  function r3 (line 89) | function r3(r4) {
  method constructor (line 98) | constructor() {
  method emit (line 104) | emit(name, options) {
  method define (line 115) | static define(name, elementConstructor = this, options = {}) {

FILE: apps/shared/shoelace/chunks/chunk.UYM4DCTI.js
  method constructor (line 42) | constructor() {
  method firstUpdated (line 48) | firstUpdated() {
  method disconnectedCallback (line 66) | disconnectedCallback() {
  method handleSummaryClick (line 70) | handleSummaryClick(event) {
  method handleSummaryKeyDown (line 81) | handleSummaryKeyDown(event) {
  method handleOpenChange (line 99) | async handleOpenChange() {
  method show (line 129) | async show() {
  method hide (line 137) | async hide() {
  method render (line 144) | render() {

FILE: apps/shared/shoelace/chunks/chunk.V6HXGH33.js
  function getAnimationNames (line 968) | function getAnimationNames() {
  function getEasingNames (line 971) | function getEasingNames() {

FILE: apps/shared/shoelace/chunks/chunk.WF7GQGBH.js
  method constructor (line 44) | constructor() {
  method connectedCallback (line 99) | connectedCallback() {
  method firstUpdated (line 105) | firstUpdated() {
  method disconnectedCallback (line 112) | disconnectedCallback() {
  method focusOnTrigger (line 117) | focusOnTrigger() {
  method getMenu (line 123) | getMenu() {
  method handleTriggerClick (line 126) | handleTriggerClick() {
  method handleTriggerKeyDown (line 134) | async handleTriggerKeyDown(event) {
  method handleTriggerKeyUp (line 166) | handleTriggerKeyUp(event) {
  method handleTriggerSlotChange (line 171) | handleTriggerSlotChange() {
  method updateAccessibleTrigger (line 184) | updateAccessibleTrigger() {
  method show (line 202) | async show() {
  method hide (line 210) | async hide() {
  method reposition (line 221) | reposition() {
  method addOpenListeners (line 224) | addOpenListeners() {
  method removeOpenListeners (line 230) | removeOpenListeners() {
  method handleOpenChange (line 238) | async handleOpenChange() {
  method render (line 264) | render() {

FILE: apps/shared/shoelace/chunks/chunk.WSMZ72DB.js
  function uppercaseFirstLetter (line 53) | function uppercaseFirstLetter(string) {
  method constructor (line 59) | constructor() {
  method firstUpdated (line 79) | firstUpdated() {
  method disconnectedCallback (line 89) | disconnectedCallback() {
  method requestClose (line 93) | requestClose(source) {
  method addOpenListeners (line 105) | addOpenListeners() {
  method removeOpenListeners (line 108) | removeOpenListeners() {
  method handleOpenChange (line 111) | async handleOpenChange() {
  method handleNoModalChange (line 178) | handleNoModalChange() {
  method show (line 189) | async show() {
  method hide (line 197) | async hide() {
  method render (line 204) | render() {

FILE: apps/shared/shoelace/chunks/chunk.X3BMLFMG.js
  method connectedCallback (line 17) | connectedCallback() {
  method handleClick (line 21) | handleClick(event) {
  method handleKeyDown (line 35) | handleKeyDown(event) {
  method handleMouseDown (line 68) | handleMouseDown(event) {
  method handleSlotChange (line 74) | handleSlotChange() {
  method isMenuItem (line 80) | isMenuItem(item) {
  method getAllItems (line 85) | getAllItems() {
  method getCurrentItem (line 97) | getCurrentItem() {
  method setCurrentItem (line 104) | setCurrentItem(item) {
  method render (line 110) | render() {

FILE: apps/shared/shoelace/chunks/chunk.XAOA43RZ.js
  function watch (line 6) | function watch(propertyName, options) {

FILE: apps/shared/shoelace/chunks/chunk.XFEYAMGW.js
  method constructor (line 24) | constructor() {
  method getSeparator (line 31) | getSeparator() {
  method handleSlotChange (line 39) | handleSlotChange() {
  method render (line 58) | render() {

FILE: apps/shared/shoelace/chunks/chunk.XKOG42H3.js
  method constructor (line 14) | constructor(t2) {
  method render (line 19) | render(t2) {
  method update (line 25) | update(e2, [r]) {

FILE: apps/shared/shoelace/chunks/chunk.XNEONNEJ.js
  function requestInclude (line 3) | function requestInclude(src, mode = "cors") {

FILE: apps/shared/shoelace/chunks/chunk.XQWIVF2H.js
  function n2 (line 48) | function n2(n3, r2, t) {
  method constructor (line 54) | constructor() {
  method isTreeItem (line 66) | static isTreeItem(node) {
  method connectedCallback (line 69) | connectedCallback() {
  method firstUpdated (line 77) | firstUpdated() {
  method animateCollapse (line 83) | async animateCollapse() {
  method isNestedItem (line 96) | isNestedItem() {
  method handleChildrenSlotChange (line 100) | handleChildrenSlotChange() {
  method willUpdate (line 104) | willUpdate(changedProperties) {
  method animateExpand (line 109) | async animateExpand() {
  method handleLoadingChange (line 122) | handleLoadingChange() {
  method handleDisabledChange (line 128) | handleDisabledChange() {
  method handleSelectedChange (line 131) | handleSelectedChange() {
  method handleExpandedChange (line 134) | handleExpandedChange() {
  method handleExpandAnimation (line 141) | handleExpandAnimation() {
  method handleLazyChange (line 153) | handleLazyChange() {
  method getChildrenItems (line 157) | getChildrenItems({ includeDisabled = true } = {}) {
  method render (line 162) | render() {

FILE: apps/shared/shoelace/chunks/chunk.XR5X7BVH.js
  method constructor (line 35) | constructor() {
  method handleCopy (line 50) | async handleCopy() {
  method showStatus (line 99) | async showStatus(status) {
  method render (line 122) | render() {

FILE: apps/shared/shoelace/chunks/chunk.YCHBWCKL.js
  function isTakingUpSpace (line 2) | function isTakingUpSpace(elem) {
  function isTabbable (line 5) | function isTabbable(el) {
  function getTabbableBoundary (line 33) | function getTabbableBoundary(root) {
  function getTabbableElements (line 40) | function getTabbableElements(root) {

FILE: apps/shared/shoelace/chunks/chunk.YIKIE7BV.js
  method constructor (line 24) | constructor() {
  method currentTime (line 50) | get currentTime() {
  method currentTime (line 54) | set currentTime(time) {
  method connectedCallback (line 59) | connectedCallback() {
  method disconnectedCallback (line 63) | disconnectedCallback() {
  method handleSlotChange (line 67) | handleSlotChange() {
  method createAnimation (line 71) | async createAnimation() {
  method destroyAnimation (line 102) | destroyAnimation() {
  method handleAnimationChange (line 110) | handleAnimationChange() {
  method handlePlayChange (line 116) | handlePlayChange() {
  method handlePlaybackRateChange (line 131) | handlePlaybackRateChange() {
  method cancel (line 137) | cancel() {
  method finish (line 142) | finish() {
  method render (line 146) | render() {

FILE: apps/shared/shoelace/chunks/chunk.YIYIQEKO.js
  method constructor (line 31) | constructor() {
  method connectedCallback (line 41) | connectedCallback() {
  method handleDefaultSlotChange (line 46) | handleDefaultSlotChange() {
  method handleMouseEnter (line 57) | handleMouseEnter() {
  method handleMouseLeave (line 60) | handleMouseLeave() {
  method handleDisabledChange (line 63) | handleDisabledChange() {
  method handleSelectedChange (line 66) | handleSelectedChange() {
  method handleValueChange (line 69) | handleValueChange() {
  method getTextLabel (line 79) | getTextLabel() {
  method render (line 83) | render() {

FILE: apps/shared/shoelace/chunks/chunk.YWWKTKUY.js
  method constructor (line 27) | constructor() {
  method handleImageChange (line 36) | handleImageChange() {
  method render (line 39) | render() {

FILE: apps/shared/shoelace/chunks/chunk.ZDAKW6TD.js
  method constructor (line 17) | constructor() {
  method connectedCallback (line 21) | connectedCallback() {
  method handleVerticalChange (line 25) | handleVerticalChange() {

FILE: apps/shared/shoelace/chunks/chunk.ZL53POKZ.js
  function watchIcon (line 11) | function watchIcon(icon) {
  function unwatchIcon (line 14) | function unwatchIcon(icon) {
  function getIconLibrary (line 17) | function getIconLibrary(name) {
  function registerIconLibrary (line 20) | function registerIconLibrary(name, options) {
  function unregisterIconLibrary (line 34) | function unregisterIconLibrary(name) {

FILE: apps/shared/shoelace/shoelace-autoloader.js
  function discover (line 16) | async function discover(root) {
  function register (line 26) | function register(tagName) {

FILE: apps/shared/xac/bridge.js
  class Bridge (line 26) | class Bridge {
    method constructor (line 27) | constructor() {
    method log (line 37) | log(msg) {
    method error (line 41) | error(msg) {
    method handleEvent (line 45) | handleEvent(event) {
    method onHello (line 77) | onHello(data) {
    method onRequest (line 85) | onRequest(data) {
    method onResponse (line 97) | onResponse(data) {
    method onBridgeRequest (line 103) | onBridgeRequest(data) {
    method onBridgeResponse (line 113) | onBridgeResponse(data) {

FILE: apps/shared/xac/peer.js
  constant ORIGIN (line 3) | const ORIGIN =
  class Peer (line 8) | class Peer extends EventTarget {
    method constructor (line 9) | constructor(callers, impl) {
    method log (line 24) | log(msg) {
    method error (line 28) | error(msg) {
    method init (line 32) | async init(callers = []) {
    method sendResponse (line 70) | sendResponse(data, result, error) {
    method onBridgeRequest (line 81) | onBridgeRequest(data) {
    method onBridgeResponse (line 97) | onBridgeResponse(data) {
    method loadFrame (line 116) | loadFrame() {
    method nextUniqueId (line 137) | nextUniqueId() {
    method send (line 142) | async send(target, fn, params) {

FILE: apps/system/components/activity_chooser.js
  class ActivityChooser (line 5) | class ActivityChooser extends HTMLElement {
    method constructor (line 6) | constructor() {
    method open (line 28) | async open(providers) {
    method reset (line 51) | reset() {
    method makeChoice (line 58) | makeChoice(event) {
    method canceled (line 71) | canceled() {
    method render (line 84) | render() {

FILE: apps/system/components/apps_list.js
  class AppIcon (line 5) | class AppIcon extends HTMLElement {
    method constructor (line 6) | constructor(data) {
    method init (line 12) | init(data) {
    method connectedCallback (line 21) | connectedCallback() {
    method disconnectedCallback (line 45) | disconnectedCallback() {
  class AppsList (line 54) | class AppsList extends LitElement {
    method constructor (line 55) | constructor() {
    method properties (line 68) | static get properties() {
    method log (line 74) | log(msg) {
    method open (line 78) | open() {
    method close (line 95) | close() {
    method toggle (line 103) | toggle() {
    method handleEvent (line 111) | async handleEvent(event) {
    method buildAppsNodes (line 139) | async buildAppsNodes() {
    method captureContextMenuEvent (line 164) | captureContextMenuEvent(event) {
    method openContextMenu (line 170) | openContextMenu(event, data) {
    method closeContextMenu (line 244) | closeContextMenu() {
    method addToHome (line 259) | async addToHome() {
    method uninstall (line 271) | async uninstall() {
    method updated (line 282) | updated() {
    method render (line 286) | render() {

FILE: apps/system/components/audio_volume_indicator.js
  class AudioVolumeIndicator (line 3) | class AudioVolumeIndicator extends LitElement {
    method constructor (line 4) | constructor() {
    method properties (line 11) | static get properties() {
    method render (line 18) | render() {
    method setValue (line 27) | setValue(value) {

FILE: apps/system/components/browser_action_popup.js
  class BrowserActionPopup (line 4) | class BrowserActionPopup extends HTMLElement {
    method constructor (line 5) | constructor() {
    method show (line 37) | show() {
    method hide (line 41) | hide() {
    method setAction (line 47) | setAction(action, browsingContextGroupId) {
    method render (line 54) | render() {

FILE: apps/system/components/confirm_dialog.js
  class ConfirmDialog (line 3) | class ConfirmDialog extends LitElement {
    method constructor (line 4) | constructor() {
    method properties (line 14) | static get properties() {
    method log (line 20) | log(msg) {
    method error (line 24) | error(msg) {
    method updated (line 28) | updated() {
    method render (line 43) | render() {
    method dialog (line 73) | get dialog() {
    method close (line 77) | close() {
    method buttonClick (line 82) | buttonClick(event) {
    method open (line 116) | open(data) {

FILE: apps/system/components/content_window.js
  class ProcessManager (line 9) | class ProcessManager {
    method constructor (line 10) | constructor() {
    method setForeground (line 14) | setForeground(pid) {
    method setBackground (line 33) | setBackground(pid, tryToKeep = false) {
    method remove (line 55) | remove(pid) {
    method moveToForeground (line 71) | moveToForeground(newFg, oldFg, tryToKeep) {
    method whenKilled (line 90) | whenKilled(killedPid, newFg) {
  class PermissionsHelper (line 131) | class PermissionsHelper {
    method constructor (line 132) | constructor(drawer, dispatcher) {
    method dispatchResult (line 145) | dispatchResult(detail) {
    method handleEvent (line 152) | handleEvent(event) {
    method iconFor (line 190) | iconFor(permName) {
    method prompt (line 204) | prompt(data) {
    method cancel (line 242) | cancel() {
  class PromptHelper (line 248) | class PromptHelper {
    method constructor (line 249) | constructor(container, detail) {
    method handleEvent (line 287) | handleEvent(event) {
    method done (line 307) | done() {
    method reset (line 313) | reset() {
  class ContentWindow (line 333) | class ContentWindow extends HTMLElement {
    method constructor (line 334) | constructor() {
    method addSiteInfoListeners (line 364) | addSiteInfoListeners() {
    method removeSiteInfoListeners (line 369) | removeSiteInfoListeners() {
    method setConfig (line 376) | setConfig(config) {
    method disableContentBlocking (line 388) | disableContentBlocking(shouldReload = true) {
    method enableContentBlocking (line 399) | enableContentBlocking(shouldReload = true) {
    method handleEvent (line 412) | async handleEvent(event) {
    method maybeSetUA (line 441) | maybeSetUA(url) {
    method connectedCallback (line 453) | connectedCallback() {
    method toggleMutedState (line 674) | toggleMutedState() {
    method initWebView (line 686) | initWebView() {
    method uninitWebView (line 772) | uninitWebView() {
    method addInlineActivity (line 787) | addInlineActivity(contentWindow) {
    method closeInlineActivity (line 793) | closeInlineActivity() {
    method hasInlineActivity (line 801) | hasInlineActivity() {
    method getInlineActivity (line 805) | getInlineActivity() {
    method handleOverscrollEvent (line 809) | handleOverscrollEvent(event) {
    method recreate (line 841) | recreate() {
    method cleanup (line 856) | cleanup() {
    method disconnectedCallback (line 870) | disconnectedCallback() {
    method scrollToTop (line 877) | scrollToTop() {
    method scrollToBottom (line 881) | scrollToBottom() {
    method zoomIn (line 885) | zoomIn() {
    method zoomOut (line 895) | zoomOut() {
    method zoomReset (line 905) | zoomReset() {
    method focus (line 913) | focus() {
    method activate (line 917) | activate() {
    method deactivate (line 966) | deactivate() {
    method dispatchStateUpdate (line 1003) | dispatchStateUpdate(forced = false) {
    method updateUi (line 1013) | async updateUi(placesUpdateNeeded) {
    method goTo (line 1033) | goTo(url) {
    method goBack (line 1037) | goBack() {
    method goForward (line 1041) | goForward() {
    method reload (line 1045) | reload(forced = false) {
    method themeColorChanged (line 1049) | themeColorChanged(color) {
    method hideLoader (line 1062) | hideLoader() {
    method manageModalPrompt (line 1071) | async manageModalPrompt(detail) {
    method handleBrowserEvent (line 1079) | async handleBrowserEvent(event) {
    method maybeAddOpenSearch (line 1364) | async maybeAddOpenSearch(url) {
    method iconchanged (line 1381) | async iconchanged(data) {
    method updateScreenshot (line 1457) | updateScreenshot() {
    method showSelectUI (line 1477) | async showSelectUI(data) {
    method savePage (line 1488) | savePage() {
    method saveAsPDF (line 1492) | async saveAsPDF() {

FILE: apps/system/components/context_menu.js
  class ContextMenu (line 54) | class ContextMenu extends HTMLElement {
    method constructor (line 55) | constructor() {
    method openUrlInNewTab (line 216) | openUrlInNewTab(url) {
    method openUrlInNewPrivateTab (line 227) | openUrlInNewPrivateTab(url) {
    method shareImage (line 241) | async shareImage(url) {
    method shareLink (line 263) | async shareLink(url) {
    method close (line 281) | close() {
    method open (line 285) | open(data, contentWindow) {

FILE: apps/system/components/input_method.js
  class InputMethod (line 3) | class InputMethod extends HTMLElement {
    method constructor (line 4) | constructor() {
    method connectedCallback (line 13) | connectedCallback() {
    method activate (line 37) | activate() {
    method deactivate (line 50) | deactivate() {
    method init (line 66) | init() {

FILE: apps/system/components/lock_screen.js
  class LockValue (line 6) | class LockValue {
    method constructor (line 7) | constructor(node) {
    method updateDom (line 14) | updateDom() {
    method reset (line 28) | reset() {
    method add (line 34) | add(val) {
    method delete (line 44) | delete() {
    method get (line 56) | get() {
  class LockScreen (line 61) | class LockScreen extends HTMLElement {
    method constructor (line 62) | constructor() {
    method launch (line 178) | launch(url, options = {}) {
    method initFlashlight (line 198) | initFlashlight() {
    method onDelete (line 223) | onDelete() {
    method onCheck (line 227) | onCheck() {
    method onDigit (line 233) | onDigit(event) {
    method updateTimeAndDate (line 242) | updateTimeAndDate() {
    method reset (line 268) | reset() {
    method temporaryUnlock (line 275) | temporaryUnlock() {
    method unlock (line 283) | async unlock() {
    method lock (line 308) | async lock() {
    method isLocked (line 337) | isLocked() {
    method setBackground (line 341) | setBackground(background) {

FILE: apps/system/components/media_controller.js
  class MediaController (line 4) | class MediaController extends LitElement {
    method constructor (line 5) | constructor(controller, meta) {
    method styles (line 16) | static get styles() {
    method updateController (line 53) | updateController(meta) {
    method updated (line 57) | updated() {
    method render (line 65) | render() {
    method togglePlay (line 105) | togglePlay() {
    method prevTrack (line 113) | prevTrack() {
    method nextTrack (line 117) | nextTrack() {
  class MediaControllerList (line 127) | class MediaControllerList extends HTMLElement {
    method constructor (line 128) | constructor() {
    method getMediaController (line 139) | getMediaController(controller) {
    method mediaControllerChange (line 143) | mediaControllerChange(data) {

FILE: apps/system/components/notification.js
  class WebNotification (line 4) | class WebNotification extends LitElement {
    method constructor (line 5) | constructor(wrapper) {
    method styles (line 17) | static get styles() {
    method setNotification (line 41) | setNotification(wrapper) {
    method render (line 48) | render() {
    method handleEvent (line 101) | handleEvent(event) {
    method clicked (line 111) | clicked(event) {
    method onAction (line 118) | onAction(event) {
    method close (line 125) | close() {

FILE: apps/system/components/publish_dialog.js
  class PublishDialog (line 3) | class PublishDialog extends LitElement {
    method constructor (line 4) | constructor() {
    method reset (line 14) | reset() {
    method properties (line 20) | static get properties() {
    method log (line 27) | log(msg) {
    method error (line 31) | error(msg) {
    method updated (line 35) | updated() {
    method render (line 39) | render() {
    method dialog (line 91) | get dialog() {
    method setPublic (line 95) | setPublic() {
    method setPrivate (line 99) | setPrivate() {
    method onPasswordChange (line 103) | onPasswordChange(event) {
    method close (line 107) | close() {
    method buttonClick (line 112) | buttonClick(event) {
    method open (line 126) | open(data) {

FILE: apps/system/components/quick_settings.js
  class QuickSettings (line 3) | class QuickSettings extends HTMLElement {
    method constructor (line 4) | constructor() {
    method connectedCallback (line 87) | connectedCallback() {
    method initBrightness (line 93) | async initBrightness() {
    method initTor (line 117) | async initTor() {
    method initFlashlight (line 194) | initFlashlight() {
    method initWifi (line 219) | initWifi() {
    method addOrUpdateNotification (line 247) | async addOrUpdateNotification(notification) {
    method removeNotification (line 266) | async removeNotification(notification) {
    method getNotifications (line 274) | getNotifications() {
    method initP2P (line 285) | initP2P() {
    method updatePeerApps (line 291) | async updatePeerApps() {
    method addPeer (line 312) | async addPeer(peer, handler) {
    method removePeer (line 359) | removePeer(peer) {
    method peerPaired (line 367) | peerPaired(session) {
    method handleEvent (line 398) | handleEvent(event) {
    method initTelephony (line 438) | initTelephony() {
    method safeExtensionId (line 547) | safeExtensionId(id) {
    method addBrowserAction (line 554) | addBrowserAction(extensionId, node) {
    method removeBrowserAction (line 563) | removeBrowserAction(extensionId) {
    method getBrowserAction (line 568) | getBrowserAction(extensionId) {

FILE: apps/system/components/reboot_menu.js
  class RebootMenu (line 3) | class RebootMenu extends HTMLElement {
    method constructor (line 4) | constructor() {
    method takeScreenshot (line 56) | async takeScreenshot() {
    method open (line 91) | open() {
    method close (line 96) | close() {

FILE: apps/system/components/select_ui.js
  class SelectUi (line 58) | class SelectUi extends HTMLElement {
    method constructor (line 59) | constructor() {
    method setData (line 99) | setData(data) {
    method reset (line 141) | reset() {

FILE: apps/system/components/site_info.js
  class SiteInfo (line 3) | class SiteInfo extends HTMLElement {
    method constructor (line 4) | constructor() {
    method close (line 117) | close() {
    method updateTosdr (line 124) | async updateTosdr() {
    method initSearchEngines (line 184) | async initSearchEngines() {
    method showSearchEngines (line 239) | async showSearchEngines() {
    method hideSearchEngines (line 254) | async hideSearchEngines() {
    method inShadowRoot (line 258) | inShadowRoot(selector) {
    method updateState (line 262) | updateState(_name, state) {
    method open (line 329) | open() {
    method maybeAppForManifest (line 387) | async maybeAppForManifest(manifestUrl) {
    method updateFavorite (line 401) | async updateFavorite(node, label) {
    method addToFavorites (line 429) | async addToFavorites() {
    method addToHome (line 487) | async addToHome(activityData) {
    method setState (line 513) | setState(state) {

FILE: apps/system/components/status_bar.js
  class SwipeDetector (line 3) | class SwipeDetector extends EventTarget {
    method constructor (line 4) | constructor(elem) {
    method log (line 26) | log(msg) {
    method handleEvent (line 30) | handleEvent(event) {
  class StatusBar (line 69) | class StatusBar extends HTMLElement {
    method constructor (line 70) | constructor() {
    method setupSwipeDetector (line 259) | setupSwipeDetector() {
    method triggerCarousel (line 283) | triggerCarousel() {
    method updateClock (line 296) | updateClock(force = false) {
    method updateFrameList (line 304) | updateFrameList(_name, list) {
    method openCarousel (line 328) | openCarousel() {
    method closeCarousel (line 339) | closeCarousel() {
    method updateNotifications (line 349) | updateNotifications(_name, count) {
    method getElem (line 358) | getElem(selector) {
    method displayLocalTime (line 366) | displayLocalTime() {
    method updateDisplayState (line 383) | updateDisplayState(state) {
    method updateHomescreenState (line 398) | updateHomescreenState(state) {
    method updateContentState (line 405) | updateContentState(state) {
    method setTopStatusBarBackground (line 475) | setTopStatusBarBackground(color) {
    method updateBackgroundColor (line 483) | updateBackgroundColor(backgroundColor, enterCarousel = false) {
    method updateState (line 562) | updateState(_name, state) {

FILE: apps/system/components/status_icons.js
  class StatusIcons (line 3) | class StatusIcons extends LitElement {
    method constructor (line 4) | constructor() {
    method properties (line 13) | static get properties() {
    method render (line 22) | render() {
    method startAudio (line 44) | startAudio() {
    method stopAudio (line 48) | stopAudio() {
    method startVideo (line 52) | startVideo() {
    method stopVideo (line 56) | stopVideo() {

FILE: apps/system/components/text_share.js
  class TextShare (line 4) | class TextShare extends LitElement {
    method constructor (line 5) | constructor() {
    method properties (line 12) | static get properties() {
    method log (line 19) | log(msg) {
    method error (line 23) | error(msg) {
    method updated (line 27) | updated() {
    method render (line 31) | render() {
    method dialog (line 70) | get dialog() {
    method copyToClipboard (line 74) | copyToClipboard() {
    method share (line 86) | share() {
    method close (line 91) | close() {
    method open (line 97) | open(data) {

FILE: apps/system/components/ucan.js
  class UcanDialog (line 5) | class UcanDialog extends LitElement {
    method constructor (line 6) | constructor() {
    method reset (line 16) | reset() {
    method properties (line 20) | static get properties() {
    method log (line 26) | log(msg) {
    method error (line 30) | error(msg) {
    method updated (line 34) | updated() {
    method mapPermission (line 39) | mapPermission(scope, permission) {
    method render (line 52) | render() {
    method dialog (line 150) | get dialog() {
    method close (line 154) | close() {
    method buttonClick (line 159) | buttonClick(event) {
    method open (line 183) | open(requested, dids) {
  class Ucan (line 204) | class Ucan {
    method constructor (line 205) | constructor() {
    method init (line 209) | async init() {
    method grantCapabilities (line 221) | grantCapabilities(requested) {
    method log (line 267) | log(msg) {
    method error (line 271) | error(msg) {

FILE: apps/system/components/url_edit.js
  class UrlEdit (line 3) | class UrlEdit extends LitElement {
    method constructor (line 4) | constructor() {
    method properties (line 44) | static get properties() {
    method setUrl (line 50) | setUrl(url) {
    method updated (line 56) | updated() {
    method show (line 73) | show() {
    method hide (line 77) | hide() {
    method updateResults (line 84) | async updateResults(query) {
    method inputChanged (line 112) | inputChanged(event) {
    method keyPress (line 121) | keyPress(event) {
    method onTabKey (line 133) | onTabKey(event) {
    method navigateTo (line 161) | navigateTo(input) {
    method connectedCallback (line 187) | connectedCallback() {
    method render (line 194) | render() {
  class PlacesItem (line 214) | class PlacesItem extends HTMLElement {
    method constructor (line 215) | constructor(data) {
    method variant (line 221) | variant(name = "default") {
    method url (line 230) | get url() {
    method connectedCallback (line 234) | connectedCallback() {
    method disconnectedCallback (line 255) | disconnectedCallback() {

FILE: apps/system/components/wakeup_screen.js
  class WakeUpScreen (line 6) | class WakeUpScreen extends HTMLElement {
    method constructor (line 7) | constructor() {
    method open (line 45) | open() {
    method updateNotifications (line 65) | updateNotifications() {
    method close (line 96) | close() {
    method updateTimeAndDate (line 104) | updateTimeAndDate() {

FILE: apps/system/components/web_extensions.js
  function extColorAsCss (line 17) | function extColorAsCss(color) {
  class BrowserAction (line 27) | class BrowserAction extends LitElement {
    method constructor (line 28) | constructor(extensionId, tabId, action) {
    method styles (line 36) | static get styles() {
    method properties (line 67) | static get properties() {
    method setAction (line 77) | setAction(action) {
    method render (line 120) | render() {

FILE: apps/system/components/window_manager.js
  class WindowManagerKeys (line 7) | class WindowManagerKeys {
    method constructor (line 8) | constructor(wm) {
    method changeCarouselState (line 22) | changeCarouselState(open) {
    method switchToCurrentFrame (line 26) | switchToCurrentFrame() {
    method handleEvent (line 38) | handleEvent(event) {
  class CaretManager (line 202) | class CaretManager {
    method constructor (line 203) | constructor() {
    method handleEvent (line 225) | handleEvent(event) {
    method caretStateChanged (line 253) | caretStateChanged(event) {
  class WindowManager (line 314) | class WindowManager extends HTMLElement {
    method constructor (line 315) | constructor() {
    method log (line 323) | log(msg) {
    method error (line 327) | error(msg) {
    method connectedCallback (line 331) | connectedCallback() {
    method reloadCurrentFrame (line 454) | reloadCurrentFrame(forced = false) {
    method zoomInCurrentFrame (line 458) | zoomInCurrentFrame() {
    method zoomOutCurrentFrame (line 462) | zoomOutCurrentFrame() {
    method zoomResetCurrentFrame (line 466) | zoomResetCurrentFrame() {
    method toggleMutedState (line 470) | toggleMutedState(frameId) {
    method splitScreen (line 474) | splitScreen() {
    method sleep (line 501) | sleep() {
    method wakeUp (line 505) | wakeUp() {
    method showSelectUI (line 513) | showSelectUI(data) {
    method openFrame (line 527) | openFrame(url = "about:blank", config = {}) {
    method openAbout (line 646) | openAbout(url) {
    method handleEvent (line 654) | handleEvent(event) {
    method currentFrame (line 676) | currentFrame() {
    method currentWebExtensionTabId (line 680) | currentWebExtensionTabId() {
    method goBack (line 684) | goBack() {
    method goForward (line 688) | goForward() {
    method closeFrame (line 692) | closeFrame(id = "<current>", goTo = null) {
    method updateFrameList (line 754) | updateFrameList() {
    method switchToFrame (line 775) | switchToFrame(id, behavior = "instant", updatePreviousFrame = false) {
    method forceFrameStateUpdate (line 809) | forceFrameStateUpdate(id) {
    method switchToWebView (line 816) | switchToWebView(webView, updatePreviousFrame = false) {
    method goHome (line 825) | goHome() {
    method switchHome (line 845) | switchHome(url, display) {
    method homescreenFrame (line 853) | homescreenFrame() {
    method openCaptivePortal (line 861) | openCaptivePortal() {
    method closeCaptivePortal (line 868) | closeCaptivePortal() {
    method openCarousel (line 876) | async openCarousel() {
    method closeCarousel (line 1173) | closeCarousel() {
    method lockSwipe (line 1204) | lockSwipe() {
    method unlockSwipe (line 1209) | unlockSwipe() {

FILE: apps/system/js/actions_dispatcher.js
  class ActionsDispatcher (line 5) | class ActionsDispatcher {
    method constructor (line 6) | constructor() {
    method handler_for (line 11) | handler_for(action_name) {
    method addListener (line 21) | addListener(action_name, listener) {
    method removeListener (line 30) | removeListener(action_name, listener) {
    method dispatch (line 41) | dispatch(action_name, data) {

FILE: apps/system/js/activity_handler.js
  function postActivityResult (line 1) | function postActivityResult(result) {

FILE: apps/system/js/audio_volume/gonk.js
  class AudioVolumeManager (line 1) | class AudioVolumeManager {
    method constructor (line 2) | constructor() {
    method init (line 10) | async init() {
    method audioChannelChanged (line 51) | audioChannelChanged(event) {
    method handleEvent (line 55) | handleEvent(event) {
    method setAudioChannel (line 72) | setAudioChannel(channel) {
    method getChannel (line 79) | getChannel() {
    method calculateVolume (line 96) | calculateVolume(curVolume, delta, channel) {
    method getVibrationAndMuteState (line 127) | getVibrationAndMuteState(delta, channel) {
    method notifyByVibrating (line 168) | notifyByVibrating() {
    method showVolume (line 172) | showVolume(channel, volume) {
    method changeVolume (line 179) | async changeVolume(delta) {

FILE: apps/system/js/audio_volume/linux.js
  function setAudioVolume (line 3) | function setAudioVolume(value) {
  function setupAudio (line 36) | async function setupAudio() {

FILE: apps/system/js/battery.js
  class BatteryHelper (line 6) | class BatteryHelper {
    method constructor (line 7) | constructor() {
    method addListener (line 37) | addListener(name, icon, level = null) {
    method removeListener (line 42) | removeListener(name) {
    method updateBatteryInfo (line 46) | updateBatteryInfo() {
    method updateBatteryDisplay (line 63) | updateBatteryDisplay(icon = null, level = null) {

FILE: apps/system/js/bootstrap.js
  function timingFromStart (line 8) | function timingFromStart(label) {
  function hideLogo (line 13) | function hideLogo() {
  function embedderReady (line 34) | function embedderReady() {
  function daemonReady (line 49) | function daemonReady() {
  class HomescreenManager (line 63) | class HomescreenManager {
    method constructor (line 64) | constructor() {
    method launchInfo (line 68) | async launchInfo() {
    method setInfo (line 76) | async setInfo(manifestUrl) {
    method init (line 88) | async init() {
  function enableRadio (line 134) | async function enableRadio(conn, state) {
  function setupTelephony (line 147) | async function setupTelephony() {
  method randomSearchEngineUrl (line 246) | randomSearchEngineUrl(text) {
  function setupWebExtensions (line 284) | function setupWebExtensions() {
  function manageFTU (line 309) | async function manageFTU() {
  class TorProxyChannelFilter (line 338) | class TorProxyChannelFilter {
    method constructor (line 339) | constructor() {
    method init (line 354) | async init() {
    method applyFilter (line 368) | applyFilter(channel, defaultProxyInfo, proxyFilter) {
  function configureTopStatus (line 410) | function configureTopStatus() {

FILE: apps/system/js/config.js
  function addStylesheet (line 18) | function addStylesheet(url) {
  function addSharedStylesheet (line 25) | function addSharedStylesheet(url) {
  function loadScript (line 29) | function loadScript(url, defer = false) {
  function loadSharedScript (line 39) | function loadSharedScript(url) {
  function depGraphLoaded (line 86) | function depGraphLoaded() {
  class MinuteTimer (line 94) | class MinuteTimer extends EventTarget {
    method constructor (line 95) | constructor() {
    method schedule (line 102) | schedule() {
    method suspend (line 121) | suspend() {
    method resume (line 129) | resume() {
  class Toaster (line 139) | class Toaster {
    method createToaster (line 140) | createToaster() {
    method show (line 151) | show(text, kind = "primary") {

FILE: apps/system/js/downloads.js
  class Downloads (line 4) | class Downloads {
    method constructor (line 5) | constructor() {
    method log (line 14) | log(msg) {
    method dumpDownload (line 18) | dumpDownload(download) {
    method showNotification (line 22) | async showNotification(download) {
    method saveDownload (line 49) | async saveDownload(download) {
    method import (line 55) | async import(path) {
    method handleEvent (line 61) | handleEvent(event) {

FILE: apps/system/js/embedding.js
  function log (line 52) | function log(msg) {
  function notificationsManager (line 57) | function notificationsManager() {
  method openURI (line 65) | openURI(aURI, aOpenWindowInfo, aWhere, aFlags, aTriggeringPrincipal, aCs...
  method createContentWindow (line 70) | createContentWindow(
  method openURIInFrame (line 96) | openURIInFrame(aURI, aParams, aWhere, aFlags, aName) {
  method createContentWindowInFrame (line 112) | createContentWindowInFrame(aURI, aParams, aWhere, aFlags, aName) {
  method canClose (line 148) | canClose() {
  method delayPreallocatedProcess (line 159) | delayPreallocatedProcess() {
  method provideProcess (line 169) | provideProcess(aType, aProcesses, aMaxCount) {
  method suggestServiceWorkerProcess (line 191) | suggestServiceWorkerProcess(scope) {
  method showNotification (line 217) | showNotification(notification) {
  method closeNotification (line 222) | closeNotification(id) {
  method show (line 230) | async show(details) {
  method focusChanged (line 274) | focusChanged(detail) {
  method choseActivity (line 280) | choseActivity(detail) {

FILE: apps/system/js/filecoin.js
  constant WEB3_STORAGE_ENDPOINT (line 4) | const WEB3_STORAGE_ENDPOINT = "https://api.web3.storage/upload";
  class FileCoinService (line 6) | class FileCoinService extends EventTarget {
    method constructor (line 7) | constructor(key) {
    method log (line 12) | log(msg) {
    method upload (line 16) | upload(blob, name) {

FILE: apps/system/js/flashlight.js
  class Flashlight (line 3) | class Flashlight {
    method constructor (line 4) | constructor() {
    method ensureManager (line 8) | ensureManager() {
    method update (line 29) | update() {
    method enabled (line 36) | get enabled() {
    method enabled (line 40) | set enabled(value) {
    method toggle (line 48) | toggle() {

FILE: apps/system/js/haptic_feedback.js
  class HapticFeedback (line 3) | class HapticFeedback {
    method register (line 4) | register(element) {
    method unregister (line 8) | unregister(element) {
    method handleEvent (line 12) | handleEvent(_event) {

FILE: apps/system/js/input_method.js
  class InputMethod (line 1) | class InputMethod {
    method log (line 2) | log(msg) {
    method constructor (line 10) | constructor() {
    method adjustState (line 52) | adjustState() {
    method open (line 61) | open() {
    method close (line 105) | close() {

FILE: apps/system/js/ipfs_publisher.js
  class PasswordBasedSecret (line 7) | class PasswordBasedSecret {
    method constructor (line 8) | constructor(password) {
    method getKeyMaterial (line 12) | async getKeyMaterial() {
    method getSymKey (line 23) | async getSymKey() {
    method encrypt (line 40) | async encrypt(plaintext) {
    method decrypt (line 51) | async decrypt(ciphertext) {
  class IpfsPublisher (line 63) | class IpfsPublisher {
    method constructor (line 64) | constructor(resource) {
    method log (line 68) | log(msg) {
    method error (line 72) | error(msg) {
    method updateNotification (line 76) | updateNotification(data) {
    method publish (line 85) | async publish(blob, password) {
  class IpfsObserver (line 205) | class IpfsObserver {
    method constructor (line 206) | constructor() {
    method log (line 214) | log(msg) {
    method error (line 218) | error(msg) {
    method ensureContainer (line 222) | async ensureContainer() {
    method init (line 234) | async init() {
    method handleEvent (line 356) | async handleEvent(event) {

FILE: apps/system/js/keys.js
  class KeyManager (line 9) | class KeyManager {
    method constructor (line 10) | constructor() {
    method addEvents (line 29) | addEvents() {
    method handleEvent (line 34) | handleEvent(event) {
    method registerShortPress (line 72) | registerShortPress(key, handler) {
    method registerShortPressAction (line 84) | registerShortPressAction(key, alternate = undefined) {
    method registerLongPress (line 93) | registerLongPress(key, handler) {
    method registerLongPressAction (line 104) | registerLongPressAction(key, alternate = undefined) {

FILE: apps/system/js/notifications.js
  function safeForDomId (line 5) | function safeForDomId(message) {
  class NotificationsManager (line 17) | class NotificationsManager {
    method constructor (line 18) | constructor() {
    method status (line 23) | status() {
    method show (line 32) | show(notification) {
    method remove (line 54) | remove(id) {
    method close (line 59) | close(id) {
  class NotificationWrapper (line 71) | class NotificationWrapper {
    method constructor (line 72) | constructor(notification, manager) {
    method click (line 78) | click(action) {
    method close (line 89) | close() {
    method remove (line 95) | remove() {
    method update (line 99) | update(notification) {

FILE: apps/system/js/p2p.js
  constant CONNECT_ERROR_KIND (line 10) | const CONNECT_ERROR_KIND = ["not-connected", "not-paired", "denied", "ot...
  function peerKey (line 12) | function peerKey(peer) {
  class P2pDiscovery (line 16) | class P2pDiscovery {
    method constructor (line 17) | constructor() {
    method log (line 36) | log(msg) {
    method error (line 40) | error(msg) {
    method getSetting (line 44) | async getSetting(name, defaultValue) {
    method init (line 53) | async init() {
    method quickSettings (line 441) | quickSettings() {
    method onPeerFound (line 448) | async onPeerFound(peer) {
    method onPeerLost (line 463) | onPeerLost(peer) {
    method initiateConnection (line 468) | async initiateConnection(peer) {
    method toasterMessage (line 485) | async toasterMessage(msg, success = true, params = {}) {
    method updateDiscovery (line 497) | async updateDiscovery() {

FILE: apps/system/js/power_manager.js
  class ScreenManager (line 5) | class ScreenManager {
    method constructor (line 6) | constructor() {
  class PowerManagerService (line 22) | class PowerManagerService {
    method constructor (line 23) | constructor() {
    method onDevicePickup (line 49) | async onDevicePickup() {
    method cancelPickupIfNeeded (line 94) | async cancelPickupIfNeeded() {
    method init (line 110) | init() {
    method ready (line 155) | ready() {
    method turnOn (line 159) | turnOn() {
    method turnOff (line 180) | turnOff() {
    method showLogo (line 227) | showLogo(mode, timeout) {
    method shutDown (line 240) | shutDown() {
    method reboot (line 247) | reboot() {
    method initBrightness (line 255) | async initBrightness() {
    method brightness (line 263) | set brightness(value) {
    method brightness (line 270) | get brightness() {
  class PowerManagement (line 275) | class PowerManagement {
    method constructor (line 276) | constructor() {
    method onIdle (line 330) | onIdle(topic, duration) {

FILE: apps/system/js/remote_control.js
  class Webrtc (line 16) | class Webrtc extends EventTarget {
    method constructor (line 17) | constructor() {
    method ensurePeerConnection (line 23) | ensurePeerConnection() {
    method setupChannel (line 56) | setupChannel(channel) {
    method handleEvent (line 66) | async handleEvent(event) {
    method offer (line 79) | async offer() {
    method answer (line 91) | async answer() {
    method setRemoteDescription (line 99) | setRemoteDescription(answer) {
  class PairingDialog (line 105) | class PairingDialog extends LitElement {
    method properties (line 106) | static get properties() {
    method show (line 113) | show(code) {
    method hide (line 133) | hide() {
    method updated (line 152) | updated() {
    method render (line 156) | render() {
  class RemoteControl (line 172) | class RemoteControl {
    method constructor (line 173) | constructor() {
    method reset (line 177) | reset() {
    method log (line 182) | log(msg) {
    method error (line 186) | error(msg) {
    method setupWebrtcEvents (line 190) | setupWebrtcEvents() {
    method request (line 209) | async request() {
    method pairing (line 235) | async pairing(params) {
    method handleEvent (line 264) | handleEvent(event) {
    method onKeyPress (line 285) | async onKeyPress(params) {

FILE: apps/system/js/tiles.js
  function registerTile (line 6) | async function registerTile(manifestUrl) {

FILE: apps/system/js/ua_store.js
  class UAStore (line 6) | class UAStore extends EventTarget {
    method constructor (line 7) | constructor() {
    method log (line 14) | log(msg) {
    method error (line 18) | error(msg) {
    method ensureReady (line 22) | async ensureReady() {
    method getUaFor (line 54) | getUaFor(href) {
    method setUaFor (line 61) | async setUaFor(href, ua) {

FILE: apps/system/js/wallpaper_manager.js
  class ColorUtil (line 3) | class ColorUtil {
    method constructor (line 4) | constructor(rgb) {
    method relativeLuminance (line 8) | get relativeLuminance() {
    method contrastWith (line 17) | contrastWith(otherColor) {
  class WallpaperManager (line 28) | class WallpaperManager extends EventTarget {
    method constructor (line 29) | constructor() {
    method extractPalette (line 52) | async extractPalette(url) {
    method updateBackground (line 128) | updateBackground() {
    method log (line 148) | log(msg) {
    method error (line 152) | error(msg) {
    method fetchAsBlob (line 156) | fetchAsBlob(url) {
    method ensureWallpaperContainer (line 171) | async ensureWallpaperContainer() {
    method save (line 188) | async save(image) {
    method attachObserver (line 213) | async attachObserver() {
    method loadDefaultWallpaper (line 243) | async loadDefaultWallpaper() {
    method getCurrentWallpaper (line 250) | async getCurrentWallpaper() {
    method loadOrUseDefault (line 266) | async loadOrUseDefault() {
    method asURL (line 276) | asURL() {

FILE: apps/system/js/web_extensions_delegate.js
  class WebExtensionsDelegate (line 3) | class WebExtensionsDelegate {
    method constructor (line 4) | constructor() {
    method log (line 25) | log(msg) {
    method error (line 29) | error(msg) {
    method permissionPrompt (line 80) | permissionPrompt(extension) {
    method setProvider (line 87) | setProvider(provider) {
    method updateBrowserAction (line 93) | updateBrowserAction(extensionId, browsingContextGroupId, tabId, action) {
    method createNewTab (line 155) | async createNewTab({
    method updateTab (line 181) | async updateTab({ nativeTab, extensionId, updateProperties } = {}) {

FILE: apps/system/neterror/config.js
  function detectPort (line 1) | async function detectPort() {
  function loadScript (line 11) | function loadScript(url, defer = false) {
  function loadSharedScript (line 21) | function loadSharedScript(url) {
  function depGraphLoaded (line 25) | function depGraphLoaded() {

FILE: apps/system/neterror/main.js
  function getErrorFromURI (line 1) | function getErrorFromURI() {

FILE: apps/system/sw.js
  constant SYSTEM_MESSAGE_TYPES (line 4) | const SYSTEM_MESSAGE_TYPES = ["activity"];
  constant HAS_RETURN_VALUE_ACTIVITIES (line 6) | const HAS_RETURN_VALUE_ACTIVITIES = ["install-tile"];
  function postMessage (line 17) | function postMessage(evt, message) {
  method addHandler (line 147) | addHandler(handler) {
  method removeHandler (line 154) | removeHandler(id) {
  method getHandler (line 159) | getHandler(id) {
  method size (line 163) | get size() {

FILE: apps/system/swproxy/helper.js
  function log (line 4) | function log() {

FILE: apps/system/swproxy/proxy.js
  function log (line 5) | function log() {
  function messageHandler (line 9) | function messageHandler(evt) {

FILE: apps/terminal/js/config.js
  function addLink (line 9) | function addLink(url) {
  function loadScript (line 17) | function loadScript(url, defer = false) {
  function loadSharedScript (line 27) | function loadSharedScript(url) {

FILE: apps/terminal/js/main.js
  function addLink (line 25) | function addLink(url) {
  function loadScript (line 33) | function loadScript(url, defer = false) {
  class Deck (line 43) | class Deck {
    method constructor (line 44) | constructor() {
    method switchTo (line 48) | switchTo(name) {
  function openTerminal (line 57) | function openTerminal() {

FILE: apps/terminal/xterm.js/xterm-addon-fit.js
  function e (line 1) | function e(){}

FILE: apps/terminal/xterm.js/xterm-addon-web-links.js
  function n (line 1) | function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{...
  function o (line 1) | function o(e,t){var n=window.open();n?(n.opener=null,n.location.href=t):...
  function e (line 1) | function e(e,t,n){void 0===e&&(e=o),void 0===t&&(t={}),void 0===n&&(n=!1...
  function e (line 1) | function e(e,t,n){this._terminal=e,this._regex=t,this._handler=n}
  function e (line 1) | function e(){}

FILE: apps/terminal/xterm.js/xterm.js
  function r (line 1) | function r(){this.constructor=e}
  function t (line 1) | function t(t,r){var i=e.call(this)||this;i._terminal=t,i._renderService=...
  function r (line 1) | function r(e){return e.replace(/\r?\n/g,"\r")}
  function i (line 1) | function i(e,t){return t?"[200~"+e+"[201~":e}
  function n (line 1) | function n(e,t,n){e=i(e=r(e),n.decPrivateModes.bracketedPasteMode),n.tri...
  function o (line 1) | function o(e,t,r){var i=r.getBoundingClientRect(),n=e.clientX-i.left-10,...
  function s (line 1) | function s(e){var t=e.toString(16);return t.length<2?"0"+t:t}
  function a (line 1) | function a(e,t){return e<t?(t+.05)/(e+.05):(e+.05)/(t+.05)}
  function t (line 1) | function t(e,t,r){var i=e/255,n=t/255,o=r/255;return.2126*(i<=.03928?i/1...
  function t (line 1) | function t(e,t,r){for(var i=e>>24&255,o=e>>16&255,s=e>>8&255,c=t>>24&255...
  function i (line 1) | function i(e,t,r){for(var i=e>>24&255,o=e>>16&255,s=e>>8&255,c=t>>24&255...
  function e (line 1) | function e(){this._color={},this._rgba={}}
  function e (line 1) | function e(e,r){this.allowTransparency=r;var h=e.createElement("canvas")...
  function e (line 1) | function e(e,t,r){this._bufferService=e,this._logService=t,this._unicode...
  function r (line 1) | function r(){this.constructor=e}
  function t (line 1) | function t(t){var r=e.call(this)||this;return r._bufferService=t,r._link...
  function r (line 1) | function r(){this.constructor=e}
  function t (line 1) | function t(t,r,i,n,o,s){var a=e.call(this)||this;return a._element=t,a._...
  function e (line 1) | function e(e){this._renderCallback=e}
  function r (line 1) | function r(){this.constructor=e}
  function t (line 1) | function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._cur...
  function r (line 1) | function r(){this.constructor=e}
  function t (line 1) | function t(t){void 0===t&&(t={});var r=e.call(this,t)||this;return r.bro...
  function i (line 1) | function i(e){var r,i,n=t._mouseService.getRawByteCoords(e,t.screenEleme...
  function e (line 1) | function e(e,t){void 0===t&&(t=1e3),this._renderCallback=e,this._debounc...
  function r (line 1) | function r(){this.constructor=e}
  function t (line 1) | function t(t,r,i,n,o,s,a){var l=e.call(this)||this;return l._scrol
Copy disabled (too large) Download .json
Condensed preview — 9803 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (104,345K chars).
[
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 593,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Describe the b"
  },
  {
    "path": ".gitignore",
    "chars": 48,
    "preview": "/prebuilts\n/.cache\npgp-key.*\n/apt-repo/**\n*.deb\n"
  },
  {
    "path": "Android.mk",
    "chars": 1421,
    "preview": "#\n# Builds the apps and installs them in /system/b2g/webapps\n#\n\nLOCAL_PATH:= $(call my-dir)\n\ninclude $(CLEAR_VARS)\nLOCAL"
  },
  {
    "path": "LICENSE",
    "chars": 34523,
    "preview": "                    GNU AFFERO GENERAL PUBLIC LICENSE\n                       Version 3, 19 November 2007\n\n Copyright (C)"
  },
  {
    "path": "README.md",
    "chars": 11409,
    "preview": "# Nutria: An Experimental Web Based OS Frontend\n\nThis repo contains a suite of apps and their build system. Several runn"
  },
  {
    "path": "apps/.gitignore",
    "chars": 21,
    "preview": "webapps.json\n.vscode/"
  },
  {
    "path": "apps/branding-b2gos/locales/en-US/branding/brand.ftl",
    "chars": 702,
    "preview": "# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not di"
  },
  {
    "path": "apps/branding-b2gos/locales/en-US/branding.ftl",
    "chars": 413,
    "preview": "# Logo screen\nlogo-title = b2gOS\nlogo-subtitle = Powered by\nlogo-starting = Starting…\nlogo-shutdown = Shutting down…\nlog"
  },
  {
    "path": "apps/branding-b2gos/locales/en-US/neterror.ftl",
    "chars": 363,
    "preview": "# about:neterror localization.\n\n-brand-name = b2gOS\n\nneterror-title = Oops, we failed to load the site :(\nneterror-reloa"
  },
  {
    "path": "apps/branding-b2gos/locales/ja/branding/brand.ftl",
    "chars": 678,
    "preview": "# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not di"
  },
  {
    "path": "apps/branding-b2gos/locales/ja/branding.ftl",
    "chars": 268,
    "preview": "# Logo screen\nlogo-title = b2gOS\nlogo-subtitle = Powered by\nlogo-starting = 起動中…\nlogo-shutdown = シャットダウン中…\nlogo-reboot ="
  },
  {
    "path": "apps/branding-b2gos/locales/ja/neterror.ftl",
    "chars": 257,
    "preview": "# about:neterror localization.\n\n-brand-name = b2gOS\n\nneterror-title = サイトの読み込みに失敗しました :(\nneterror-reload = 再試行\n\nneterror"
  },
  {
    "path": "apps/branding-b2gos/manifest.webmanifest",
    "chars": 215,
    "preview": "{\n  \"name\": \"branding-b2gos\",\n  \"description\": \"Default b2gos branding\",\n  \"b2g_features\": {\n    \"core\": true,\n    \"role"
  },
  {
    "path": "apps/branding-b2gos/style/branding.css",
    "chars": 1111,
    "preview": "/* Style for the b2gOS default branding */\n\n:root {\n  --logo-text-color: darkslategray;\n  --logo-background-color: wheat"
  },
  {
    "path": "apps/branding-capyloon/locales/en-US/branding/brand.ftl",
    "chars": 710,
    "preview": "# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not di"
  },
  {
    "path": "apps/branding-capyloon/locales/en-US/branding.ftl",
    "chars": 426,
    "preview": "# Logo screen\nlogo-title = Capyloon\nlogo-subtitle = Reclaim Your Web!\nlogo-starting = Starting…\nlogo-shutdown = Shutting"
  },
  {
    "path": "apps/branding-capyloon/locales/en-US/neterror.ftl",
    "chars": 366,
    "preview": "# about:neterror localization.\n\n-brand-name = Capyloon\n\nneterror-title = Oops, we failed to load the site :(\nneterror-re"
  },
  {
    "path": "apps/branding-capyloon/locales/ja/branding/brand.ftl",
    "chars": 695,
    "preview": "# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not di"
  },
  {
    "path": "apps/branding-capyloon/locales/ja/branding.ftl",
    "chars": 273,
    "preview": "# Logo screen\nlogo-title = Capyloon\nlogo-subtitle = ウェブを取り戻せ!\nlogo-starting = 起動中…\nlogo-shutdown = シャットダウン中…\nlogo-reboot"
  },
  {
    "path": "apps/branding-capyloon/locales/ja/neterror.ftl",
    "chars": 260,
    "preview": "# about:neterror localization.\n\n-brand-name = Capyloon\n\nneterror-title = サイトの読み込みに失敗しました :(\nneterror-reload = 再試行\n\nneter"
  },
  {
    "path": "apps/branding-capyloon/locales/zh-CN/branding.ftl",
    "chars": 264,
    "preview": "# Logo screen\nlogo-title = Capyloon\nlogo-subtitle = Reclaim Your Web!\nlogo-starting = 正在启动…\nlogo-shutdown = 正在关机…\nlogo-r"
  },
  {
    "path": "apps/branding-capyloon/locales/zh-CN/browser/appExtensionFields.ftl",
    "chars": 1387,
    "preview": "# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not di"
  },
  {
    "path": "apps/branding-capyloon/locales/zh-CN/neterror.ftl",
    "chars": 278,
    "preview": "# about:neterror localization.\n\n-brand-name = Capyloon\n\nneterror-title = 哎呀,我们无法加载该网站 :(\nneterror-reload = 重试\n\nneterror-"
  },
  {
    "path": "apps/branding-capyloon/manifest.webmanifest",
    "chars": 216,
    "preview": "{\n  \"name\": \"branding-capyloon\",\n  \"description\": \"Capyloon branding\",\n  \"b2g_features\": {\n    \"core\": true,\n    \"role\":"
  },
  {
    "path": "apps/branding-capyloon/style/branding.css",
    "chars": 2072,
    "preview": "/* Style for the Capyloon branding */\n\n:root {\n  --logo-text-color: darkslategray;\n  --logo-background-color: wheat;\n  -"
  },
  {
    "path": "apps/camera/index.html",
    "chars": 1484,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta\n      name=\"viewport\"\n      content=\"width=device"
  },
  {
    "path": "apps/camera/js/bootstrap.js",
    "chars": 3409,
    "preview": "const kDeps = [\n  {\n    name: \"main\",\n    kind: \"virtual\",\n    deps: [\n      \"shared-fluent\",\n      \"content manager\",\n "
  },
  {
    "path": "apps/camera/js/camera_base.js",
    "chars": 3404,
    "preview": "// Base class for camera managers.\n\nexport class CameraBase {\n  constructor(preview) {\n    this.preview = preview;\n  }\n\n"
  },
  {
    "path": "apps/camera/js/camera_gonk.js",
    "chars": 2542,
    "preview": "// Camera manager class for Gonk devices.\n\nexport class Camera extends CameraBase {\n  // @preview is the DOM <video> ele"
  },
  {
    "path": "apps/camera/js/camera_webrtc.js",
    "chars": 3012,
    "preview": "// Camera manager class using getUserMedia apis.\n\nexport class Camera extends CameraBase {\n  // @preview is the DOM <vid"
  },
  {
    "path": "apps/camera/js/config.js",
    "chars": 942,
    "preview": "// We run on the default port on device.\nconst isDevice = location.port === \"\";\n\nwindow.config = {\n  isDevice,\n  port: i"
  },
  {
    "path": "apps/camera/js/qr_code.js",
    "chars": 2153,
    "preview": "// QR Decoding support.\n// TODO: check if we should move that into a Web Worker.\n\nexport class QrCodeScanner extends Eve"
  },
  {
    "path": "apps/camera/locales/en-US/main.ftl",
    "chars": 96,
    "preview": "# Main page\npage-title = Camera\npoint-qr-code = Point At a QR Code\nno-camera = No Camera Found!\n"
  },
  {
    "path": "apps/camera/locales/ja/main.ftl",
    "chars": 85,
    "preview": "# Main page\npage-title = カメラ\npoint-qr-code = QR コードに合わせてください\nno-camera = カメラが見つかりません\n"
  },
  {
    "path": "apps/camera/locales/zh-CN/main.ftl",
    "chars": 50,
    "preview": "# Main page\npage-title = 相机\npoint-qr-code = 扫描二维码\n"
  },
  {
    "path": "apps/camera/manifest.webmanifest",
    "chars": 791,
    "preview": "{\n  \"name\": \"Camera\",\n  \"description\": \"Take Beautiful Pictures\",\n  \"start_url\": \"/index.html\",\n  \"icons\": [\n    {\n     "
  },
  {
    "path": "apps/camera/qrdecoder/qrdecoder.js",
    "chars": 3001,
    "preview": "\nfunction lowering0Callee(level, msg) {\n  switch (level) {\n    case \"info\":\n      console.info(msg);\n      break;\n    ca"
  },
  {
    "path": "apps/camera/style/desktop.css",
    "chars": 32,
    "preview": "html,\nbody {\n  font-size: 4mm;\n}"
  },
  {
    "path": "apps/camera/style/device.css",
    "chars": 32,
    "preview": "html,\nbody {\n  font-size: 4mm;\n}"
  },
  {
    "path": "apps/camera/style/index.css",
    "chars": 1424,
    "preview": "html,\nbody {\n  width: 100%;\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  overflow: hidden;\n  user-select: none;\n\n  backg"
  },
  {
    "path": "apps/camera/sw.js",
    "chars": 217,
    "preview": "const HAS_RETURN_VALUE_ACTIVITIES = [\"pick\", \"scan-qr-code\"];\nconst ACTIVITIES_DISPOSITION = { \"scan-qr-code\": \"inline\","
  },
  {
    "path": "apps/contacts/components/contact_info.css",
    "chars": 918,
    "preview": "/* Styling for the <contact-info> element */\n\n:host .main {\n  display: flex;\n  gap: 0.5em;\n  align-items: center;\n  padd"
  },
  {
    "path": "apps/contacts/components/contact_info.js",
    "chars": 4628,
    "preview": "// Custom element for a <contact-info> element\n\nexport class ContactInfo extends LitElement {\n  constructor(contact, app"
  },
  {
    "path": "apps/contacts/index.html",
    "chars": 4258,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title data-l10n-id=\"title\"></title>\n    <meta charset=\"utf-8\" />\n    <met"
  },
  {
    "path": "apps/contacts/js/add_panel.js",
    "chars": 4785,
    "preview": "// New contact panel\n\nconst _elems = new Map();\nfunction elem(id) {\n  let res = _elems.get(id);\n  if (!res) {\n    res = "
  },
  {
    "path": "apps/contacts/js/config.js",
    "chars": 1430,
    "preview": "// We run on the default port on device.\nconst isDevice = location.port === \"\";\n\nwindow.config = {\n  isDevice,\n  port: i"
  },
  {
    "path": "apps/contacts/js/dependencies.js",
    "chars": 1663,
    "preview": "const kDeps = [\n  {\n    name: \"setup\",\n    kind: \"virtual\",\n    deps: [\"content manager\", \"activity manager\", \"apps mana"
  },
  {
    "path": "apps/contacts/js/main.js",
    "chars": 15839,
    "preview": "function elem(id) {\n  return document.getElementById(id);\n}\n\n// A wrapper for a <sl-drawer> that adds common behavior:\n/"
  },
  {
    "path": "apps/contacts/locales/en-US/main.ftl",
    "chars": 873,
    "preview": "btn-ok = Ok\nbtn-cancel = Cancel\nbtn-back = Back\ntitle = Contacts\n\n# main screen\nmain-title = {$count ->\n    [0] No conta"
  },
  {
    "path": "apps/contacts/locales/ja/main.ftl",
    "chars": 753,
    "preview": "btn-ok = OK\nbtn-cancel = キャンセル\nbtn-back = 戻る\ntitle = 連絡先\n\n# main screen\nmain-title = {$count ->\n    [0] 連絡先なし\n    [1] 連絡"
  },
  {
    "path": "apps/contacts/locales/zh-CN/main.ftl",
    "chars": 521,
    "preview": "btn-ok = 确定\nbtn-cancel = 取消\nbtn-back = 返回\ntitle = 联系人\n\n# 主界面\nmain-title = {$count ->\n    [0] 没有联系人\n    [1] 一个联系人\n   *[ot"
  },
  {
    "path": "apps/contacts/manifest.webmanifest",
    "chars": 1236,
    "preview": "{\n  \"name\": \"Contacts\",\n  \"description\": \"Manage your address book\",\n  \"start_url\": \"/index.html\",\n  \"icons\": [\n    {\n  "
  },
  {
    "path": "apps/contacts/style/desktop.css",
    "chars": 32,
    "preview": "html,\nbody {\n  font-size: 4mm;\n}"
  },
  {
    "path": "apps/contacts/style/device.css",
    "chars": 32,
    "preview": "html,\nbody {\n  font-size: 4mm;\n}"
  },
  {
    "path": "apps/contacts/style/main.css",
    "chars": 2871,
    "preview": "html,\nbody {\n  height: 100%;\n  width: 100%;\n  margin: 0;\n  padding: 1em;\n}\n\nbody {\n  opacity: 0;\n}\n\nbody.ready {\n  opaci"
  },
  {
    "path": "apps/contacts/sw.js",
    "chars": 118,
    "preview": "const HAS_RETURN_VALUE_ACTIVITIES = [];\n\nimportScripts(`http://shared.localhost:${location.port}/js/activity_sw.js`);\n"
  },
  {
    "path": "apps/dialer/index.html",
    "chars": 3470,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta\n      name=\"viewport\"\n      content=\"width=device"
  },
  {
    "path": "apps/dialer/js/config.js",
    "chars": 1050,
    "preview": "// We run on the default port on device.\nconst isDevice = location.port === \"\";\n\nwindow.config = {\n  isDevice,\n  port: i"
  },
  {
    "path": "apps/dialer/js/main.js",
    "chars": 5691,
    "preview": "const telephony = navigator.b2g?.telephony;\n\nfunction button(name) {\n  return document.getElementById(`btn-${name}`);\n}\n"
  },
  {
    "path": "apps/dialer/locales/en-US/main.ftl",
    "chars": 280,
    "preview": "# Incoming page\npage-title = Dialer\npage-title-incoming = Incoming Call\npage-title-dial = Dial Number\npage-title-wait = "
  },
  {
    "path": "apps/dialer/locales/ja/main.ftl",
    "chars": 234,
    "preview": "# Incoming page\npage-title = 通話\npage-title-incoming = 着信\npage-title-dial = ダイヤル番号\npage-title-wait = 待機中\npage-title-conne"
  },
  {
    "path": "apps/dialer/locales/zh-CN/main.ftl",
    "chars": 227,
    "preview": "# Incoming page\npage-title = 电话\npage-title-incoming = 来电\npage-title-dial = 电话号码\npage-title-wait = 拨打中\npage-title-connect"
  },
  {
    "path": "apps/dialer/manifest.webmanifest",
    "chars": 514,
    "preview": "{\n  \"name\": \"Dialer\",\n  \"description\": \"Receive and Send Calls\",\n  \"start_url\": \"/index.html\",\n  \"icons\": [\n    {\n      "
  },
  {
    "path": "apps/dialer/style/desktop.css",
    "chars": 32,
    "preview": "html,\nbody {\n  font-size: 4mm;\n}"
  },
  {
    "path": "apps/dialer/style/device.css",
    "chars": 32,
    "preview": "html,\nbody {\n  font-size: 4mm;\n}"
  },
  {
    "path": "apps/dialer/style/index.css",
    "chars": 2142,
    "preview": "html,\nbody {\n  width: 100%;\n  height: 100%;\n  margin: 0;\n  overflow-x: hidden;\n  color: lightgrey;\n}\n\n* {\n  box-sizing: "
  },
  {
    "path": "apps/files/components/container_renderer.css",
    "chars": 1797,
    "preview": "/* <image-renderer> styling */\n\n:host {\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n  height: 100%;\n}\n\n:ho"
  },
  {
    "path": "apps/files/components/container_renderer.js",
    "chars": 9897,
    "preview": "/* renderer component for containers */\n\nexport class ContainerRenderer extends LitElement {\n  constructor(id, filter) {"
  },
  {
    "path": "apps/files/components/default_renderer.css",
    "chars": 384,
    "preview": "/* <default-renderer> styling */\n\ndefault-renderer {\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n  height:"
  },
  {
    "path": "apps/files/components/default_renderer.js",
    "chars": 1864,
    "preview": "/* fallback renderer component, that will just load the resource in an iframe */\n\nexport class DefaultRenderer extends H"
  },
  {
    "path": "apps/files/components/directory_picker.css",
    "chars": 255,
    "preview": "/* styling for <directory-picker> */\n\n:host sl-tree-item.selected::part(label) {\n  background-color: var(--sl-color-prim"
  },
  {
    "path": "apps/files/components/directory_picker.js",
    "chars": 4324,
    "preview": "// <directory-picker> custom element\n\nclass DirectoryPicker extends LitElement {\n  constructor() {\n    super();\n    this"
  },
  {
    "path": "apps/files/components/image_renderer.css",
    "chars": 662,
    "preview": "/* <image-renderer> styling */\n\n:host {\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n  height: 100%;\n}\n\n:ho"
  },
  {
    "path": "apps/files/components/image_renderer.js",
    "chars": 737,
    "preview": "/* image/* renderer component */\n\nexport class ImageRenderer extends LitElement {\n  constructor(resource) {\n    super();"
  },
  {
    "path": "apps/files/components/main_screen.css",
    "chars": 529,
    "preview": "/* <main-screen> element styling */\n\n:host {\n  height: 100%;\n  width: 100%;\n  display: flex;\n  flex-direction: column;\n}"
  },
  {
    "path": "apps/files/components/main_screen.js",
    "chars": 10849,
    "preview": "/* Main screen component, encapsulating most logic */\n\nclass MainScreen extends LitElement {\n  constructor() {\n    super"
  },
  {
    "path": "apps/files/components/video_renderer.css",
    "chars": 225,
    "preview": "/* <video-renderer> styling */\n\n:host {\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n  height: 100%;\n}\n\n:ho"
  },
  {
    "path": "apps/files/components/video_renderer.js",
    "chars": 570,
    "preview": "/* image/* renderer component */\n\nexport class VideoRenderer extends LitElement {\n  constructor(resource) {\n    super();"
  },
  {
    "path": "apps/files/index.html",
    "chars": 814,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta\n      name=\"viewport\"\n      content=\"width=device"
  },
  {
    "path": "apps/files/js/bootstrap.js",
    "chars": 2819,
    "preview": "const kDeps = [\n  {\n    name: \"main\",\n    kind: \"virtual\",\n    deps: [\n      \"main screen\",\n      \"activity manager\",\n  "
  },
  {
    "path": "apps/files/js/config.js",
    "chars": 930,
    "preview": "// We run on the default port on device.\nconst isDevice = location.port === \"\";\n\nwindow.config = {\n  isDevice,\n  port: i"
  },
  {
    "path": "apps/files/locales/en-US/main.ftl",
    "chars": 649,
    "preview": "# Main page\npage-title = Files\n\n# <main-screen>\n# The label of the root resource in a breadcrumb display.\nroot-resource "
  },
  {
    "path": "apps/files/locales/ja/main.ftl",
    "chars": 574,
    "preview": "# Main page\npage-title = ファイル\n\n# <main-screen>\n# The label of the root resource in a breadcrumb display.\nroot-resource ="
  },
  {
    "path": "apps/files/locales/zh-CN/main.ftl",
    "chars": 196,
    "preview": "# Main page\npage-title = 文件\n\n# <main-screen>\n# The label of the root resource in a breadcrumb display.\nroot-resource = 根"
  },
  {
    "path": "apps/files/manifest.webmanifest",
    "chars": 810,
    "preview": "{\n  \"name\": \"Files\",\n  \"description\": \"Manage your data\",\n  \"start_url\": \"/index.html\",\n  \"icons\": [\n    {\n      \"src\": "
  },
  {
    "path": "apps/files/style/desktop.css",
    "chars": 32,
    "preview": "html,\nbody {\n  font-size: 4mm;\n}"
  },
  {
    "path": "apps/files/style/device.css",
    "chars": 32,
    "preview": "html,\nbody {\n  font-size: 4mm;\n}"
  },
  {
    "path": "apps/files/style/index.css",
    "chars": 219,
    "preview": "html,\nbody {\n  width: 100%;\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  user-select: none;\n  background-color: var(--sl"
  },
  {
    "path": "apps/files/sw.js",
    "chars": 124,
    "preview": "const HAS_RETURN_VALUE_ACTIVITIES = [\"pick\"];\n\nimportScripts(`http://shared.localhost:${location.port}/js/activity_sw.js"
  },
  {
    "path": "apps/ftu/features.md",
    "chars": 812,
    "preview": "# Screens\n\n## Welcome screen\n\nWelcome to Nutria! In the following screens we'll guide you to configure your device.\nIf y"
  },
  {
    "path": "apps/ftu/index.html",
    "chars": 11405,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title>ftu</title>\n    <meta charset=\"utf-8\" />\n    <meta name=\"theme-colo"
  },
  {
    "path": "apps/ftu/js/config.js",
    "chars": 1427,
    "preview": "// We run on the default port on device.\nconst isDevice = location.port === \"\";\n\nwindow.config = {\n  isDevice,\n  port: i"
  },
  {
    "path": "apps/ftu/js/datetime_panel.js",
    "chars": 6030,
    "preview": "// Display panel management module.\n\nclass DatetimePanel {\n  constructor() {\n    this.log(\"constructor\");\n    this.panel"
  },
  {
    "path": "apps/ftu/js/dependencies.js",
    "chars": 2828,
    "preview": "const kDeps = [\n  {\n    name: \"intro\",\n    kind: \"virtual\",\n    deps: [\"shoelace-button\", \"shoelace-light-theme\", \"shoel"
  },
  {
    "path": "apps/ftu/js/display_panel.js",
    "chars": 1439,
    "preview": "// Display panel management module.\n\nclass DisplayPanel {\n  constructor() {\n    this.log(\"constructor\");\n    this.panel "
  },
  {
    "path": "apps/ftu/js/identity_panel.js",
    "chars": 3679,
    "preview": "// Identity panel management module.\n\nclass IdentityPanel {\n  constructor() {\n    this.log(\"constructor\");\n    this.pane"
  },
  {
    "path": "apps/ftu/js/language_panel.js",
    "chars": 2111,
    "preview": "// Language panel management module.\n\nclass LanguagePanel {\n  constructor() {\n    this.log(\"constructor\");\n    this.pane"
  },
  {
    "path": "apps/ftu/js/main.js",
    "chars": 4584,
    "preview": "function elem(id) {\n  return document.getElementById(id);\n}\n\n// A wrapper for a <sl-drawer> that adds common behavior:\n/"
  },
  {
    "path": "apps/ftu/js/privacy_panel.js",
    "chars": 2219,
    "preview": "// Privacy panel management module.\n\nclass PrivacyPanel {\n  constructor() {\n    this.log(\"constructor\");\n    this.panel "
  },
  {
    "path": "apps/ftu/js/search_panel.js",
    "chars": 2532,
    "preview": "// Search engines panel management module.\n\nclass SearchPanel {\n  constructor() {\n    this.log(\"constructor\");\n    this."
  },
  {
    "path": "apps/ftu/js/webext_panel.js",
    "chars": 5145,
    "preview": "// Web Extensions panel management module.\n\n// TODO: use a setting\nconst COLLECTION_URL =\n  \"https://addons.mozilla.org/"
  },
  {
    "path": "apps/ftu/js/wifi_panel.js",
    "chars": 7644,
    "preview": "// Wifi panel management module.\n\n// Builds a <sl-menu-item> to display a network.\nfunction buildNetworkItem(network) {\n"
  },
  {
    "path": "apps/ftu/locales/en-US/main.ftl",
    "chars": 2437,
    "preview": "btn-ok = Ok\nbtn-cancel = Cancel\nbtn-back = Back\nbtn-start = Let's Start\nbtn-done = You're All Set!\n\n# Language selection"
  },
  {
    "path": "apps/ftu/locales/ja/main.ftl",
    "chars": 1848,
    "preview": "btn-ok = OK\nbtn-cancel = キャンセル\nbtn-back = 戻る\nbtn-start = はじめましょう\nbtn-done = 設定完了!\n\n# Language selection panel\nlanguage-t"
  },
  {
    "path": "apps/ftu/locales/zh-CN/main.ftl",
    "chars": 1476,
    "preview": "btn-ok = 确定\nbtn-cancel = 取消\nbtn-back = 返回\nbtn-start = 开始\nbtn-done = 全部配置完成!\n\n# 语言选择面板\nlanguage-title = 语言选择\nlanguage-sel"
  },
  {
    "path": "apps/ftu/manifest.webmanifest",
    "chars": 575,
    "preview": "{\n  \"name\": \"FTU\",\n  \"description\": \"First Time Use Experience\",\n  \"start_url\": \"/index.html\",\n  \"icons\": [\n    {\n      "
  },
  {
    "path": "apps/ftu/style/desktop.css",
    "chars": 32,
    "preview": "html,\nbody {\n  font-size: 4mm;\n}"
  },
  {
    "path": "apps/ftu/style/device.css",
    "chars": 32,
    "preview": "html,\nbody {\n  font-size: 4mm;\n}"
  },
  {
    "path": "apps/ftu/style/main.css",
    "chars": 4186,
    "preview": "html,\nbody {\n  height: 100%;\n  width: 100%;\n  margin: 0;\n  padding: 2em;\n}\n\nbody {\n  opacity: 0;\n}\n\nbody.ready {\n  opaci"
  },
  {
    "path": "apps/gecko-l10n/locales/en-US/browser/appExtensionFields.ftl",
    "chars": 1387,
    "preview": "# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not di"
  },
  {
    "path": "apps/gecko-l10n/locales/en-US/browser/safebrowsing/blockedSite.ftl",
    "chars": 5104,
    "preview": "# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not di"
  },
  {
    "path": "apps/gecko-l10n/locales/ja/browser/appExtensionFields.ftl",
    "chars": 1287,
    "preview": "# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not di"
  },
  {
    "path": "apps/gecko-l10n/locales/ja/browser/safebrowsing/blockedSite.ftl",
    "chars": 4356,
    "preview": "# This Source Code Form is subject to the terms of the Mozilla Public\n# License, v. 2.0. If a copy of the MPL was not di"
  },
  {
    "path": "apps/gecko-l10n/manifest.webmanifest",
    "chars": 221,
    "preview": "{\n  \"name\": \"gecko-l10n\",\n  \"description\": \"Imported Gecko l10n resources\",\n  \"b2g_features\": {\n    \"core\": true,\n    \"r"
  },
  {
    "path": "apps/homescreen/components/action_activity.css",
    "chars": 845,
    "preview": "/* Style specific to <action-activity> */\n\n:host div {\n  display: flex;\n  flex-direction: column;\n  justify-content: spa"
  },
  {
    "path": "apps/homescreen/components/action_activity.js",
    "chars": 1488,
    "preview": "// The <action-activity> custom element.\n\nclass ActionActivity extends HTMLElement {\n  constructor(data) {\n    super();\n"
  },
  {
    "path": "apps/homescreen/components/action_bookmark.css",
    "chars": 942,
    "preview": "/* Style specific to <action-bookmark> */\n\n:host {\n  display: flex;\n  flex-direction: column;\n  justify-content: space-a"
  },
  {
    "path": "apps/homescreen/components/action_bookmark.js",
    "chars": 1517,
    "preview": "// The <action-bookmark> custom element.\n\nclass ActionBookmark extends HTMLElement {\n  constructor(data) {\n    super();\n"
  },
  {
    "path": "apps/homescreen/components/action_box.css",
    "chars": 1366,
    "preview": "/* Styling for <action-box> */\n\n:host {\n  width: var(--action-box-width);\n  height: var(--action-box-height);\n  position"
  },
  {
    "path": "apps/homescreen/components/action_box.js",
    "chars": 3922,
    "preview": "// <action-box> custom element, representing an item on the homescreen.\n\nconst kLongPressMinMs = 200;\n\nclass ActionBox e"
  },
  {
    "path": "apps/homescreen/components/action_widget.css",
    "chars": 578,
    "preview": "/* Style specific to <action-widget> */\n\naction-widget web-view {\n  width: 100%;\n  height: 100%;\n  border: 5px solid rgb"
  },
  {
    "path": "apps/homescreen/components/action_widget.js",
    "chars": 788,
    "preview": "// The <action-widget> custom element.\n\nclass ActionWidget extends HTMLElement {\n  constructor(data) {\n    super();\n\n   "
  },
  {
    "path": "apps/homescreen/components/actions_wall.css",
    "chars": 124,
    "preview": "/* styling for <actions-wall> */\n\n:host {\n  background: none;\n  position: relative;\n  min-height: 100%;\n  display: block"
  },
  {
    "path": "apps/homescreen/components/actions_wall.js",
    "chars": 7137,
    "preview": "// <actions-wall> is a container to layout <action-box> components.\n\nconst kMaxWidth = window\n  .getComputedStyle(docume"
  },
  {
    "path": "apps/homescreen/components/default_results.css",
    "chars": 683,
    "preview": "/* Styling for the <default-results> component */\n\n:host {\n  display: flex;\n  flex-direction: column;\n  max-height: 100%"
  },
  {
    "path": "apps/homescreen/components/default_results.js",
    "chars": 8483,
    "preview": "// Default results component: displays results either by frecency or history.\n\nclass DefaultResults extends LitElement {"
  },
  {
    "path": "apps/homescreen/components/qr_dialog.css",
    "chars": 321,
    "preview": "/* Style for <qr-dialog> */\n\n:host {\n  color: var(--sl-color-neutral-500);\n}\n\n:host sl-icon-button {\n  font-size: 2em;\n}"
  },
  {
    "path": "apps/homescreen/components/qr_dialog.js",
    "chars": 2355,
    "preview": "// QR Code result dialog\n\n// Represents a <qr-dialog> dialog, displaying the text decoded QRCode,\n// and allowing clipbo"
  },
  {
    "path": "apps/homescreen/components/resource_item.css",
    "chars": 333,
    "preview": "/* Styling for the <default-results> component */\n\n:host {\n  display: flex;\n  cursor: pointer;\n  font-size: 1em;\n  gap: "
  },
  {
    "path": "apps/homescreen/index.html",
    "chars": 1614,
    "preview": "<!DOCTYPE html>\n<html lang=\"en-US\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta\n      name=\"viewport\"\n      content="
  },
  {
    "path": "apps/homescreen/js/actions_store.js",
    "chars": 6549,
    "preview": "// This class manages the persistence of the actions displayed on the homescreen.\n\nclass ActionsStore extends EventTarge"
  },
  {
    "path": "apps/homescreen/js/bootstrap.js",
    "chars": 7080,
    "preview": "// Starts and attach some event listeners to open and close the search panel.\n\nvar graph;\n\nconst kBindingsModifier = \"Co"
  },
  {
    "path": "apps/homescreen/js/config.js",
    "chars": 1050,
    "preview": "// We run on the default port on device.\nconst isDevice = location.port === \"\";\n\nwindow.config = {\n  isDevice,\n  port: i"
  },
  {
    "path": "apps/homescreen/js/dependencies.js",
    "chars": 4758,
    "preview": "const kDeps = [\n  {\n    name: \"main\",\n    kind: \"virtual\",\n    deps: [\n      \"action wall\",\n      \"activity manager\",\n  "
  },
  {
    "path": "apps/homescreen/js/search/apps.js",
    "chars": 2549,
    "preview": "// Search engine for apps installed locally.\n\nclass AppsSearch {\n  constructor() {\n    this.apps = [];\n    window.appsMa"
  },
  {
    "path": "apps/homescreen/js/search/contacts.js",
    "chars": 2904,
    "preview": "// Search engine for contacts.\n\nclass ContactsSearch {\n  constructor() {}\n\n  // Returns a Promise that resolves to a res"
  },
  {
    "path": "apps/homescreen/js/search/fend.js",
    "chars": 2094,
    "preview": "// A search engine powered by https://github.com/printfn/fend\n// Currently using revision 685110de575f54a872a64a20b9a17a"
  },
  {
    "path": "apps/homescreen/js/search/fend_wasm.js",
    "chars": 16181,
    "preview": "let fend_wasm;\n(function() {\n    const __exports = {};\n    let script_src;\n    if (typeof document === 'undefined') {\n  "
  },
  {
    "path": "apps/homescreen/js/search/media.js",
    "chars": 2633,
    "preview": "// Media search module.\n\nclass Media {\n  // Returns a Promise that resolves to a result set.\n  async search(query, count"
  },
  {
    "path": "apps/homescreen/js/search/opensearch.js",
    "chars": 3136,
    "preview": "// Opensearch based search module, providing suggestions results.\n\nclass OpenSearch {\n  constructor() {\n    this.searchE"
  },
  {
    "path": "apps/homescreen/js/search/places.js",
    "chars": 2288,
    "preview": "// Top places search module.\n\nclass Places {\n  // Returns a Promise that resolves to a result set.\n  async search(query,"
  },
  {
    "path": "apps/homescreen/js/search/search_activity.js",
    "chars": 1780,
    "preview": "// Search module using the search-provider activity.\n// TODO: switch to activity.broadcast() once it's available.\n\nclass"
  },
  {
    "path": "apps/homescreen/js/search/search_source.js",
    "chars": 1351,
    "preview": "// Base class for search sources.\n// Each search source is tied to a section of the results panel.\n\nclass SearchSource {"
  },
  {
    "path": "apps/homescreen/js/search/skills.js",
    "chars": 8351,
    "preview": "// Search engine for apps installed locally.\n\nclass Skill {\n  constructor(skill) {\n    this.skill = skill;\n    if (this."
  },
  {
    "path": "apps/homescreen/js/search/top_sites.js",
    "chars": 1384,
    "preview": "// Top sites search module.\n\nclass TopSites {\n  constructor() {\n    if (topSites) {\n      topSites.push(\n        \"about:"
  },
  {
    "path": "apps/homescreen/js/search_panel.js",
    "chars": 4829,
    "preview": "// Manages the search panel.\n\nexport class SearchPanel {\n  init() {\n    this.panel = document.getElementById(\"search-pan"
  },
  {
    "path": "apps/homescreen/locales/en-US/main.ftl",
    "chars": 629,
    "preview": "# Search box\nsearch-box-placeholder =\n    .placeholder = Browse, Search or Ask…\n    .aria-label = Browse, Search or Ask\n"
  },
  {
    "path": "apps/homescreen/locales/ja/main.ftl",
    "chars": 525,
    "preview": "# Search box\nsearch-box-placeholder =\n    .placeholder = 閲覧、検索、質問…\n    .aria-label = 閲覧、検索、質問\n\n# Search sections titles\n"
  },
  {
    "path": "apps/homescreen/locales/zh-CN/main.ftl",
    "chars": 481,
    "preview": "# Search box\nsearch-box-placeholder =\n    .placeholder = 浏览、搜索或提问...\n    .aria-label = 浏览、搜索或提问\n\n# Search sections title"
  },
  {
    "path": "apps/homescreen/manifest.webmanifest",
    "chars": 640,
    "preview": "{\n  \"name\": \"Homescreen\",\n  \"description\": \"Capyloon Default Homescreen\",\n  \"orientation\": \"default\",\n  \"start_url\": \"/i"
  },
  {
    "path": "apps/homescreen/resources/.gitignore",
    "chars": 6,
    "preview": "*.csv\n"
  },
  {
    "path": "apps/homescreen/resources/default/actions.json",
    "chars": 2038,
    "preview": "[\n  {\n    \"id\": \"default-2\",\n    \"kind\": \"bookmark\",\n    \"title\": \"Wikipedia\",\n    \"url\": \"https://en.wikipedia.org\",\n  "
  },
  {
    "path": "apps/homescreen/resources/top_10k_sites.js",
    "chars": 157168,
    "preview": "const topSites = [\n\"google.com\",\n\"youtube.com\",\n\"baidu.com\",\n\"facebook.com\",\n\"bing.com\",\n\"qq.com\",\n\"twitter.com\",\n\"wikip"
  },
  {
    "path": "apps/homescreen/resources/update-alexa-1m.sh",
    "chars": 488,
    "preview": "#!/bin/bash\n\n# Get the top 10k sites from http://s3.amazonaws.com/alexa-static/top-1m.csv.zip\n\nset -e\n\nrm -f current.csv"
  },
  {
    "path": "apps/homescreen/resources/update-topsites.sh",
    "chars": 509,
    "preview": "#!/bin/bash\n\n# Get the top 10k sites from https://github.com/zakird/crux-top-lists\n\nset -e\n\nrm -f current.csv\ncurl -O ht"
  },
  {
    "path": "apps/homescreen/style/desktop.css",
    "chars": 32,
    "preview": "html,\nbody {\n  font-size: 4mm;\n}"
  },
  {
    "path": "apps/homescreen/style/device.css",
    "chars": 32,
    "preview": "html,\nbody {\n  font-size: 4mm;\n}"
  },
  {
    "path": "apps/homescreen/style/index.css",
    "chars": 4509,
    "preview": "html,\nbody {\n  width: 100%;\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  user-select: none;\n}\n\n:root {\n  --search-box-he"
  },
  {
    "path": "apps/homescreen/style/search/media.css",
    "chars": 649,
    "preview": "/* Styling for a media-item search result */\n\n:host {\n  padding: 0.5em;\n  display: flex;\n  align-items: center;\n  gap: 0"
  },
  {
    "path": "apps/homescreen/style/search/places.css",
    "chars": 462,
    "preview": "/* Styling for a places-item search result */\n\n:host {\n  display: flex;\n}\n\n:host .entry {\n  display: flex;\n  padding: 0."
  },
  {
    "path": "apps/homescreen/sw.js",
    "chars": 131,
    "preview": "const HAS_RETURN_VALUE_ACTIVITIES = [\"add-to-home\"];\n\nimportScripts(`http://shared.localhost:${location.port}/js/activit"
  },
  {
    "path": "apps/keyboard/index.html",
    "chars": 437,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <title>Virtual Keyboard</title>\n    <meta charset=\"utf-8\" />\n    <meta\n      name=\"v"
  },
  {
    "path": "apps/keyboard/js/config.js",
    "chars": 1050,
    "preview": "// We run on the default port on device.\nconst isDevice = location.port === \"\";\n\nwindow.config = {\n  isDevice,\n  port: i"
  },
  {
    "path": "apps/keyboard/js/main.js",
    "chars": 6348,
    "preview": "class KeyboardLayout {\n  constructor(root) {\n    this.currentLayout = null;\n    this.layouts = {};\n    this.root = root;"
  },
  {
    "path": "apps/keyboard/layouts/en-US.js",
    "chars": 2555,
    "preview": "// US keyboard layout.\n\nexport const keyboardLayout = {\n  description: \"English\",\n  views: {\n    standard: [\n      \"q w "
  },
  {
    "path": "apps/keyboard/layouts/fr-FR.js",
    "chars": 2560,
    "preview": "// US keyboard layout.\n\nexport const keyboardLayout = {\n  description: \"Français\",\n  views: {\n    standard: [\n      \"a z"
  },
  {
    "path": "apps/keyboard/manifest.webmanifest",
    "chars": 304,
    "preview": "{\n  \"name\": \"Keyboard\",\n  \"description\": \"Virtual Keyboard\",\n  \"start_url\": \"/index.html\",\n  \"b2g_features\": {\n    \"core"
  },
  {
    "path": "apps/keyboard/style/index.css",
    "chars": 1686,
    "preview": "html,\nbody {\n  height: 100%;\n  width: 100%;\n  margin: 0;\n  font-family: sans-serif;\n}\n\n* {\n  box-sizing: border-box;\n}\n\n"
  },
  {
    "path": "apps/mediacenter/components/default_results.css",
    "chars": 971,
    "preview": "/* Styling for the <default-results> component */\n\n:host {\n  display: flex;\n  flex-direction: column;\n  max-height: 100%"
  },
  {
    "path": "apps/mediacenter/components/default_results.js",
    "chars": 2091,
    "preview": "// Default results component: displays results either by frecency or history.\n\nclass DefaultResults extends LitElement {"
  },
  {
    "path": "apps/mediacenter/components/resource_item.css",
    "chars": 333,
    "preview": "/* Styling for the <default-results> component */\n\n:host {\n  display: flex;\n  cursor: pointer;\n  font-size: 1em;\n  gap: "
  },
  {
    "path": "apps/mediacenter/index.html",
    "chars": 1791,
    "preview": "<!DOCTYPE html>\n<html lang=\"en-US\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta\n      name=\"viewport\"\n      content="
  },
  {
    "path": "apps/mediacenter/js/bootstrap.js",
    "chars": 7886,
    "preview": "// Starts and attach some event listeners to open and close the search panel.\n\nvar graph;\n\nconst kBindingsModifier = \"Co"
  },
  {
    "path": "apps/mediacenter/js/config.js",
    "chars": 1051,
    "preview": "// We run on the default port on device.\nconst isDevice = location.port === \"\";\n\nwindow.config = {\n  isDevice,\n  port: i"
  },
  {
    "path": "apps/mediacenter/js/dependencies.js",
    "chars": 2198,
    "preview": "const kDeps = [\n  {\n    name: \"main\",\n    kind: \"virtual\",\n    deps: [\n      \"activity manager\",\n      \"shoelace-light-t"
  },
  {
    "path": "apps/mediacenter/js/favorites.js",
    "chars": 6020,
    "preview": "// Manages favorite items pinned to the homescreen.\n\nclass Favorites {\n  constructor(parent, containerName) {\n    this.c"
  },
  {
    "path": "apps/mediacenter/js/search/opensearch.js",
    "chars": 3136,
    "preview": "// Opensearch based search module, providing suggestions results.\n\nclass OpenSearch {\n  constructor() {\n    this.searchE"
  },
  {
    "path": "apps/mediacenter/js/search/places.js",
    "chars": 2961,
    "preview": "// Top places search module.\n\nclass Places {\n  // Returns a Promise that resolves to a result set.\n  async search(query,"
  },
  {
    "path": "apps/mediacenter/js/search/search_source.js",
    "chars": 1661,
    "preview": "// Base class for search sources.\n// Each search source is tied to a section of the results panel.\n\nclass SearchSource {"
  },
  {
    "path": "apps/mediacenter/js/search/top_sites.js",
    "chars": 1325,
    "preview": "// Top sites search module.\n\nclass TopSites {\n  constructor() {\n    if (topSites) {\n      topSites.push(\n        \"about:"
  },
  {
    "path": "apps/mediacenter/js/search_panel.js",
    "chars": 3917,
    "preview": "// Manages the search panel.\n\nexport class SearchPanel {\n  init() {\n    this.panel = document.getElementById(\"search-pan"
  },
  {
    "path": "apps/mediacenter/locales/en-US/main.ftl",
    "chars": 218,
    "preview": "# Search results\ntop-sites-title = Top Sites\nplaces-title = History\n\n# Search box\nsearch-box-placeholder =\n    .placehol"
  },
  {
    "path": "apps/mediacenter/locales/ja/main.ftl",
    "chars": 197,
    "preview": "# Search results\ntop-sites-title = トップサイト\nplaces-title = 履歴\n\n# Search box\nsearch-box-placeholder =\n    .placeholder = 検索"
  },
  {
    "path": "apps/mediacenter/locales/zh-CN/main.ftl",
    "chars": 198,
    "preview": "# Search results\ntop-sites-title = 热门站点\nplaces-title = 历史\n\n# Search box\nsearch-box-placeholder =\n    .placeholder = 输入搜索"
  },
  {
    "path": "apps/mediacenter/manifest.webmanifest",
    "chars": 663,
    "preview": "{\n  \"name\": \"MediaCenter\",\n  \"description\": \"Capyloon Media Center\",\n  \"orientation\": \"default\",\n  \"start_url\": \"/index."
  },
  {
    "path": "apps/mediacenter/resources/top_10k_sites.js",
    "chars": 157168,
    "preview": "const topSites = [\n\"google.com\",\n\"youtube.com\",\n\"baidu.com\",\n\"facebook.com\",\n\"bing.com\",\n\"qq.com\",\n\"twitter.com\",\n\"wikip"
  },
  {
    "path": "apps/mediacenter/style/desktop.css",
    "chars": 32,
    "preview": "html,\nbody {\n  font-size: 4mm;\n}"
  },
  {
    "path": "apps/mediacenter/style/device.css",
    "chars": 32,
    "preview": "html,\nbody {\n  font-size: 4mm;\n}"
  },
  {
    "path": "apps/mediacenter/style/index.css",
    "chars": 4304,
    "preview": "html,\nbody {\n  width: 100%;\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  user-select: none;\n}\n\nhtml {\n  background-color"
  },
  {
    "path": "apps/mediacenter/style/search/media.css",
    "chars": 649,
    "preview": "/* Styling for a media-item search result */\n\n:host {\n  padding: 0.5em;\n  display: flex;\n  align-items: center;\n  gap: 0"
  },
  {
    "path": "apps/mediacenter/style/search/places.css",
    "chars": 498,
    "preview": "/* Styling for a places-item search result */\n\n:host {\n  display: flex;\n}\n\n:host .entry {\n  display: flex;\n  padding: 0."
  },
  {
    "path": "apps/mediacenter/sw.js",
    "chars": 131,
    "preview": "const HAS_RETURN_VALUE_ACTIVITIES = [\"add-to-home\"];\n\nimportScripts(`http://shared.localhost:${location.port}/js/activit"
  },
  {
    "path": "apps/messages/components/message_display.css",
    "chars": 558,
    "preview": "/* Styling for <thread-head> */\n\n:host {\n  display: flex;\n}\n\n:host(.sent) {\n  justify-content: end;\n}\n\n:host .message {\n"
  },
  {
    "path": "apps/messages/components/message_display.js",
    "chars": 1968,
    "preview": "// The <message-display> custom element, responsible for the display of\n// a single message.\n\nclass MessageDisplay exten"
  },
  {
    "path": "apps/messages/components/thread_head.css",
    "chars": 410,
    "preview": "/* Styling for <thread-head> */\n\n:host .container {\n    display: flex;\n    flex-direction: column;\n    gap: 0.25em;\n    "
  },
  {
    "path": "apps/messages/components/thread_head.js",
    "chars": 1892,
    "preview": "// The <thread-head> custom element, responsible for the display of\n// a single row providing summary information about "
  },
  {
    "path": "apps/messages/index.html",
    "chars": 1307,
    "preview": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta\n      name=\"viewport\"\n      content=\"width=device"
  },
  {
    "path": "apps/messages/js/bootstrap.js",
    "chars": 7656,
    "preview": "const kDeps = [\n  {\n    name: \"main\",\n    kind: \"virtual\",\n    deps: [\"thread head\", \"message display\"],\n  },\n  {\n    na"
  },
  {
    "path": "apps/messages/js/config.js",
    "chars": 1050,
    "preview": "// We run on the default port on device.\nconst isDevice = location.port === \"\";\n\nwindow.config = {\n  isDevice,\n  port: i"
  },
  {
    "path": "apps/messages/locales/en-US/main.ftl",
    "chars": 248,
    "preview": "# Main page\npage-title = Messages\nsearch =\n    .placeholder = Search Contacts and Messages…\n    .aria-label = Search Con"
  }
]

// ... and 9603 more files (download for full content)

About this extraction

This page contains the full source code of the capyloon/nutria GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 9803 files (94.4 MB), approximately 25.3M tokens, and a symbol index with 273812 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!