From 79615f5913e3fae7db8397cda3f80e95a452321f Mon Sep 17 00:00:00 2001 From: seraphim <18ycm9tx@anonaddy.me> Date: Sat, 25 Jul 2026 18:35:48 +0700 Subject: Stop tracking browser runtime files --- .../Default/.org.chromium.Chromium.1F1JI3 | 1 - .../Default/.org.chromium.Chromium.EEq65z | 1 - .../Default/.org.chromium.Chromium.L5b1Sq | 1 - .../Default/.org.chromium.Chromium.UCYqcY | 1 - .../net.imput.helium/Default/Account Web Data | Bin 77824 -> 0 bytes .../Default/Account Web Data-journal | 0 .../net.imput.helium/Default/Affiliation Database | Bin 53248 -> 0 bytes .../Default/Affiliation Database-journal | 0 .../Default/AutofillAiModelCache/LOCK | 0 .../Default/AutofillAiModelCache/LOG | 0 .../Default/AutofillAiModelCache/LOG.old | 0 .../Default/AutofillStrikeDatabase/LOCK | 0 .../Default/AutofillStrikeDatabase/LOG | 0 .../Default/AutofillStrikeDatabase/LOG.old | 0 .../Default/BookmarkMergedSurfaceOrdering | 2 - .../.config/net.imput.helium/Default/Bookmarks | 164 - .../.config/net.imput.helium/Default/Bookmarks.bak | 164 - .../net.imput.helium/Default/BudgetDatabase/LOCK | 0 .../net.imput.helium/Default/BudgetDatabase/LOG | 0 .../Default/BudgetDatabase/LOG.old | 0 .../Default/ClientCertificates/LOCK | 0 .../Default/ClientCertificates/LOG | 0 .../Default/ClientCertificates/LOG.old | 0 .../.config/net.imput.helium/Default/Cookies | Bin 262144 -> 0 bytes .../net.imput.helium/Default/Cookies-journal | 0 .../.config/net.imput.helium/Default/DIPS | Bin 49152 -> 0 bytes .../.config/net.imput.helium/Default/DIPS-wal | Bin 4120032 -> 0 bytes .../fgmjlmbojbkmdpofahffgcpkhkngfpef/rules.fbs | Bin 1451 -> 0 bytes .../fgmjlmbojbkmdpofahffgcpkhkngfpef/rules.json | 1 - .../Default/DawnGraphiteCache/data_0 | Bin 8192 -> 0 bytes .../Default/DawnGraphiteCache/data_1 | Bin 270336 -> 0 bytes .../Default/DawnGraphiteCache/data_2 | Bin 8192 -> 0 bytes .../Default/DawnGraphiteCache/data_3 | Bin 8192 -> 0 bytes .../Default/DawnGraphiteCache/index | Bin 262512 -> 0 bytes .../Default/DawnWebGPUCache/data_0 | Bin 8192 -> 0 bytes .../Default/DawnWebGPUCache/data_1 | Bin 270336 -> 0 bytes .../Default/DawnWebGPUCache/data_2 | Bin 8192 -> 0 bytes .../Default/DawnWebGPUCache/data_3 | Bin 8192 -> 0 bytes .../net.imput.helium/Default/DawnWebGPUCache/index | Bin 262512 -> 0 bytes .../net.imput.helium/Default/Extension Cookies | Bin 20480 -> 0 bytes .../Default/Extension Cookies-journal | 0 .../Default/Extension Rules/000003.log | Bin 1406 -> 0 bytes .../Default/Extension Rules/CURRENT | 1 - .../net.imput.helium/Default/Extension Rules/LOCK | 0 .../net.imput.helium/Default/Extension Rules/LOG | 3 - .../Default/Extension Rules/LOG.old | 3 - .../Default/Extension Rules/MANIFEST-000001 | Bin 41 -> 0 bytes .../Default/Extension Scripts/000003.log | Bin 703 -> 0 bytes .../Default/Extension Scripts/CURRENT | 1 - .../Default/Extension Scripts/LOCK | 0 .../net.imput.helium/Default/Extension Scripts/LOG | 3 - .../Default/Extension Scripts/LOG.old | 3 - .../Default/Extension Scripts/MANIFEST-000001 | Bin 41 -> 0 bytes .../Default/Extension State/000005.ldb | Bin 3989323 -> 0 bytes .../Default/Extension State/000020.ldb | Bin 11534 -> 0 bytes .../Default/Extension State/000023.ldb | Bin 1008731 -> 0 bytes .../Default/Extension State/000026.ldb | Bin 2643427 -> 0 bytes .../Default/Extension State/000028.log | Bin 1641160 -> 0 bytes .../Default/Extension State/000029.ldb | Bin 1843293 -> 0 bytes .../Default/Extension State/CURRENT | 1 - .../net.imput.helium/Default/Extension State/LOCK | 0 .../net.imput.helium/Default/Extension State/LOG | 3 - .../Default/Extension State/LOG.old | 6 - .../Default/Extension State/MANIFEST-000001 | Bin 1372 -> 0 bytes .../0.7.2_0/@types/index.d.ts | 5 - .../0.7.2_0/_metadata/verified_contents.json | 1 - .../0.7.2_0/background.html | 2 - .../0.7.2_0/background.mjs | 76 - .../0.7.2_0/donation.css | 51 - .../0.7.2_0/iconfont/MaterialIconsOutlined.woff2 | Bin 223384 -> 0 bytes .../0.7.2_0/iconfont/material-icons.css | 23 - .../0.7.2_0/images/bmc-logo.svg | 6 - .../0.7.2_0/images/icon128.png | Bin 8277 -> 0 bytes .../0.7.2_0/images/icon16.png | Bin 737 -> 0 bytes .../0.7.2_0/images/icon32.png | Bin 1665 -> 0 bytes .../0.7.2_0/images/icon48.png | Bin 2738 -> 0 bytes .../0.7.2_0/images/paypal-logo.svg | 18 - .../0.7.2_0/manifest.json | 30 - .../0.7.2_0/modules/cookie_format.mjs | 49 - .../0.7.2_0/modules/get_all_cookies.mjs | 35 - .../0.7.2_0/modules/save_to_file.mjs | 30 - .../0.7.2_0/popup-options.css | 17 - .../0.7.2_0/popup.css | 116 - .../0.7.2_0/popup.dark.css | 30 - .../0.7.2_0/popup.html | 107 - .../0.7.2_0/popup.mjs | 138 - .../0.7.2_0/table-nowrap.js | 14 - .../2.4.2_0/_metadata/verified_contents.json | 1 - .../2.4.2_0/background_scripts/all_commands.js | 619 - .../2.4.2_0/background_scripts/bg_utils.js | 19 - .../2.4.2_0/background_scripts/commands.js | 501 - .../background_scripts/completion/completers.js | 811 - .../background_scripts/completion/ranking.js | 165 - .../completion/search_engines.js | 266 - .../completion/search_wrapper.js | 171 - .../2.4.2_0/background_scripts/exclusions.js | 78 - .../2.4.2_0/background_scripts/main.js | 933 - .../2.4.2_0/background_scripts/marks.js | 131 - .../2.4.2_0/background_scripts/tab_operations.js | 118 - .../2.4.2_0/background_scripts/tab_recency.js | 139 - .../background_scripts/user_search_engines.js | 53 - .../2.4.2_0/content_scripts/file_urls.css | 6 - .../2.4.2_0/content_scripts/hud.js | 278 - .../2.4.2_0/content_scripts/link_hints.js | 1559 -- .../2.4.2_0/content_scripts/marks.js | 138 - .../2.4.2_0/content_scripts/mode.js | 327 - .../2.4.2_0/content_scripts/mode_find.js | 511 - .../2.4.2_0/content_scripts/mode_insert.js | 142 - .../2.4.2_0/content_scripts/mode_key_handler.js | 149 - .../2.4.2_0/content_scripts/mode_normal.js | 553 - .../2.4.2_0/content_scripts/mode_visual.js | 615 - .../2.4.2_0/content_scripts/scroller.js | 470 - .../2.4.2_0/content_scripts/ui_component.js | 209 - .../2.4.2_0/content_scripts/vimium.css | 282 - .../2.4.2_0/content_scripts/vimium_frontend.js | 505 - .../2.4.2_0/content_scripts/vomnibar.js | 87 - .../2.4.2_0/icons/action_disabled.svg | 1 - .../2.4.2_0/icons/action_disabled_16.png | Bin 524 -> 0 bytes .../2.4.2_0/icons/action_disabled_32.png | Bin 1032 -> 0 bytes .../2.4.2_0/icons/action_enabled.svg | 1 - .../2.4.2_0/icons/action_enabled_16.png | Bin 422 -> 0 bytes .../2.4.2_0/icons/action_enabled_32.png | Bin 779 -> 0 bytes .../2.4.2_0/icons/action_partial.svg | 1 - .../2.4.2_0/icons/action_partial_16.png | Bin 436 -> 0 bytes .../2.4.2_0/icons/action_partial_32.png | Bin 819 -> 0 bytes .../2.4.2_0/icons/icon.svg | 1 - .../2.4.2_0/icons/icon128.png | Bin 10315 -> 0 bytes .../2.4.2_0/icons/icon16.png | Bin 885 -> 0 bytes .../2.4.2_0/icons/icon48.png | Bin 3451 -> 0 bytes .../2.4.2_0/lib/chrome_api_stubs.js | 83 - .../2.4.2_0/lib/dom_utils.js | 570 - .../2.4.2_0/lib/find_mode_history.js | 64 - .../2.4.2_0/lib/handler_stack.js | 172 - .../2.4.2_0/lib/keyboard_utils.js | 154 - .../2.4.2_0/lib/rect.js | 113 - .../2.4.2_0/lib/settings.js | 275 - .../2.4.2_0/lib/types.js | 14 - .../2.4.2_0/lib/url_utils.js | 135 - .../2.4.2_0/lib/utils.js | 413 - .../2.4.2_0/manifest.json | 49 - .../2.4.2_0/pages/action.css | 60 - .../2.4.2_0/pages/action.html | 101 - .../2.4.2_0/pages/action.js | 168 - .../2.4.2_0/pages/all_content_scripts.js | 27 - .../2.4.2_0/pages/command_listing.css | 117 - .../2.4.2_0/pages/command_listing.html | 61 - .../2.4.2_0/pages/command_listing.js | 85 - .../2.4.2_0/pages/doc.css | 16 - .../2.4.2_0/pages/doc_search_completion.html | 59 - .../2.4.2_0/pages/doc_search_completion.js | 53 - .../2.4.2_0/pages/exclusion_rules_editor.js | 69 - .../2.4.2_0/pages/help_dialog_page.css | 169 - .../2.4.2_0/pages/help_dialog_page.html | 109 - .../2.4.2_0/pages/help_dialog_page.js | 217 - .../2.4.2_0/pages/hud_page.css | 72 - .../2.4.2_0/pages/hud_page.html | 18 - .../2.4.2_0/pages/hud_page.js | 236 - .../2.4.2_0/pages/key_mappings.css | 52 - .../2.4.2_0/pages/options.css | 439 - .../2.4.2_0/pages/options.html | 282 - .../2.4.2_0/pages/options.js | 372 - .../2.4.2_0/pages/ui_component_messenger.js | 71 - .../2.4.2_0/pages/vomnibar_page.css | 194 - .../2.4.2_0/pages/vomnibar_page.html | 19 - .../2.4.2_0/pages/vomnibar_page.js | 476 - .../2.4.2_0/resources/tlds.txt | 1591 -- .../3.0.8_0/README.md | 16 - .../3.0.8_0/_locales/de/messages.json | 21 - .../3.0.8_0/_locales/en/messages.json | 21 - .../_metadata/generated_indexed_rulesets/_ruleset1 | Bin 883 -> 0 bytes .../3.0.8_0/_metadata/verified_contents.json | 1 - .../3.0.8_0/background/healthcheck.js | 19 - .../3.0.8_0/background/main.js | 215 - .../3.0.8_0/background/settings.js | 76 - .../3.0.8_0/css/content.css | 3 - .../3.0.8_0/icons/sp_icon_128.png | Bin 2536 -> 0 bytes .../3.0.8_0/icons/sp_icon_16.png | Bin 496 -> 0 bytes .../3.0.8_0/icons/sp_icon_48.png | Bin 1144 -> 0 bytes .../3.0.8_0/js/content.js | 227 - .../3.0.8_0/manifest.json | 53 - .../3.0.8_0/rules_1.json | 18 - .../3.0.8_0/service_worker.js | 5 - .../1.0.3_0/_metadata/verified_contents.json | 1 - .../1.0.3_0/content-scripts/initialize.js | 415 - .../1.0.3_0/images/logo.png | Bin 1410 -> 0 bytes .../1.0.3_0/images/logo128.png | Bin 1961 -> 0 bytes .../1.0.3_0/images/logo16.png | Bin 407 -> 0 bytes .../1.0.3_0/images/logo48.png | Bin 906 -> 0 bytes .../1.0.3_0/images/slider-steps.svg | 9 - .../1.0.3_0/manifest.json | 23 - .../1.0.3_0/popups/main/main.css | 870 - .../1.0.3_0/popups/main/main.html | 625 - .../1.0.3_0/popups/main/main.js | 2049 -- .../1.10.3_0/_locales/bg/messages.json | 1481 - .../1.10.3_0/_locales/ca/messages.json | 1481 - .../1.10.3_0/_locales/cs/messages.json | 1429 - .../1.10.3_0/_locales/da/messages.json | 1481 - .../1.10.3_0/_locales/de/messages.json | 1481 - .../1.10.3_0/_locales/el/messages.json | 1481 - .../1.10.3_0/_locales/en/messages.json | 1481 - .../1.10.3_0/_locales/en_GB/messages.json | 1481 - .../1.10.3_0/_locales/es/messages.json | 1481 - .../1.10.3_0/_locales/et/messages.json | 1301 - .../1.10.3_0/_locales/fi/messages.json | 1481 - .../1.10.3_0/_locales/fr/messages.json | 1481 - .../1.10.3_0/_locales/he/messages.json | 1481 - .../1.10.3_0/_locales/hu/messages.json | 1481 - .../1.10.3_0/_locales/id/messages.json | 1481 - .../1.10.3_0/_locales/it/messages.json | 1481 - .../1.10.3_0/_locales/ja/messages.json | 1481 - .../1.10.3_0/_locales/ko/messages.json | 1481 - .../1.10.3_0/_locales/la/messages.json | 1210 - .../1.10.3_0/_locales/lt/messages.json | 1481 - .../1.10.3_0/_locales/my/messages.json | 1381 - .../1.10.3_0/_locales/nb/messages.json | 1481 - .../1.10.3_0/_locales/nl/messages.json | 1481 - .../1.10.3_0/_locales/pl/messages.json | 1481 - .../1.10.3_0/_locales/pt/messages.json | 1353 - .../1.10.3_0/_locales/pt_BR/messages.json | 1481 - .../1.10.3_0/_locales/pt_PT/messages.json | 1481 - .../1.10.3_0/_locales/ro/messages.json | 1481 - .../1.10.3_0/_locales/ru/messages.json | 1481 - .../1.10.3_0/_locales/sl/messages.json | 1381 - .../1.10.3_0/_locales/sv/messages.json | 1481 - .../1.10.3_0/_locales/tr/messages.json | 1481 - .../1.10.3_0/_locales/uk/messages.json | 1481 - .../1.10.3_0/_locales/vi/messages.json | 1481 - .../1.10.3_0/_locales/zh_CN/messages.json | 1481 - .../1.10.3_0/_locales/zh_TW/messages.json | 1481 - .../1.10.3_0/_metadata/verified_contents.json | 1 - .../1.10.3_0/background/background_service.js | 22 - .../1.10.3_0/background/browserAction.js | 103 - .../1.10.3_0/background/client.js | 464 - .../1.10.3_0/background/event.js | 309 - .../1.10.3_0/background/httpauth.js | 107 - .../1.10.3_0/background/init.js | 130 - .../1.10.3_0/background/keepass.js | 1055 - .../1.10.3_0/background/nacl-util.min.js | 1 - .../1.10.3_0/background/nacl.min.js | 1 - .../1.10.3_0/background/offscreen.js | 31 - .../1.10.3_0/background/page.js | 478 - .../1.10.3_0/background/tabs.js | 216 - .../1.10.3_0/bootstrap/bootstrap.min.css | 5 - .../1.10.3_0/bootstrap/bootstrap.min.js | 6 - .../1.10.3_0/common/browser-polyfill.min.js | 8 - .../1.10.3_0/common/global.js | 230 - .../1.10.3_0/common/global_ui.js | 29 - .../1.10.3_0/common/sites.js | 303 - .../1.10.3_0/common/translate.js | 34 - .../1.10.3_0/content/autocomplete.js | 408 - .../1.10.3_0/content/banner.js | 476 - .../1.10.3_0/content/credential-autocomplete.js | 49 - .../1.10.3_0/content/custom-fields-banner.js | 827 - .../1.10.3_0/content/fields.js | 679 - .../1.10.3_0/content/fill.js | 500 - .../1.10.3_0/content/form.js | 297 - .../1.10.3_0/content/icon-handler.js | 249 - .../1.10.3_0/content/icon.js | 67 - .../1.10.3_0/content/keepassxc-browser.js | 1024 - .../1.10.3_0/content/observer-helper.js | 408 - .../1.10.3_0/content/passkeys-inject.js | 127 - .../1.10.3_0/content/passkeys-utils.js | 140 - .../1.10.3_0/content/passkeys.js | 250 - .../1.10.3_0/content/pwgen.js | 163 - .../1.10.3_0/content/totp-autocomplete.js | 40 - .../1.10.3_0/content/totp-field.js | 192 - .../1.10.3_0/content/ui.js | 357 - .../1.10.3_0/content/username-field.js | 167 - .../1.10.3_0/css/autocomplete.css | 172 - .../1.10.3_0/css/banner.css | 230 - .../1.10.3_0/css/button.css | 58 - .../1.10.3_0/css/colors.css | 116 - .../1.10.3_0/css/define.css | 61 - .../1.10.3_0/css/notification.css | 82 - .../1.10.3_0/css/pwgen.css | 21 - .../1.10.3_0/css/totp.css | 21 - .../1.10.3_0/css/username.css | 51 - .../1.10.3_0/fonts/fork-awesome.min.css | 12 - .../1.10.3_0/fonts/forkawesome-webfont.woff2 | Bin 91624 -> 0 bytes .../1.10.3_0/icons/custom_login_fields.svg | 17 - .../1.10.3_0/icons/disconnected.svg | 1 - .../1.10.3_0/icons/help.svg | 1 - .../1.10.3_0/icons/keepassxc-dark_128x128.png | Bin 8558 -> 0 bytes .../1.10.3_0/icons/keepassxc-dark_16x16.png | Bin 821 -> 0 bytes .../1.10.3_0/icons/keepassxc-dark_18x18.png | Bin 966 -> 0 bytes .../1.10.3_0/icons/keepassxc-dark_19x19.png | Bin 1052 -> 0 bytes .../1.10.3_0/icons/keepassxc-dark_32x32.png | Bin 1986 -> 0 bytes .../1.10.3_0/icons/keepassxc-dark_36x36.png | Bin 2216 -> 0 bytes .../1.10.3_0/icons/keepassxc-dark_38x38.png | Bin 2337 -> 0 bytes .../1.10.3_0/icons/keepassxc-dark_48x48.png | Bin 2993 -> 0 bytes .../1.10.3_0/icons/keepassxc-dark_64x64.png | Bin 4032 -> 0 bytes .../1.10.3_0/icons/keepassxc.svg | 113 - .../1.10.3_0/icons/keepassxc_128x128.png | Bin 10288 -> 0 bytes .../1.10.3_0/icons/keepassxc_16x16.png | Bin 830 -> 0 bytes .../1.10.3_0/icons/keepassxc_18x18.png | Bin 926 -> 0 bytes .../1.10.3_0/icons/keepassxc_19x19.png | Bin 1047 -> 0 bytes .../1.10.3_0/icons/keepassxc_32x32.png | Bin 1946 -> 0 bytes .../1.10.3_0/icons/keepassxc_36x36.png | Bin 2087 -> 0 bytes .../1.10.3_0/icons/keepassxc_38x38.png | Bin 2640 -> 0 bytes .../1.10.3_0/icons/keepassxc_48x48.png | Bin 3088 -> 0 bytes .../1.10.3_0/icons/keepassxc_64x64.png | Bin 4477 -> 0 bytes .../1.10.3_0/icons/keepassxc_96x96.png | Bin 8065 -> 0 bytes .../1.10.3_0/icons/key.svg | 1 - .../1.10.3_0/icons/locked.svg | 1 - .../1.10.3_0/icons/otp.svg | 1 - .../1.10.3_0/icons/toolbar/colored/icon_bang.png | Bin 4697 -> 0 bytes .../1.10.3_0/icons/toolbar/colored/icon_bang.svg | 1 - .../1.10.3_0/icons/toolbar/colored/icon_cross.png | Bin 4512 -> 0 bytes .../1.10.3_0/icons/toolbar/colored/icon_cross.svg | 1 - .../1.10.3_0/icons/toolbar/colored/icon_dark.png | Bin 4548 -> 0 bytes .../1.10.3_0/icons/toolbar/colored/icon_dark.svg | 1 - .../1.10.3_0/icons/toolbar/colored/icon_locked.png | Bin 4720 -> 0 bytes .../1.10.3_0/icons/toolbar/colored/icon_locked.svg | 1 - .../icons/toolbar/colored/icon_new_bang.png | Bin 5378 -> 0 bytes .../icons/toolbar/colored/icon_new_bang.svg | 1 - .../icons/toolbar/colored/icon_new_cross.png | Bin 5161 -> 0 bytes .../icons/toolbar/colored/icon_new_cross.svg | 1 - .../icons/toolbar/colored/icon_new_locked.png | Bin 5389 -> 0 bytes .../icons/toolbar/colored/icon_new_locked.svg | 1 - .../icons/toolbar/colored/icon_new_normal.png | Bin 5381 -> 0 bytes .../icons/toolbar/colored/icon_new_normal.svg | 1 - .../1.10.3_0/icons/toolbar/colored/icon_normal.png | Bin 4652 -> 0 bytes .../1.10.3_0/icons/toolbar/colored/icon_normal.svg | 1 - .../1.10.3_0/icons/toolbar/dark/icon_bang.png | Bin 2891 -> 0 bytes .../1.10.3_0/icons/toolbar/dark/icon_bang.svg | 1 - .../1.10.3_0/icons/toolbar/dark/icon_cross.png | Bin 3071 -> 0 bytes .../1.10.3_0/icons/toolbar/dark/icon_cross.svg | 1 - .../1.10.3_0/icons/toolbar/dark/icon_dark.png | Bin 2644 -> 0 bytes .../1.10.3_0/icons/toolbar/dark/icon_dark.svg | 1 - .../1.10.3_0/icons/toolbar/dark/icon_locked.png | Bin 3108 -> 0 bytes .../1.10.3_0/icons/toolbar/dark/icon_locked.svg | 1 - .../1.10.3_0/icons/toolbar/dark/icon_new_bang.png | Bin 3794 -> 0 bytes .../1.10.3_0/icons/toolbar/dark/icon_new_bang.svg | 1 - .../1.10.3_0/icons/toolbar/dark/icon_new_cross.png | Bin 3980 -> 0 bytes .../1.10.3_0/icons/toolbar/dark/icon_new_cross.svg | 1 - .../icons/toolbar/dark/icon_new_locked.png | Bin 4007 -> 0 bytes .../icons/toolbar/dark/icon_new_locked.svg | 1 - .../icons/toolbar/dark/icon_new_normal.png | Bin 3467 -> 0 bytes .../icons/toolbar/dark/icon_new_normal.svg | 1 - .../1.10.3_0/icons/toolbar/dark/icon_normal.png | Bin 2541 -> 0 bytes .../1.10.3_0/icons/toolbar/dark/icon_normal.svg | 1 - .../1.10.3_0/icons/toolbar/light/icon_bang.png | Bin 3693 -> 0 bytes .../1.10.3_0/icons/toolbar/light/icon_bang.svg | 1 - .../1.10.3_0/icons/toolbar/light/icon_cross.png | Bin 3950 -> 0 bytes .../1.10.3_0/icons/toolbar/light/icon_cross.svg | 1 - .../1.10.3_0/icons/toolbar/light/icon_dark.png | Bin 3701 -> 0 bytes .../1.10.3_0/icons/toolbar/light/icon_dark.svg | 1 - .../1.10.3_0/icons/toolbar/light/icon_locked.png | Bin 3874 -> 0 bytes .../1.10.3_0/icons/toolbar/light/icon_locked.svg | 1 - .../1.10.3_0/icons/toolbar/light/icon_new_bang.png | Bin 4462 -> 0 bytes .../1.10.3_0/icons/toolbar/light/icon_new_bang.svg | 1 - .../icons/toolbar/light/icon_new_cross.png | Bin 4706 -> 0 bytes .../icons/toolbar/light/icon_new_cross.svg | 1 - .../icons/toolbar/light/icon_new_locked.png | Bin 4625 -> 0 bytes .../icons/toolbar/light/icon_new_locked.svg | 1 - .../icons/toolbar/light/icon_new_normal.png | Bin 4304 -> 0 bytes .../icons/toolbar/light/icon_new_normal.svg | 1 - .../1.10.3_0/icons/toolbar/light/icon_normal.png | Bin 3540 -> 0 bytes .../1.10.3_0/icons/toolbar/light/icon_normal.svg | 1 - .../1.10.3_0/managed_storage.json | 216 - .../1.10.3_0/manifest.json | 116 - .../1.10.3_0/offscreen/offscreen.html | 7 - .../1.10.3_0/offscreen/offscreen.js | 9 - .../1.10.3_0/options/getting_started.css | 19 - .../1.10.3_0/options/getting_started.html | 114 - .../1.10.3_0/options/getting_started.js | 61 - .../1.10.3_0/options/http-auth-dialog.png | Bin 17539 -> 0 bytes .../1.10.3_0/options/options.css | 307 - .../1.10.3_0/options/options.html | 1138 - .../1.10.3_0/options/options.js | 1008 - .../1.10.3_0/options/shortcuts.css | 74 - .../1.10.3_0/options/shortcuts.html | 82 - .../1.10.3_0/options/shortcuts.js | 199 - .../1.10.3_0/popups/popup.css | 216 - .../1.10.3_0/popups/popup.html | 147 - .../1.10.3_0/popups/popup.js | 167 - .../1.10.3_0/popups/popup_functions.js | 64 - .../1.10.3_0/popups/popup_httpauth.html | 65 - .../1.10.3_0/popups/popup_httpauth.js | 54 - .../1.10.3_0/popups/popup_login.html | 63 - .../1.10.3_0/popups/popup_login.js | 80 - .../1.4.4_0/LICENSE.txt | 675 - .../1.4.4_0/_locales/am/messages.json | 734 - .../1.4.4_0/_locales/ar/messages.json | 734 - .../1.4.4_0/_locales/bg/messages.json | 734 - .../1.4.4_0/_locales/bn/messages.json | 734 - .../1.4.4_0/_locales/ca/messages.json | 734 - .../1.4.4_0/_locales/cs/messages.json | 734 - .../1.4.4_0/_locales/da/messages.json | 734 - .../1.4.4_0/_locales/de/messages.json | 734 - .../1.4.4_0/_locales/el/messages.json | 734 - .../1.4.4_0/_locales/en/messages.json | 734 - .../1.4.4_0/_locales/eo/messages.json | 734 - .../1.4.4_0/_locales/es/messages.json | 734 - .../1.4.4_0/_locales/et/messages.json | 734 - .../1.4.4_0/_locales/fa/messages.json | 734 - .../1.4.4_0/_locales/fi/messages.json | 734 - .../1.4.4_0/_locales/fil/messages.json | 734 - .../1.4.4_0/_locales/fr/messages.json | 734 - .../1.4.4_0/_locales/gu/messages.json | 734 - .../1.4.4_0/_locales/he/messages.json | 734 - .../1.4.4_0/_locales/hi/messages.json | 734 - .../1.4.4_0/_locales/hr/messages.json | 734 - .../1.4.4_0/_locales/hu/messages.json | 734 - .../1.4.4_0/_locales/id/messages.json | 734 - .../1.4.4_0/_locales/it/messages.json | 734 - .../1.4.4_0/_locales/ja/messages.json | 734 - .../1.4.4_0/_locales/kn/messages.json | 734 - .../1.4.4_0/_locales/ko/messages.json | 734 - .../1.4.4_0/_locales/lt/messages.json | 734 - .../1.4.4_0/_locales/lv/messages.json | 734 - .../1.4.4_0/_locales/ml/messages.json | 734 - .../1.4.4_0/_locales/mr/messages.json | 734 - .../1.4.4_0/_locales/ms/messages.json | 734 - .../1.4.4_0/_locales/nb/messages.json | 734 - .../1.4.4_0/_locales/nl/messages.json | 734 - .../1.4.4_0/_locales/no/messages.json | 734 - .../1.4.4_0/_locales/pl/messages.json | 734 - .../1.4.4_0/_locales/pt_BR/messages.json | 734 - .../1.4.4_0/_locales/pt_PT/messages.json | 734 - .../1.4.4_0/_locales/ro/messages.json | 734 - .../1.4.4_0/_locales/ru/messages.json | 734 - .../1.4.4_0/_locales/sk/messages.json | 734 - .../1.4.4_0/_locales/sl/messages.json | 734 - .../1.4.4_0/_locales/sr/messages.json | 734 - .../1.4.4_0/_locales/sv/messages.json | 734 - .../1.4.4_0/_locales/sw/messages.json | 734 - .../1.4.4_0/_locales/ta/messages.json | 734 - .../1.4.4_0/_locales/te/messages.json | 734 - .../1.4.4_0/_locales/th/messages.json | 734 - .../1.4.4_0/_locales/tr/messages.json | 734 - .../1.4.4_0/_locales/uk/messages.json | 734 - .../1.4.4_0/_locales/vi/messages.json | 734 - .../1.4.4_0/_locales/zh_CN/messages.json | 734 - .../1.4.4_0/_locales/zh_TW/messages.json | 734 - .../1.4.4_0/_metadata/verified_contents.json | 1 - .../1.4.4_0/about.html | 66 - .../1.4.4_0/asset-viewer.html | 21 - .../1.4.4_0/assets/assets.json | 59 - .../mirror1.malwaredomains.com/files/README.md | 3 - .../mirror1.malwaredomains.com/files/justdomains | 26858 ------------------- .../assets/thirdparties/pgl.yoyo.org/as/README.md | 29 - .../assets/thirdparties/pgl.yoyo.org/as/serverlist | 3583 --- .../publicsuffix.org/list/effective_tld_names.dat | 13556 ---------- .../someonewhocares.org/hosts/hosts.txt | 14964 ----------- .../thirdparties/winhelp2002.mvps.org/hosts.txt | 10066 ------- .../www.malwaredomainlist.com/hostslist/README.md | 3 - .../www.malwaredomainlist.com/hostslist/hosts.txt | 1110 - .../1.4.4_0/assets/umatrix/recipes_en.txt | 335 - .../1.4.4_0/background.html | 38 - .../1.4.4_0/cloud-ui.html | 21 - .../1.4.4_0/css/cloud-ui.css | 89 - .../1.4.4_0/css/codemirror.css | 28 - .../1.4.4_0/css/common.css | 113 - .../1.4.4_0/css/dashboard-common.css | 81 - .../1.4.4_0/css/dashboard.css | 63 - .../1.4.4_0/css/fa-icons.css | 106 - .../1.4.4_0/css/fonts/Roboto_Condensed/LICENSE.txt | 202 - .../Roboto_Condensed/RobotoCondensed-Light.ttf | Bin 141384 -> 0 bytes .../Roboto_Condensed/RobotoCondensed-Regular.ttf | Bin 140396 -> 0 bytes .../1.4.4_0/css/hosts-files.css | 165 - .../1.4.4_0/css/logger-ui.css | 425 - .../1.4.4_0/css/main-blocked.css | 116 - .../1.4.4_0/css/popup.css | 649 - .../1.4.4_0/css/raw-settings.css | 20 - .../1.4.4_0/css/scope-selector.css | 84 - .../1.4.4_0/css/user-rules.css | 85 - .../1.4.4_0/dashboard.html | 32 - .../1.4.4_0/hosts-files.html | 78 - .../1.4.4_0/img/browsericons/icon19-0.png | Bin 817 -> 0 bytes .../1.4.4_0/img/browsericons/icon19-1.png | Bin 830 -> 0 bytes .../1.4.4_0/img/browsericons/icon19-10.png | Bin 840 -> 0 bytes .../1.4.4_0/img/browsericons/icon19-11.png | Bin 814 -> 0 bytes .../1.4.4_0/img/browsericons/icon19-12.png | Bin 829 -> 0 bytes .../1.4.4_0/img/browsericons/icon19-13.png | Bin 825 -> 0 bytes .../1.4.4_0/img/browsericons/icon19-14.png | Bin 808 -> 0 bytes .../1.4.4_0/img/browsericons/icon19-15.png | Bin 822 -> 0 bytes .../1.4.4_0/img/browsericons/icon19-16.png | Bin 808 -> 0 bytes .../1.4.4_0/img/browsericons/icon19-17.png | Bin 792 -> 0 bytes .../1.4.4_0/img/browsericons/icon19-18.png | Bin 761 -> 0 bytes .../1.4.4_0/img/browsericons/icon19-19.png | Bin 534 -> 0 bytes .../1.4.4_0/img/browsericons/icon19-2.png | Bin 836 -> 0 bytes .../1.4.4_0/img/browsericons/icon19-3.png | Bin 836 -> 0 bytes .../1.4.4_0/img/browsericons/icon19-4.png | Bin 827 -> 0 bytes .../1.4.4_0/img/browsericons/icon19-5.png | Bin 837 -> 0 bytes .../1.4.4_0/img/browsericons/icon19-6.png | Bin 833 -> 0 bytes .../1.4.4_0/img/browsericons/icon19-7.png | Bin 823 -> 0 bytes .../1.4.4_0/img/browsericons/icon19-8.png | Bin 818 -> 0 bytes .../1.4.4_0/img/browsericons/icon19-9.png | Bin 830 -> 0 bytes .../1.4.4_0/img/browsericons/icon19-off.png | Bin 777 -> 0 bytes .../1.4.4_0/img/browsericons/icon38-off.png | Bin 2255 -> 0 bytes .../1.4.4_0/img/cloud.png | Bin 5017 -> 0 bytes .../1.4.4_0/img/fontawesome/LICENSE.txt | 25 - .../1.4.4_0/img/fontawesome/fontawesome-defs.svg | 61 - .../1.4.4_0/img/icon_128.png | Bin 9449 -> 0 bytes .../1.4.4_0/img/icon_16.png | Bin 616 -> 0 bytes .../1.4.4_0/img/icon_64.png | Bin 5483 -> 0 bytes .../1.4.4_0/img/matrix-group-hide.png | Bin 253 -> 0 bytes .../1.4.4_0/img/matrix-group-hline.png | Bin 178 -> 0 bytes .../1.4.4_0/img/matrix-group-show.png | Bin 257 -> 0 bytes .../1.4.4_0/img/permanent-black-small-cb.png | Bin 159 -> 0 bytes .../1.4.4_0/img/permanent-black-small.png | Bin 243 -> 0 bytes .../1.4.4_0/img/permanent-white-small-cb.png | Bin 151 -> 0 bytes .../1.4.4_0/img/permanent-white-small.png | Bin 246 -> 0 bytes .../1.4.4_0/js/about.js | 146 - .../1.4.4_0/js/asset-viewer.js | 45 - .../1.4.4_0/js/assets.js | 935 - .../1.4.4_0/js/background.js | 227 - .../1.4.4_0/js/browsercache.js | 62 - .../1.4.4_0/js/cloud-ui.js | 209 - .../1.4.4_0/js/contentscript-no-inline-script.js | 62 - .../1.4.4_0/js/contentscript-no-workers.js | 62 - .../1.4.4_0/js/contentscript-start.js | 96 - .../1.4.4_0/js/contentscript.js | 552 - .../1.4.4_0/js/cookies.js | 557 - .../1.4.4_0/js/dashboard-common.js | 40 - .../1.4.4_0/js/dashboard.js | 55 - .../1.4.4_0/js/fa-icons.js | 52 - .../1.4.4_0/js/hosts-files.js | 464 - .../1.4.4_0/js/httpsb.js | 96 - .../1.4.4_0/js/i18n.js | 208 - .../1.4.4_0/js/liquid-dict.js | 199 - .../1.4.4_0/js/logger-ui.js | 1232 - .../1.4.4_0/js/logger.js | 90 - .../1.4.4_0/js/main-blocked.js | 177 - .../1.4.4_0/js/matrix.js | 886 - .../1.4.4_0/js/messaging.js | 1034 - .../1.4.4_0/js/pagestats.js | 268 - .../1.4.4_0/js/popup.js | 1592 -- .../1.4.4_0/js/raw-settings.js | 115 - .../1.4.4_0/js/recipe-manager.js | 272 - .../1.4.4_0/js/scope-selector.js | 152 - .../1.4.4_0/js/settings.js | 195 - .../1.4.4_0/js/start.js | 115 - .../1.4.4_0/js/storage.js | 991 - .../1.4.4_0/js/tab.js | 742 - .../1.4.4_0/js/traffic.js | 664 - .../1.4.4_0/js/udom.js | 728 - .../1.4.4_0/js/uritools.js | 417 - .../1.4.4_0/js/user-rules.js | 536 - .../1.4.4_0/js/usersettings.js | 60 - .../1.4.4_0/js/utils.js | 109 - .../1.4.4_0/js/vapi-background.js | 812 - .../1.4.4_0/js/vapi-client.js | 253 - .../1.4.4_0/js/vapi-common.js | 214 - .../1.4.4_0/js/vapi-webrequest.js | 198 - .../1.4.4_0/lib/codemirror/LICENSE | 21 - .../1.4.4_0/lib/codemirror/README.md | 49 - .../1.4.4_0/lib/codemirror/addon/merge/merge.css | 119 - .../1.4.4_0/lib/codemirror/addon/merge/merge.js | 1002 - .../lib/codemirror/addon/selection/active-line.js | 72 - .../1.4.4_0/lib/codemirror/lib/codemirror.css | 346 - .../1.4.4_0/lib/codemirror/lib/codemirror.js | 9693 ------- .../1.4.4_0/lib/diff/README.md | 34 - .../1.4.4_0/lib/diff/swatinem_diff.js | 207 - .../1.4.4_0/lib/publicsuffixlist.js | 343 - .../1.4.4_0/lib/punycode.js | 530 - .../1.4.4_0/logger-ui.html | 85 - .../1.4.4_0/main-blocked.html | 43 - .../1.4.4_0/manifest.json | 43 - .../1.4.4_0/popup.html | 129 - .../1.4.4_0/raw-settings.html | 34 - .../1.4.4_0/settings.html | 126 - .../1.4.4_0/user-rules.html | 68 - .../3.3.0_0/_locales/ar/messages.json | 161 - .../3.3.0_0/_locales/bn/messages.json | 160 - .../3.3.0_0/_locales/bs/messages.json | 160 - .../3.3.0_0/_locales/cs/messages.json | 160 - .../3.3.0_0/_locales/de/messages.json | 160 - .../3.3.0_0/_locales/delete.py | 75 - .../3.3.0_0/_locales/en/messages.json | 160 - .../3.3.0_0/_locales/eo/messages.json | 145 - .../3.3.0_0/_locales/es/messages.json | 160 - .../3.3.0_0/_locales/fa/messages.json | 137 - .../3.3.0_0/_locales/fi/messages.json | 160 - .../3.3.0_0/_locales/fil/messages.json | 137 - .../3.3.0_0/_locales/filter.py | 60 - .../3.3.0_0/_locales/fr/messages.json | 160 - .../3.3.0_0/_locales/gl/messages.json | 160 - .../3.3.0_0/_locales/hi/messages.json | 2 - .../3.3.0_0/_locales/hr/messages.json | 160 - .../3.3.0_0/_locales/hu/messages.json | 137 - .../3.3.0_0/_locales/id/messages.json | 160 - .../3.3.0_0/_locales/it/messages.json | 160 - .../3.3.0_0/_locales/ja/messages.json | 160 - .../3.3.0_0/_locales/jv/messages.json | 145 - .../3.3.0_0/_locales/ko/messages.json | 145 - .../3.3.0_0/_locales/lv/messages.json | 95 - .../3.3.0_0/_locales/nb_NO/messages.json | 145 - .../3.3.0_0/_locales/nl/messages.json | 160 - .../3.3.0_0/_locales/pl/messages.json | 160 - .../3.3.0_0/_locales/pt/messages.json | 145 - .../3.3.0_0/_locales/pt_BR/messages.json | 160 - .../3.3.0_0/_locales/ro/messages.json | 157 - .../3.3.0_0/_locales/ru/messages.json | 160 - .../3.3.0_0/_locales/sr/messages.json | 160 - .../3.3.0_0/_locales/ta/messages.json | 137 - .../3.3.0_0/_locales/tr/messages.json | 160 - .../3.3.0_0/_locales/uk/messages.json | 160 - .../3.3.0_0/_locales/vi/messages.json | 145 - .../3.3.0_0/_locales/zh_Hans/messages.json | 160 - .../3.3.0_0/_locales/zh_Hant/messages.json | 160 - .../3.3.0_0/assets/images/about-icon-light.svg | 1 - .../3.3.0_0/assets/images/about-icon.svg | 1 - .../3.3.0_0/assets/images/baiduTieba-icon.svg | 72 - .../3.3.0_0/assets/images/bandcamp-icon.svg | 1 - .../3.3.0_0/assets/images/bilibili-icon-light.svg | 1 - .../3.3.0_0/assets/images/bilibili-icon.svg | 1 - .../3.3.0_0/assets/images/bluesky-icon.svg | 1 - .../3.3.0_0/assets/images/chatGpt-icon-light.svg | 10 - .../3.3.0_0/assets/images/chatGpt-icon.svg | 1 - .../3.3.0_0/assets/images/chefkoch-icon.svg | 43 - .../3.3.0_0/assets/images/coub-icon.svg | 44 - .../3.3.0_0/assets/images/deviantArt-icon.svg | 474 - .../3.3.0_0/assets/images/fandom-icon.svg | 1 - .../3.3.0_0/assets/images/geeksForGeeks-icon.svg | 39 - .../3.3.0_0/assets/images/general-icon-light.svg | 1 - .../3.3.0_0/assets/images/general-icon.svg | 1 - .../3.3.0_0/assets/images/genius-icon.svg | 1 - .../3.3.0_0/assets/images/github-icon-light.svg | 1 - .../3.3.0_0/assets/images/github-icon.svg | 1 - .../3.3.0_0/assets/images/gitlab-icon.svg | 1 - .../3.3.0_0/assets/images/goodreads-icon-light.svg | 1 - .../3.3.0_0/assets/images/goodreads-icon.svg | 1 - .../3.3.0_0/assets/images/ifunny-icon.svg | 1 - .../3.3.0_0/assets/images/imdb-icon.svg | 1 - .../3.3.0_0/assets/images/imgur-icon.svg | 1 - .../3.3.0_0/assets/images/instagram-icon.svg | 1 - .../3.3.0_0/assets/images/instructables-icon.svg | 1 - .../3.3.0_0/assets/images/knowyourmeme-icon.svg | 1 - .../3.3.0_0/assets/images/libredirect-128.png | Bin 3445 -> 0 bytes .../3.3.0_0/assets/images/libredirect-16.png | Bin 483 -> 0 bytes .../3.3.0_0/assets/images/libredirect-32.png | Bin 931 -> 0 bytes .../3.3.0_0/assets/images/libredirect-48.png | Bin 1385 -> 0 bytes .../3.3.0_0/assets/images/libredirect-64.png | Bin 2040 -> 0 bytes .../3.3.0_0/assets/images/libredirect-96.png | Bin 2929 -> 0 bytes .../3.3.0_0/assets/images/libredirect.png | Bin 42515 -> 0 bytes .../3.3.0_0/assets/images/libredirect.svg | 1 - .../3.3.0_0/assets/images/maps-icon-light.svg | 1 - .../3.3.0_0/assets/images/maps-icon.svg | 1 - .../3.3.0_0/assets/images/medium-icon.svg | 1 - .../3.3.0_0/assets/images/meet-icon-light.svg | 1 - .../3.3.0_0/assets/images/meet-icon.svg | 1 - .../3.3.0_0/assets/images/mozhi-icon.svg | 154 - .../3.3.0_0/assets/images/office-icon-light.svg | 1 - .../3.3.0_0/assets/images/office-icon.svg | 1 - .../3.3.0_0/assets/images/pastebin-icon-light.svg | 101 - .../3.3.0_0/assets/images/pastebin-icon.svg | 2 - .../3.3.0_0/assets/images/peertube-icon.svg | 1 - .../3.3.0_0/assets/images/pinterest-icon.svg | 1 - .../3.3.0_0/assets/images/pixiv-icon.svg | 1 - .../3.3.0_0/assets/images/quora-icon.svg | 1 - .../3.3.0_0/assets/images/reddit-icon.svg | 1 - .../3.3.0_0/assets/images/reuters-icon.svg | 1 - .../3.3.0_0/assets/images/search-icon-light.svg | 1 - .../3.3.0_0/assets/images/search-icon.svg | 1 - .../3.3.0_0/assets/images/sendFiles-icon-light.svg | 1 - .../3.3.0_0/assets/images/sendFiles-icon.svg | 1 - .../3.3.0_0/assets/images/snopes-icon.svg | 1 - .../3.3.0_0/assets/images/soundcloud-icon.svg | 1 - .../assets/images/stackOverflow-icon-light.svg | 1 - .../3.3.0_0/assets/images/stackOverflow-icon.svg | 1 - .../3.3.0_0/assets/images/tekstowo-icon.svg | 1 - .../3.3.0_0/assets/images/tenor-icon.svg | 1 - .../assets/images/textStorage-icon-light.svg | 1 - .../3.3.0_0/assets/images/textStorage-icon.svg | 1 - .../3.3.0_0/assets/images/threads-icon-light.svg | 21 - .../3.3.0_0/assets/images/threads-icon.svg | 18 - .../3.3.0_0/assets/images/tiktok-icon.svg | 1 - .../3.3.0_0/assets/images/translate-icon-light.svg | 1 - .../3.3.0_0/assets/images/translate-icon.svg | 1 - .../3.3.0_0/assets/images/tumblr-icon.svg | 1 - .../3.3.0_0/assets/images/twitch-icon.svg | 1 - .../3.3.0_0/assets/images/twitter-icon.svg | 1 - .../3.3.0_0/assets/images/ultimateGuitar-icon.svg | 1 - .../3.3.0_0/assets/images/urbanDictionary-icon.svg | 1 - .../assets/images/waybackMachine-icon-light.svg | 1 - .../3.3.0_0/assets/images/waybackMachine-icon.svg | 1 - .../3.3.0_0/assets/images/wikipedia-icon.svg | 1 - .../3.3.0_0/assets/images/wolframAlpha-icon.svg | 1 - .../3.3.0_0/assets/images/youtube-icon.svg | 1 - .../3.3.0_0/assets/images/youtubeMusic-icon.svg | 1 - .../3.3.0_0/assets/javascripts/services.js | 1108 - .../3.3.0_0/assets/javascripts/utils.js | 297 - .../3.3.0_0/config.json | 1526 -- .../3.3.0_0/manifest.json | 86 - .../3.3.0_0/pages/background/background.html | 7 - .../3.3.0_0/pages/background/background.js | 361 - .../3.3.0_0/pages/components/Button.svelte | 35 - .../3.3.0_0/pages/components/Checkbox.svelte | 52 - .../3.3.0_0/pages/components/Input.svelte | 46 - .../3.3.0_0/pages/components/Label.svelte | 18 - .../3.3.0_0/pages/components/Row.svelte | 12 - .../3.3.0_0/pages/components/Select.svelte | 34 - .../pages/fonts/Inter-VariableFont_slnt,wght.ttf | Bin 803384 -> 0 bytes .../pages/fonts/Vazirmatn-VariableFont_wght.ttf | Bin 285620 -> 0 bytes .../3.3.0_0/pages/fonts/styles.css | 13 - .../3.3.0_0/pages/icons/AboutIcon.svelte | 11 - .../3.3.0_0/pages/icons/AddIcon.svelte | 7 - .../3.3.0_0/pages/icons/AutoPickIcon.svelte | 11 - .../3.3.0_0/pages/icons/CloseIcon.svelte | 7 - .../3.3.0_0/pages/icons/CopyIcon.svelte | 12 - .../3.3.0_0/pages/icons/ExportIcon.svelte | 12 - .../3.3.0_0/pages/icons/GeneralIcon.svelte | 13 - .../3.3.0_0/pages/icons/ImportIcon.svelte | 12 - .../3.3.0_0/pages/icons/PingIcon.svelte | 12 - .../3.3.0_0/pages/icons/RedirectIcon.svelte | 10 - .../pages/icons/RedirectToOriginalIcon.svelte | 13 - .../3.3.0_0/pages/icons/ResetIcon.svelte | 16 - .../3.3.0_0/pages/icons/ServicesIcon.svelte | 11 - .../3.3.0_0/pages/icons/SettingsIcon.svelte | 15 - .../3.3.0_0/pages/icons/SwitchInstanceIcon.svelte | 15 - .../3.3.0_0/pages/messages/build/bundle.css | 2 - .../3.3.0_0/pages/messages/build/bundle.js | 2 - .../3.3.0_0/pages/messages/build/bundle.js.map | 1 - .../3.3.0_0/pages/messages/index.html | 14 - .../3.3.0_0/pages/messages_src/App.svelte | 134 - .../3.3.0_0/pages/messages_src/main.js | 7 - .../3.3.0_0/pages/messages_src/stores.js | 5 - .../3.3.0_0/pages/options/build/bundle.css | 17 - .../3.3.0_0/pages/options/build/bundle.js | 2 - .../3.3.0_0/pages/options/build/bundle.js.map | 1 - .../3.3.0_0/pages/options/index.html | 17 - .../3.3.0_0/pages/options_src/App.svelte | 101 - .../pages/options_src/General/Exceptions.svelte | 110 - .../pages/options_src/General/General.svelte | 98 - .../options_src/General/SettingsButtons.svelte | 110 - .../pages/options_src/Services/FrontendIcon.svelte | 41 - .../pages/options_src/Services/Instances.svelte | 310 - .../pages/options_src/Services/RedirectType.svelte | 102 - .../pages/options_src/Services/ServiceIcon.svelte | 40 - .../pages/options_src/Services/Services.svelte | 274 - .../3.3.0_0/pages/options_src/Sidebar.svelte | 69 - .../3.3.0_0/pages/options_src/main.js | 7 - .../3.3.0_0/pages/options_src/stores.js | 4 - .../3.3.0_0/pages/options_src/url.js | 38 - .../3.3.0_0/pages/popup/build/bundle.css | 6 - .../3.3.0_0/pages/popup/build/bundle.js | 2 - .../3.3.0_0/pages/popup/build/bundle.js.map | 1 - .../3.3.0_0/pages/popup/index.html | 17 - .../3.3.0_0/pages/popup_src/App.svelte | 78 - .../3.3.0_0/pages/popup_src/Buttons.svelte | 243 - .../3.3.0_0/pages/popup_src/components/Row.svelte | 12 - .../pages/popup_src/components/ServiceIcon.svelte | 40 - .../pages/popup_src/components/Switch.svelte | 81 - .../3.3.0_0/pages/popup_src/main.js | 7 - .../3.3.0_0/pages/popup_src/stores.js | 5 - .../3.3.0_0/updates/updates.xml | 6 - .../11.1.0_0/_locales/ca/messages.json | 2944 -- .../11.1.0_0/_locales/de/messages.json | 2944 -- .../11.1.0_0/_locales/en/messages.json | 2944 -- .../11.1.0_0/_locales/es/messages.json | 2944 -- .../11.1.0_0/_locales/fr/messages.json | 2944 -- .../11.1.0_0/_locales/it/messages.json | 2944 -- .../11.1.0_0/_locales/nl/messages.json | 2944 -- .../11.1.0_0/_locales/pl/messages.json | 2944 -- .../11.1.0_0/_locales/pt_BR/messages.json | 2944 -- .../11.1.0_0/_locales/pt_PT/messages.json | 2944 -- .../11.1.0_0/_locales/ru/messages.json | 2944 -- .../11.1.0_0/_locales/uk/messages.json | 2944 -- .../11.1.0_0/_metadata/verified_contents.json | 1 - .../assets/emojibase-data/emojis/de/data.json | 1 - .../assets/emojibase-data/emojis/en/data.json | 1 - .../assets/emojibase-data/emojis/es/data.json | 1 - .../assets/emojibase-data/emojis/fr/data.json | 1 - .../assets/emojibase-data/emojis/it/data.json | 1 - .../assets/emojibase-data/emojis/nl/data.json | 1 - .../assets/emojibase-data/emojis/pl/data.json | 1 - .../assets/emojibase-data/emojis/pt/data.json | 1 - .../assets/emojibase-data/emojis/ru/data.json | 1 - .../assets/emojibase-data/emojis/uk/data.json | 1 - .../assets/emojibase-data/keywords/de/data.json | 1 - .../assets/emojibase-data/keywords/en/data.json | 1 - .../assets/emojibase-data/keywords/es/data.json | 1 - .../assets/emojibase-data/keywords/fr/data.json | 1 - .../assets/emojibase-data/keywords/it/data.json | 1 - .../assets/emojibase-data/keywords/nl/data.json | 1 - .../assets/emojibase-data/keywords/pl/data.json | 1 - .../assets/emojibase-data/keywords/pt/data.json | 1 - .../assets/emojibase-data/keywords/ru/data.json | 1 - .../assets/emojibase-data/keywords/uk/data.json | 1 - .../assets/fonts/Roboto-Mono-latin-bold.woff2 | Bin 12288 -> 0 bytes .../fonts/Source-Sans-Pro-cycrillic-bold-mac.woff2 | Bin 7484 -> 0 bytes .../fonts/Source-Sans-Pro-cycrillic-bold-win.woff2 | Bin 9540 -> 0 bytes .../Source-Sans-Pro-cycrillic-ext-bold-mac.woff2 | Bin 5224 -> 0 bytes .../Source-Sans-Pro-cycrillic-ext-bold-win.woff2 | Bin 6696 -> 0 bytes .../fonts/Source-Sans-Pro-cycrillic-ext-mac.woff2 | Bin 5360 -> 0 bytes ...urce-Sans-Pro-cycrillic-ext-semi-bold-mac.woff2 | Bin 5268 -> 0 bytes ...urce-Sans-Pro-cycrillic-ext-semi-bold-win.woff2 | Bin 6816 -> 0 bytes .../fonts/Source-Sans-Pro-cycrillic-ext-win.woff2 | Bin 6868 -> 0 bytes .../fonts/Source-Sans-Pro-cycrillic-mac.woff2 | Bin 7748 -> 0 bytes .../Source-Sans-Pro-cycrillic-semi-bold-mac.woff2 | Bin 7584 -> 0 bytes .../Source-Sans-Pro-cycrillic-semi-bold-win.woff2 | Bin 9696 -> 0 bytes .../fonts/Source-Sans-Pro-cycrillic-win.woff2 | Bin 9684 -> 0 bytes .../fonts/Source-Sans-Pro-greek-bold-mac.woff2 | Bin 6696 -> 0 bytes .../fonts/Source-Sans-Pro-greek-bold-win.woff2 | Bin 8280 -> 0 bytes .../fonts/Source-Sans-Pro-greek-ext-bold-mac.woff2 | Bin 6244 -> 0 bytes .../fonts/Source-Sans-Pro-greek-ext-bold-win.woff2 | Bin 7360 -> 0 bytes .../fonts/Source-Sans-Pro-greek-ext-mac.woff2 | Bin 6348 -> 0 bytes .../Source-Sans-Pro-greek-ext-semi-bold-mac.woff2 | Bin 6320 -> 0 bytes .../Source-Sans-Pro-greek-ext-semi-bold-win.woff2 | Bin 7244 -> 0 bytes .../fonts/Source-Sans-Pro-greek-ext-win.woff2 | Bin 7376 -> 0 bytes .../assets/fonts/Source-Sans-Pro-greek-mac.woff2 | Bin 6840 -> 0 bytes .../Source-Sans-Pro-greek-semi-bold-mac.woff2 | Bin 6644 -> 0 bytes .../Source-Sans-Pro-greek-semi-bold-win.woff2 | Bin 8248 -> 0 bytes .../assets/fonts/Source-Sans-Pro-greek-win.woff2 | Bin 8444 -> 0 bytes .../fonts/Source-Sans-Pro-latin-bold-mac.woff2 | Bin 12976 -> 0 bytes .../fonts/Source-Sans-Pro-latin-bold-win.woff2 | Bin 15764 -> 0 bytes .../fonts/Source-Sans-Pro-latin-ext-bold-mac.woff2 | Bin 12168 -> 0 bytes .../fonts/Source-Sans-Pro-latin-ext-bold-win.woff2 | Bin 14808 -> 0 bytes .../fonts/Source-Sans-Pro-latin-ext-mac.woff2 | Bin 12352 -> 0 bytes .../Source-Sans-Pro-latin-ext-semi-bold-mac.woff2 | Bin 12160 -> 0 bytes .../Source-Sans-Pro-latin-ext-semi-bold-win.woff2 | Bin 15016 -> 0 bytes .../fonts/Source-Sans-Pro-latin-ext-win.woff2 | Bin 14960 -> 0 bytes .../assets/fonts/Source-Sans-Pro-latin-mac.woff2 | Bin 13324 -> 0 bytes .../Source-Sans-Pro-latin-semi-bold-mac.woff2 | Bin 13108 -> 0 bytes .../Source-Sans-Pro-latin-semi-bold-win.woff2 | Bin 15948 -> 0 bytes .../assets/fonts/Source-Sans-Pro-latin-win.woff2 | Bin 16112 -> 0 bytes .../Source-Sans-Pro-vietnamese-bold-mac.woff2 | Bin 4480 -> 0 bytes .../Source-Sans-Pro-vietnamese-bold-win.woff2 | Bin 5676 -> 0 bytes .../fonts/Source-Sans-Pro-vietnamese-mac.woff2 | Bin 4592 -> 0 bytes .../Source-Sans-Pro-vietnamese-semi-bold-mac.woff2 | Bin 4520 -> 0 bytes .../Source-Sans-Pro-vietnamese-semi-bold-win.woff2 | Bin 5784 -> 0 bytes .../fonts/Source-Sans-Pro-vietnamese-win.woff2 | Bin 5804 -> 0 bytes .../assets/images/16/black/add_on_icon_16_ai.svg | 3 - .../images/16/black/add_on_icon_16_black_logo.svg | 1 - .../images/16/black/add_on_icon_16_missing.svg | 3 - .../images/16/black/add_on_icon_16_scissors.svg | 6 - .../assets/images/16/special/add_on_icon_16_ai.svg | 3 - .../16/special/add_on_icon_16_blue_picky.svg | 1 - .../images/16/special/add_on_icon_16_premium.svg | 1 - .../add_on_icon_16_special_switch_active.svg | 1 - .../add_on_icon_16_special_switch_inactive.svg | 1 - .../images/16/white/add_on_icon_16_white_logo.svg | 1 - .../white/add_on_icon_16_white_switch_active.svg | 1 - .../white/add_on_icon_16_white_switch_inactive.svg | 1 - .../images/20/black/add_on_icon_20_black_add.svg | 1 - .../20/black/add_on_icon_20_black_add_circle.svg | 1 - .../20/black/add_on_icon_20_black_ai_tools.svg | 4 - .../20/black/add_on_icon_20_black_arrow_left.svg | 4 - .../20/black/add_on_icon_20_black_arrow_right.svg | 4 - .../20/black/add_on_icon_20_black_basic_error.svg | 1 - .../20/black/add_on_icon_20_black_blocked.svg | 1 - .../20/black/add_on_icon_20_black_bookmark.svg | 1 - .../images/20/black/add_on_icon_20_black_check.svg | 3 - .../20/black/add_on_icon_20_black_check_circle.svg | 1 - .../20/black/add_on_icon_20_black_chevron_down.svg | 1 - .../black/add_on_icon_20_black_chevron_right.svg | 1 - .../20/black/add_on_icon_20_black_chevron_up.svg | 1 - .../20/black/add_on_icon_20_black_close_circle.svg | 1 - .../20/black/add_on_icon_20_black_close_filled.svg | 1 - .../20/black/add_on_icon_20_black_close_small.svg | 1 - .../20/black/add_on_icon_20_black_dictionary.svg | 1 - .../20/black/add_on_icon_20_black_disable.svg | 3 - .../black/add_on_icon_20_black_disable_circle.svg | 1 - .../add_on_icon_20_black_disabled_website.svg | 1 - .../add_on_icon_20_black_experimental_settings.svg | 1 - .../20/black/add_on_icon_20_black_feedback.svg | 1 - .../images/20/black/add_on_icon_20_black_gear.svg | 1 - .../20/black/add_on_icon_20_black_glasses.svg | 1 - .../images/20/black/add_on_icon_20_black_globe.svg | 1 - .../images/20/black/add_on_icon_20_black_help.svg | 1 - .../images/20/black/add_on_icon_20_black_info.svg | 1 - .../20/black/add_on_icon_20_black_kebab_menu.svg | 3 - .../20/black/add_on_icon_20_black_loading.svg | 3 - .../20/black/add_on_icon_20_black_locked.svg | 1 - .../20/black/add_on_icon_20_black_lollipop.png | Bin 16592 -> 0 bytes .../20/black/add_on_icon_20_black_lollipop.svg | 1 - .../black/add_on_icon_20_black_magic_toolbox.svg | 3 - .../20/black/add_on_icon_20_black_new_window.svg | 1 - .../images/20/black/add_on_icon_20_black_pause.svg | 1 - .../20/black/add_on_icon_20_black_privacy.svg | 3 - .../20/black/add_on_icon_20_black_reload.svg | 5 - .../images/20/black/add_on_icon_20_black_save.svg | 1 - .../20/black/add_on_icon_20_black_synonyms.svg | 1 - .../images/20/black/add_on_icon_20_black_trash.svg | 1 - .../add_on_icon_20_black_uppercase_ignore.svg | 1 - .../black/add_on_icon_20_black_user_statistics.svg | 7 - .../20/black/add_on_icon_20_black_view_default.svg | 1 - .../20/black/add_on_icon_20_black_view_left.svg | 1 - .../20/black/add_on_icon_20_black_view_right.svg | 1 - .../20/black/add_on_icon_20_black_view_scroll.svg | 1 - .../20/special/add_on_icon_20_blue_arrow_down.svg | 1 - .../20/special/add_on_icon_20_blue_arrow_left.svg | 4 - .../20/special/add_on_icon_20_blue_arrow_right.svg | 4 - .../20/special/add_on_icon_20_blue_check.svg | 1 - .../special/add_on_icon_20_blue_chevron_down.svg | 1 - .../20/special/add_on_icon_20_blue_expand.svg | 1 - .../20/special/add_on_icon_20_blue_insert.svg | 3 - .../20/special/add_on_icon_20_blue_narrow_down.svg | 1 - .../20/special/add_on_icon_20_color_logo.svg | 1 - .../20/special/add_on_icon_20_orange_check.svg | 1 - .../images/20/special/add_on_icon_20_premium.svg | 3 - .../images/20/white/add_on_icon_20_white_add.svg | 1 - .../20/white/add_on_icon_20_white_add_circle.svg | 1 - .../20/white/add_on_icon_20_white_ai_tools.svg | 4 - .../20/white/add_on_icon_20_white_ai_tools_2.svg | 9 - .../20/white/add_on_icon_20_white_arrow_left.svg | 4 - .../20/white/add_on_icon_20_white_arrow_right.svg | 4 - .../20/white/add_on_icon_20_white_basic_error.svg | 1 - .../20/white/add_on_icon_20_white_blocked.svg | 1 - .../20/white/add_on_icon_20_white_bookmark.svg | 1 - .../images/20/white/add_on_icon_20_white_check.svg | 3 - .../20/white/add_on_icon_20_white_check_circle.svg | 1 - .../20/white/add_on_icon_20_white_chevron_down.svg | 1 - .../20/white/add_on_icon_20_white_chevron_up.svg | 1 - .../20/white/add_on_icon_20_white_close_circle.svg | 1 - .../20/white/add_on_icon_20_white_close_filled.svg | 1 - .../20/white/add_on_icon_20_white_close_small.svg | 1 - .../20/white/add_on_icon_20_white_dictionary.svg | 1 - .../20/white/add_on_icon_20_white_disable.svg | 3 - .../white/add_on_icon_20_white_disable_circle.svg | 1 - .../add_on_icon_20_white_disabled_website.svg | 1 - .../20/white/add_on_icon_20_white_expand.svg | 1 - .../add_on_icon_20_white_experimental_settings.svg | 1 - .../20/white/add_on_icon_20_white_feedback.svg | 1 - .../images/20/white/add_on_icon_20_white_gear.svg | 1 - .../20/white/add_on_icon_20_white_glasses.svg | 1 - .../images/20/white/add_on_icon_20_white_globe.svg | 1 - .../images/20/white/add_on_icon_20_white_help.svg | 1 - .../images/20/white/add_on_icon_20_white_info.svg | 1 - .../20/white/add_on_icon_20_white_kebab_menu.svg | 3 - .../20/white/add_on_icon_20_white_loading.svg | 3 - .../20/white/add_on_icon_20_white_locked.svg | 1 - .../20/white/add_on_icon_20_white_lollipop.png | Bin 39332 -> 0 bytes .../20/white/add_on_icon_20_white_lollipop.svg | 1 - .../images/20/white/add_on_icon_20_white_lt.svg | 1 - .../white/add_on_icon_20_white_magic_toolbox.svg | 3 - .../20/white/add_on_icon_20_white_narrow_down.svg | 1 - .../20/white/add_on_icon_20_white_new_window.svg | 1 - .../images/20/white/add_on_icon_20_white_pause.svg | 1 - .../20/white/add_on_icon_20_white_premium.svg | 3 - .../20/white/add_on_icon_20_white_privacy.svg | 3 - .../20/white/add_on_icon_20_white_reload.svg | 5 - .../20/white/add_on_icon_20_white_rephrasing.svg | 3 - .../images/20/white/add_on_icon_20_white_save.svg | 1 - .../20/white/add_on_icon_20_white_synonyms.svg | 1 - .../images/20/white/add_on_icon_20_white_trash.svg | 1 - .../add_on_icon_20_white_uppercase_ignore.svg | 1 - .../white/add_on_icon_20_white_user_statistics.svg | 7 - .../20/white/add_on_icon_20_white_view_default.svg | 1 - .../20/white/add_on_icon_20_white_view_left.svg | 1 - .../20/white/add_on_icon_20_white_view_right.svg | 1 - .../white/add_on_icon_20_white_view_scroll-to.svg | 1 - .../20/white/add_on_icon_20_white_view_scroll.svg | 1 - .../background-skeleton-loading-dark-mode.webp | Bin 5022 -> 0 bytes .../backgrounds/background-skeleton-loading.webp | Bin 7134 -> 0 bytes .../assets/images/backgrounds/elements.svg | 1 - .../11.1.0_0/assets/images/card-drag-handle.svg | 3 - .../11.1.0_0/assets/images/favicon.ico | Bin 1150 -> 0 bytes .../11.1.0_0/assets/images/flags/ar.svg | 1 - .../11.1.0_0/assets/images/flags/ast-es.svg | 1 - .../11.1.0_0/assets/images/flags/be-by.svg | 1 - .../11.1.0_0/assets/images/flags/br-fr.svg | 1 - .../assets/images/flags/ca-es-valencia.svg | 1 - .../11.1.0_0/assets/images/flags/ca-es.svg | 1 - .../11.1.0_0/assets/images/flags/crh-ua.svg | 1 - .../11.1.0_0/assets/images/flags/da-dk.svg | 1 - .../11.1.0_0/assets/images/flags/de-at.svg | 1 - .../11.1.0_0/assets/images/flags/de-ch.svg | 1 - .../11.1.0_0/assets/images/flags/de-de.svg | 1 - .../11.1.0_0/assets/images/flags/el-gr.svg | 1 - .../11.1.0_0/assets/images/flags/en-au.svg | 1 - .../11.1.0_0/assets/images/flags/en-ca.svg | 1 - .../11.1.0_0/assets/images/flags/en-gb.svg | 1 - .../11.1.0_0/assets/images/flags/en-nz.svg | 1 - .../11.1.0_0/assets/images/flags/en-us.svg | 1 - .../11.1.0_0/assets/images/flags/en-za.svg | 1 - .../11.1.0_0/assets/images/flags/eo.svg | 1 - .../11.1.0_0/assets/images/flags/es.svg | 1 - .../11.1.0_0/assets/images/flags/eu.svg | 1 - .../11.1.0_0/assets/images/flags/fa.svg | 1 - .../11.1.0_0/assets/images/flags/fr.svg | 1 - .../11.1.0_0/assets/images/flags/ga-ie.svg | 1 - .../11.1.0_0/assets/images/flags/gl-es.svg | 1 - .../11.1.0_0/assets/images/flags/globe_dark.svg | 1 - .../11.1.0_0/assets/images/flags/globe_white.svg | 1 - .../11.1.0_0/assets/images/flags/it.svg | 1 - .../11.1.0_0/assets/images/flags/ja-jp.svg | 1 - .../11.1.0_0/assets/images/flags/km-kh.svg | 1 - .../11.1.0_0/assets/images/flags/nl.svg | 1 - .../11.1.0_0/assets/images/flags/no.svg | 1 - .../11.1.0_0/assets/images/flags/not_found.svg | 1 - .../11.1.0_0/assets/images/flags/oc.svg | 1 - .../11.1.0_0/assets/images/flags/pl-pl.svg | 1 - .../11.1.0_0/assets/images/flags/pt-ao.svg | 1 - .../11.1.0_0/assets/images/flags/pt-br.svg | 1 - .../11.1.0_0/assets/images/flags/pt-mz.svg | 1 - .../11.1.0_0/assets/images/flags/pt-pt.svg | 1 - .../11.1.0_0/assets/images/flags/ro-ro.svg | 1 - .../11.1.0_0/assets/images/flags/ru-ru.svg | 1 - .../11.1.0_0/assets/images/flags/sk-sk.svg | 1 - .../11.1.0_0/assets/images/flags/sl-si.svg | 1 - .../11.1.0_0/assets/images/flags/sv.svg | 1 - .../11.1.0_0/assets/images/flags/ta-in.svg | 1 - .../11.1.0_0/assets/images/flags/tl-ph.svg | 1 - .../11.1.0_0/assets/images/flags/uk-ua.svg | 1 - .../11.1.0_0/assets/images/flags/zh-cn.svg | 1 - .../11.1.0_0/assets/images/hint-arrow.png | Bin 410 -> 0 bytes .../11.1.0_0/assets/images/icons/drag.svg | 12 - .../11.1.0_0/assets/images/icons/icon128.png | Bin 13799 -> 0 bytes .../11.1.0_0/assets/images/icons/icon128_white.png | Bin 902 -> 0 bytes .../11.1.0_0/assets/images/icons/icon16.png | Bin 417 -> 0 bytes .../11.1.0_0/assets/images/icons/icon16_white.png | Bin 214 -> 0 bytes .../11.1.0_0/assets/images/icons/icon32.png | Bin 608 -> 0 bytes .../11.1.0_0/assets/images/icons/icon32_white.png | Bin 316 -> 0 bytes .../11.1.0_0/assets/images/icons/icon48.png | Bin 2810 -> 0 bytes .../11.1.0_0/assets/images/icons/icon48_white.png | Bin 406 -> 0 bytes .../11.1.0_0/assets/images/icons/icon64.png | Bin 4487 -> 0 bytes .../11.1.0_0/assets/images/icons/icon64_white.png | Bin 641 -> 0 bytes .../illustrations/color/color_dialog_disabled.svg | 1 - .../illustrations/color/color_dialog_errors.svg | 1 - .../color/color_dialog_language_not_supported.svg | 1 - .../illustrations/color/color_dialog_no_errors.svg | 1 - .../color/color_dialog_scroll_hint.gif | Bin 22460 -> 0 bytes .../color/color_dialog_text_too_long.svg | 1 - .../color/color_dialog_text_too_short.svg | 1 - .../illustrations/color/color_dialog_update.svg | 1 - .../color/desktop_app_teaser_illustration_mac.png | Bin 5913 -> 0 bytes .../desktop_app_teaser_illustration_windows.png | Bin 5236 -> 0 bytes .../illustrations/color/google_docs_teaser.svg | 1 - .../illustrations/color/google_slides_teaser.svg | 1 - .../images/illustrations/color/mascot-2x.png | Bin 3430 -> 0 bytes .../images/illustrations/color/mascot-error-2x.png | Bin 5535 -> 0 bytes .../images/illustrations/color/mascot-error.png | Bin 3578 -> 0 bytes .../images/illustrations/color/mascot-happy-2x.png | Bin 5829 -> 0 bytes .../images/illustrations/color/mascot-happy.png | Bin 3716 -> 0 bytes .../images/illustrations/color/mascot-sad-2x.png | Bin 3618 -> 0 bytes .../images/illustrations/color/mascot-sad.png | Bin 5694 -> 0 bytes .../illustrations/color/mascot-weeping-2x.png | Bin 3024 -> 0 bytes .../images/illustrations/color/mascot-weeping.png | Bin 1631 -> 0 bytes .../assets/images/illustrations/color/mascot.png | Bin 5455 -> 0 bytes .../images/illustrations/color/overleaf_teaser.svg | 1 - .../color/rephrasing_illustration-2x.png | Bin 14793 -> 0 bytes .../color/rephrasing_illustration.png | Bin 5883 -> 0 bytes .../color/rephrasing_illustration_de-2x.png | Bin 14735 -> 0 bytes .../color/rephrasing_illustration_de.png | Bin 5983 -> 0 bytes .../color/rephrasing_illustration_es-2x.png | Bin 14014 -> 0 bytes .../color/rephrasing_illustration_es.png | Bin 5667 -> 0 bytes .../color/rephrasing_illustration_fr-2x.png | Bin 14400 -> 0 bytes .../color/rephrasing_illustration_fr.png | Bin 6011 -> 0 bytes .../color/rephrasing_illustration_pt-2x.png | Bin 14189 -> 0 bytes .../color/rephrasing_illustration_pt.png | Bin 5405 -> 0 bytes .../images/illustrations/color/undo-button.svg | 1 - .../images/illustrations/white/white_add.svg | 1 - .../illustrations/white/white_dialog_disabled.svg | 1 - .../illustrations/white/white_dialog_errors.svg | 1 - .../white/white_dialog_language_not_supported.svg | 1 - .../illustrations/white/white_dialog_no_errors.svg | 1 - .../white/white_dialog_text_too_long.svg | 1 - .../white/white_dialog_text_too_short.svg | 1 - .../illustrations/white/white_dialog_update.svg | 1 - .../images/illustrations/white/white_failure.svg | 1 - .../images/illustrations/white/white_no_errors.svg | 1 - .../images/illustrations/white/white_premium.svg | 1 - .../assets/images/logos/logo_color_circle.svg | 1 - .../images/logos/logo_color_with_background.svg | 1 - .../11.1.0_0/assets/images/lt-favicon-color.png | Bin 390 -> 0 bytes .../images/lt-favicon-color_notification.png | Bin 434 -> 0 bytes .../11.1.0_0/assets/images/lt-favicon-white.png | Bin 291 -> 0 bytes .../images/lt-favicon-white_notification.png | Bin 422 -> 0 bytes .../assets/images/lt-logo_gdocs_selected.svg | 1 - .../assets/images/lt-logo_gdocs_unselected.svg | 1 - .../assets/images/messages/message_turn_on.gif | Bin 613809 -> 0 bytes .../images/messages/message_turn_on_safari.gif | Bin 289616 -> 0 bytes .../11.1.0_0/assets/images/ratings/thumpsdown.svg | 1 - .../11.1.0_0/assets/images/ratings/thumpsup.svg | 1 - .../11.1.0_0/assets/images/stores/chrome_store.svg | 1 - .../11.1.0_0/assets/images/stores/edge_store.svg | 1 - .../assets/images/stores/firefox_store.svg | 1 - .../11.1.0_0/assets/images/stores/opera_store.svg | 1 - .../11.1.0_0/assets/images/stores/safari_store.svg | 1 - .../11.1.0_0/assets/images/toolbarStates/done.svg | 1 - .../images/toolbarStates/error_counts_white.png | Bin 5674 -> 0 bytes .../assets/images/toolbarStates/loading.webp | Bin 25270 -> 0 bytes .../assets/images/toolbarStates/progress.gif | Bin 1498 -> 0 bytes .../assets/images/toolbarStates/progress_2x.gif | Bin 2394 -> 0 bytes .../assets/images/toolbarStates/text_too_long.svg | 1 - .../assets/images/toolbarStates/toolbar_failed.png | Bin 173 -> 0 bytes .../toolbar_language_not_supported.svg | 1 - .../toolbarStates/toolbar_permission_required.svg | 1 - .../assets/images/toolbarStates/turnoff.svg | 1 - .../11.1.0_0/assets/images/toolbarStates/wave.svg | 1 - .../images/toolbox/contextual-cursor-icon-dark.svg | 4 - .../toolbox/contextual-cursor-icon-light.svg | 4 - .../assets/images/toolbox/lollipop-icon-gdocs.svg | 1 - .../assets/images/toolbox/lollipop-icon.svg | 1 - .../images/toolbox/lollipop-onboarding-lt.svg | 52 - .../images/toolbox/lollipop-onboarding-lt.webp | Bin 546544 -> 0 bytes .../11.1.0_0/assets/libs/segment.srx | 9108 ------- .../assets/toolbox/keywords/en/keywords.json | 7043 ----- .../11.1.0_0/background.js | 42 - .../11.1.0_0/changelog/changelog.css | 900 - .../11.1.0_0/changelog/changelog.html | 506 - .../11.1.0_0/changelog/changelog.js | 34 - .../2023/big/changelog-big-illustration_ai.png | Bin 36573 -> 0 bytes .../big/changelog-big-illustration_desktop_mac.png | Bin 182789 -> 0 bytes .../changelog-big-illustration_desktop_windows.png | Bin 215366 -> 0 bytes .../changelog-big-illustration_french_version.png | Bin 31934 -> 0 bytes .../big/changelog-big-illustration_statistics.png | Bin 36789 -> 0 bytes .../changelog-big-illustration_user_mgmt_de.png | Bin 37735 -> 0 bytes .../changelog-big-illustration_user_mgmt_en.png | Bin 34108 -> 0 bytes .../changelog-big-illustration_user_mgmt_es.png | Bin 34040 -> 0 bytes .../changelog-big-illustration_user_mgmt_fr.png | Bin 34507 -> 0 bytes .../changelog-big-illustration_user_mgmt_nl.png | Bin 34077 -> 0 bytes .../changelog-big-illustration_user_mgmt_pt.png | Bin 34491 -> 0 bytes ...changelog-big-illustration_writing_goals_de.png | Bin 36785 -> 0 bytes ...changelog-big-illustration_writing_goals_en.png | Bin 35234 -> 0 bytes ...changelog-big-illustration_writing_goals_es.png | Bin 34821 -> 0 bytes ...changelog-big-illustration_writing_goals_fr.png | Bin 35081 -> 0 bytes ...changelog-big-illustration_writing_goals_nl.png | Bin 37261 -> 0 bytes ...changelog-big-illustration_writing_goals_pt.png | Bin 35568 -> 0 bytes .../2023/small/changelog-illustration_ai.png | Bin 2409 -> 0 bytes .../small/changelog-illustration_desktop_mac.png | Bin 4962 -> 0 bytes .../changelog-illustration_desktop_windows.png | Bin 2675 -> 0 bytes .../changelog-illustration_french_version.png | Bin 7279 -> 0 bytes .../small/changelog-illustration_statistics.png | Bin 2550 -> 0 bytes .../small/changelog-illustration_user_mgmt.png | Bin 2664 -> 0 bytes .../2023/small/changelog-illustration_word.png | Bin 8006 -> 0 bytes .../small/changelog-illustration_writing_goals.png | Bin 2643 -> 0 bytes .../11.1.0_0/changelog/images/ai_sparks.svg | 1 - .../11.1.0_0/changelog/images/button_ios.png | Bin 12125 -> 0 bytes .../11.1.0_0/changelog/images/button_mac.png | Bin 4595 -> 0 bytes .../11.1.0_0/changelog/images/button_windows.png | Bin 2154 -> 0 bytes .../images/changelog-background_confetti.jpg | Bin 187846 -> 0 bytes .../images/changelog-background_services.png | Bin 56116 -> 0 bytes .../changelog-big-illustration_business_de.png | Bin 51811 -> 0 bytes .../changelog-big-illustration_business_en.png | Bin 51491 -> 0 bytes .../changelog-big-illustration_business_es.png | Bin 51847 -> 0 bytes .../changelog-big-illustration_business_fr.png | Bin 51751 -> 0 bytes .../changelog-big-illustration_business_nl.png | Bin 51576 -> 0 bytes .../changelog-big-illustration_business_pt.png | Bin 52301 -> 0 bytes .../changelog-big-illustration_desktop_mac_de.png | Bin 149658 -> 0 bytes .../changelog-big-illustration_desktop_mac_en.png | Bin 150881 -> 0 bytes .../changelog-big-illustration_desktop_mac_es.png | Bin 150923 -> 0 bytes .../changelog-big-illustration_desktop_mac_fr.png | Bin 149092 -> 0 bytes .../changelog-big-illustration_desktop_mac_nl.png | Bin 147845 -> 0 bytes .../changelog-big-illustration_desktop_mac_pt.png | Bin 147945 -> 0 bytes .../changelog-big-illustration_desktop_windows.png | Bin 29934 -> 0 bytes ...angelog-big-illustration_desktop_windows_de.png | Bin 30086 -> 0 bytes ...angelog-big-illustration_desktop_windows_en.png | Bin 29734 -> 0 bytes .../changelog-big-illustration_libreoffice_en.png | Bin 74393 -> 0 bytes .../changelog-big-illustration_mobile_de.png | Bin 239172 -> 0 bytes .../changelog-big-illustration_mobile_en.png | Bin 197297 -> 0 bytes .../images/changelog-big-illustration_overleaf.svg | 1 - .../changelog-big-illustration_paraphrasing_de.png | Bin 113290 -> 0 bytes .../changelog-big-illustration_paraphrasing_en.png | Bin 113957 -> 0 bytes .../changelog-big-illustration_paraphrasing_es.png | Bin 75267 -> 0 bytes .../changelog-big-illustration_paraphrasing_fr.png | Bin 73839 -> 0 bytes .../changelog-big-illustration_paraphrasing_nl.png | Bin 49321 -> 0 bytes .../changelog-big-illustration_paraphrasing_pt.png | Bin 111611 -> 0 bytes .../images/changelog-big-illustration_slides.svg | 1 - .../changelog-big-illustration_style_guide_de.png | Bin 40947 -> 0 bytes .../changelog-big-illustration_style_guide_en.png | Bin 40891 -> 0 bytes .../changelog-big-illustration_style_guide_es.png | Bin 41206 -> 0 bytes .../changelog-big-illustration_style_guide_fr.png | Bin 41518 -> 0 bytes .../changelog-big-illustration_style_guide_nl.png | Bin 42588 -> 0 bytes .../changelog-big-illustration_style_guide_pt.png | Bin 42509 -> 0 bytes .../images/changelog-big-illustration_team.png | Bin 83572 -> 0 bytes .../changelog-big-illustration_thunderbird.png | Bin 77585 -> 0 bytes .../images/changelog-big-illustration_word.png | Bin 122324 -> 0 bytes .../images/changelog-illustration_app.png | Bin 5465 -> 0 bytes .../images/changelog-illustration_editor.png | Bin 2322 -> 0 bytes .../images/changelog-illustration_french.png | Bin 9056 -> 0 bytes .../images/changelog-illustration_libreoffice.png | Bin 3415 -> 0 bytes .../images/changelog-illustration_macos_app.png | Bin 17538 -> 0 bytes .../images/changelog-illustration_mobile.png | Bin 5581 -> 0 bytes .../images/changelog-illustration_overleaf.png | Bin 3565 -> 0 bytes .../images/changelog-illustration_paraphrasing.png | Bin 4369 -> 0 bytes .../images/changelog-illustration_slides.png | Bin 3414 -> 0 bytes .../images/changelog-illustration_spanish.png | Bin 8235 -> 0 bytes .../images/changelog-illustration_style.png | Bin 4134 -> 0 bytes .../images/changelog-illustration_style_guide.png | Bin 3887 -> 0 bytes .../images/changelog-illustration_team.png | Bin 2655 -> 0 bytes .../images/changelog-illustration_thunderbird.png | Bin 4517 -> 0 bytes .../images/changelog-illustration_translate.png | Bin 3490 -> 0 bytes .../images/changelog-illustration_word.png | Bin 3754 -> 0 bytes .../11.1.0_0/changelog/images/changelog-logo.svg | 1 - .../changelog/images/changelog-logo_no-claim.svg | 1 - .../changelog/images/changelog_2021_style_de.mp4 | Bin 848481 -> 0 bytes .../changelog/images/changelog_2021_style_en.mp4 | Bin 788299 -> 0 bytes .../changelog/images/changelog_2021_style_es.mp4 | Bin 836853 -> 0 bytes .../changelog/images/changelog_2021_style_fr.mp4 | Bin 833512 -> 0 bytes .../changelog/images/changelog_icon_lt.svg | 1 - .../11.1.0_0/changelog/images/eu_flag.svg | 1 - .../changelog/images/spanish-premium-video.mp4 | Bin 127100 -> 0 bytes .../11.1.0_0/chunks/116.8b7e94.js | 1 - .../11.1.0_0/chunks/275.f1d017.js | 1 - .../11.1.0_0/chunks/282.788b18.js | 1 - .../11.1.0_0/chunks/315.3883be.js | 1 - .../11.1.0_0/chunks/962.b5d5fd.js | 1 - .../11.1.0_0/common/base.css | 551 - .../11.1.0_0/common/fonts.css | 366 - .../11.1.0_0/common/loadFonts.js | 1 - .../11.1.0_0/common/smoothscroll.js | 667 - .../11.1.0_0/content.js | 181 - .../content/editors/google/gdocs-content.js | 1 - .../content/editors/google/gslides-content.js | 1 - .../11.1.0_0/content/executor.js | 1 - .../11.1.0_0/content/languagetool/injector.js | 1 - .../11.1.0_0/content/outlook/content.js | 1 - .../11.1.0_0/content/safari/injector.js | 1 - .../11.1.0_0/content/styles/lollipop.css | 543 - .../11.1.0_0/content/styles/shadow.css | 12532 --------- .../11.1.0_0/content/styles/styles.css | 12630 --------- .../11.1.0_0/content/thunderbird/content.js | 1 - .../11.1.0_0/core/TextFieldV2/ARCHITECTURE.md | 323 - .../core/language-detection/language-router.md | 464 - .../11.1.0_0/core/models/segment.xml | 6998 ----- .../11.1.0_0/extension-loader.js | 1 - .../11.1.0_0/feedbackForm/feedbackForm.css | 861 - .../11.1.0_0/feedbackForm/feedbackForm.html | 56 - .../11.1.0_0/feedbackForm/feedbackForm.js | 36 - .../11.1.0_0/libs/segment.srx | 9108 ------- .../11.1.0_0/lollipop/demo.html | 135 - .../11.1.0_0/lollipop/test_cases.html | 83 - .../11.1.0_0/managed_settings.json | 43 - .../11.1.0_0/manifest.json | 90 - .../11.1.0_0/options/options.css | 4444 --- .../11.1.0_0/options/options.html | 619 - .../11.1.0_0/options/options.js | 79 - .../11.1.0_0/popup/popup.css | 1729 -- .../11.1.0_0/popup/popup.html | 136 - .../11.1.0_0/popup/popup.js | 143 - .../additional-error-suggestion.tsx | 141 - .../react/components/card-base/card-base.tsx | 371 - .../components/card-base/custom-card-base.tsx | 106 - .../react/components/card-base/drag-handle.tsx | 39 - .../react/components/card-content/card-content.tsx | 178 - .../react/components/countdown/countdown.tsx | 71 - .../11.1.0_0/react/components/diff/diff.tsx | 69 - .../components/editor-card/custom-editor-card.tsx | 62 - .../react/components/editor-card/editor-card.tsx | 206 - .../components/error-boundary/error-boundary.tsx | 30 - .../components/error-content/error-content.tsx | 540 - .../fix-sentence-content/fix-sentence-content.tsx | 119 - .../11.1.0_0/react/components/icon/icon.tsx | 288 - .../keyboard-navigation-hint.tsx | 26 - .../keyboard-navigation/keyboard-navigation.tsx | 278 - .../components/loading-content/loading-content.tsx | 41 - .../react/components/mascot-says/mascot-says.tsx | 36 - .../11.1.0_0/react/components/menu/menu.tsx | 71 - .../paraphrasing-content/paraphrasing-content.tsx | 448 - .../rephrase-content/rephrase-content.tsx | 35 - .../rephrasing-teaser/rephrasing-teaser.tsx | 91 - .../components/scrollable-area/scrollable-area.tsx | 74 - .../sentence-splitting-content.tsx | 67 - .../synonyms-content/synonyms-content.tsx | 212 - .../components/toolbox-content/toolbox-content.tsx | 292 - .../react/views/editor-card/editor-card.tsx | 34 - .../11.1.0_0/react/views/icon/icon.tsx | 40 - .../11.1.0_0/react/views/menu/menu.tsx | 13 - .../11.1.0_0/toolbox/toolbox.css | 4141 --- .../11.1.0_0/toolbox/toolbox.html | 55 - .../11.1.0_0/toolbox/toolbox.js | 98 - .../11.1.0_0/trial/trial.js | 34 - .../11.1.0_0/validator/loadValidator.js | 1 - .../11.1.0_0/validator/validator.css | 258 - .../11.1.0_0/validator/validator.html | 69 - .../11.1.0_0/validator/validator.js | 133 - .../11.1.0_0/welcome/loginRedirectUri.html | 23 - .../11.1.0_0/welcome/loginRedirectUri.js | 1 - .../11.1.0_0/welcome/managedLoginRedirectUri.html | 23 - .../11.1.0_0/welcome/managedLoginRedirectUri.js | 1 - .../11.1.0_0/welcome/templates/index.html | 15 - .../11.1.0_0/welcome/welcome.css | 1288 - .../11.1.0_0/welcome/welcome.js | 1 - .../.config/net.imput.helium/Default/Favicons | Bin 2326528 -> 0 bytes .../net.imput.helium/Default/Favicons-journal | 0 .../Feature Engagement Tracker/AvailabilityDB/LOCK | 0 .../Feature Engagement Tracker/AvailabilityDB/LOG | 0 .../AvailabilityDB/LOG.old | 0 .../Feature Engagement Tracker/EventDB/LOCK | 0 .../Default/Feature Engagement Tracker/EventDB/LOG | 0 .../Feature Engagement Tracker/EventDB/LOG.old | 0 .../Default/File System/000/t/.usage | Bin 24 -> 0 bytes .../Default/File System/000/t/Paths/000003.log | 0 .../Default/File System/000/t/Paths/CURRENT | 1 - .../Default/File System/000/t/Paths/LOCK | 0 .../Default/File System/000/t/Paths/LOG | 2 - .../File System/000/t/Paths/MANIFEST-000001 | Bin 41 -> 0 bytes .../Default/File System/001/t/.usage | Bin 24 -> 0 bytes .../Default/File System/001/t/02/00000263 | 1 - .../Default/File System/001/t/Paths/000003.log | Bin 120542 -> 0 bytes .../Default/File System/001/t/Paths/CURRENT | 1 - .../Default/File System/001/t/Paths/LOCK | 0 .../Default/File System/001/t/Paths/LOG | 3 - .../Default/File System/001/t/Paths/LOG.old | 3 - .../File System/001/t/Paths/MANIFEST-000001 | Bin 41 -> 0 bytes .../Default/File System/002/t/.usage | Bin 24 -> 0 bytes .../Default/File System/002/t/Paths/000003.log | Bin 1998 -> 0 bytes .../Default/File System/002/t/Paths/CURRENT | 1 - .../Default/File System/002/t/Paths/LOCK | 0 .../Default/File System/002/t/Paths/LOG | 3 - .../Default/File System/002/t/Paths/LOG.old | 3 - .../File System/002/t/Paths/MANIFEST-000001 | Bin 41 -> 0 bytes .../Default/File System/003/t/.usage | Bin 24 -> 0 bytes .../Default/File System/003/t/Paths/000003.log | Bin 832 -> 0 bytes .../Default/File System/003/t/Paths/CURRENT | 1 - .../Default/File System/003/t/Paths/LOCK | 0 .../Default/File System/003/t/Paths/LOG | 2 - .../File System/003/t/Paths/MANIFEST-000001 | Bin 41 -> 0 bytes .../Default/File System/004/t/.usage | Bin 24 -> 0 bytes .../Default/File System/004/t/Paths/000003.log | 0 .../Default/File System/004/t/Paths/CURRENT | 1 - .../Default/File System/004/t/Paths/LOCK | 0 .../Default/File System/004/t/Paths/LOG | 2 - .../File System/004/t/Paths/MANIFEST-000001 | Bin 41 -> 0 bytes .../Default/File System/Origins/000003.log | Bin 404 -> 0 bytes .../Default/File System/Origins/CURRENT | 1 - .../Default/File System/Origins/LOCK | 0 .../Default/File System/Origins/LOG | 3 - .../Default/File System/Origins/LOG.old | 3 - .../Default/File System/Origins/MANIFEST-000001 | Bin 41 -> 0 bytes .../Default/GCM Store/Encryption/000003.log | 0 .../Default/GCM Store/Encryption/CURRENT | 1 - .../Default/GCM Store/Encryption/LOCK | 0 .../Default/GCM Store/Encryption/LOG | 3 - .../Default/GCM Store/Encryption/LOG.old | 3 - .../Default/GCM Store/Encryption/MANIFEST-000001 | Bin 41 -> 0 bytes .../net.imput.helium/Default/GPUCache/data_0 | Bin 8192 -> 0 bytes .../net.imput.helium/Default/GPUCache/data_1 | Bin 270336 -> 0 bytes .../net.imput.helium/Default/GPUCache/data_2 | Bin 8192 -> 0 bytes .../net.imput.helium/Default/GPUCache/data_3 | Bin 8192 -> 0 bytes .../net.imput.helium/Default/GPUCache/index | Bin 262512 -> 0 bytes .../.config/net.imput.helium/Default/History | Bin 5373952 -> 0 bytes .../net.imput.helium/Default/History-journal | Bin 8720 -> 0 bytes .../1/00/10 | Bin 1262814 -> 0 bytes .../1/00/11 | Bin 1143367 -> 0 bytes .../1/00/12 | Bin 3023410 -> 0 bytes .../1/00/13 | Bin 206110 -> 0 bytes .../1/00/14 | Bin 748467 -> 0 bytes .../1/00/15 | Bin 783104 -> 0 bytes .../1/00/16 | Bin 1866236 -> 0 bytes .../1/00/17 | Bin 156115 -> 0 bytes .../1/00/18 | Bin 133155 -> 0 bytes .../1/00/19 | Bin 170006 -> 0 bytes .../1/00/1a | Bin 1645318 -> 0 bytes .../1/00/1b | Bin 85539 -> 0 bytes .../1/00/1c | Bin 4437524 -> 0 bytes .../1/00/1d | Bin 7531181 -> 0 bytes .../1/00/4 | Bin 104605 -> 0 bytes .../1/00/a8 | Bin 85457 -> 0 bytes .../1/00/c | Bin 73107 -> 0 bytes .../1/00/d | Bin 309514 -> 0 bytes .../1/00/e | Bin 252758 -> 0 bytes .../1/00/f | Bin 66965 -> 0 bytes .../1/01/140 | Bin 104551 -> 0 bytes .../1/01/162 | Bin 1853896 -> 0 bytes .../1/01/174 | Bin 843324 -> 0 bytes .../1/01/18a | Bin 169840 -> 0 bytes .../1/01/18b | Bin 156163 -> 0 bytes .../1/01/18c | Bin 3027092 -> 0 bytes .../1/01/18d | Bin 1263951 -> 0 bytes .../1/01/18e | Bin 372765 -> 0 bytes .../1/01/18f | Bin 309445 -> 0 bytes .../1/01/190 | Bin 133428 -> 0 bytes .../1/01/191 | Bin 73115 -> 0 bytes .../1/01/192 | Bin 1143483 -> 0 bytes .../1/01/193 | Bin 253466 -> 0 bytes .../1/01/194 | Bin 66965 -> 0 bytes .../1/01/195 | Bin 205986 -> 0 bytes .../1/01/1a1 | Bin 68244 -> 0 bytes .../1/01/1aa | Bin 1154565 -> 0 bytes .../1/01/1ad | Bin 746328 -> 0 bytes .../1/01/1ae | Bin 1642121 -> 0 bytes .../1/01/1af | Bin 783364 -> 0 bytes .../1/01/1b0 | Bin 7872846 -> 0 bytes .../1/01/1b1 | Bin 8260496 -> 0 bytes .../000030.log | Bin 1465744 -> 0 bytes .../000033.ldb | Bin 120975 -> 0 bytes .../CURRENT | 1 - .../LOCK | 0 .../LOG | 3 - .../LOG.old | 9 - .../MANIFEST-000001 | Bin 2236 -> 0 bytes .../000011.log | Bin 285 -> 0 bytes .../000013.ldb | Bin 998 -> 0 bytes .../CURRENT | 1 - .../LOCK | 0 .../LOG | 3 - .../LOG.old | 3 - .../MANIFEST-000001 | Bin 507 -> 0 bytes .../2/00/b | Bin 280825 -> 0 bytes .../000004.log | Bin 6115 -> 0 bytes .../000005.ldb | Bin 6193 -> 0 bytes .../CURRENT | 1 - .../LOCK | 0 .../LOG | 3 - .../LOG.old | 3 - .../MANIFEST-000001 | Bin 250 -> 0 bytes .../1/00/2 | Bin 3576105 -> 0 bytes .../000004.log | 0 .../000005.ldb | Bin 1711 -> 0 bytes .../CURRENT | 1 - .../LOCK | 0 .../LOG | 6 - .../MANIFEST-000001 | Bin 82 -> 0 bytes .../https_app.tuta.com_0.indexeddb.blob/3/00/3 | Bin 152541 -> 0 bytes .../000014.log | 0 .../000016.ldb | Bin 6213 -> 0 bytes .../https_app.tuta.com_0.indexeddb.leveldb/CURRENT | 1 - .../https_app.tuta.com_0.indexeddb.leveldb/LOCK | 0 .../https_app.tuta.com_0.indexeddb.leveldb/LOG | 15 - .../https_app.tuta.com_0.indexeddb.leveldb/LOG.old | 3 - .../MANIFEST-000001 | Bin 705 -> 0 bytes .../000003.log | Bin 2469 -> 0 bytes .../CURRENT | 1 - .../LOCK | 0 .../LOG | 3 - .../LOG.old | 3 - .../MANIFEST-000001 | Bin 23 -> 0 bytes .../1/00/b | Bin 283113 -> 0 bytes .../000004.log | Bin 2499 -> 0 bytes .../000005.ldb | Bin 5455 -> 0 bytes .../CURRENT | 1 - .../LOCK | 0 .../LOG | 3 - .../LOG.old | 3 - .../MANIFEST-000001 | Bin 250 -> 0 bytes .../000003.log | Bin 1718128 -> 0 bytes .../CURRENT | 1 - .../LOCK | 0 .../https_chat.routstr.com_0.indexeddb.leveldb/LOG | 2 - .../MANIFEST-000001 | Bin 23 -> 0 bytes .../https_claude.ai_0.indexeddb.leveldb/000004.log | 0 .../https_claude.ai_0.indexeddb.leveldb/000005.ldb | Bin 4936 -> 0 bytes .../https_claude.ai_0.indexeddb.leveldb/CURRENT | 1 - .../https_claude.ai_0.indexeddb.leveldb/LOCK | 0 .../https_claude.ai_0.indexeddb.leveldb/LOG | 7 - .../https_claude.ai_0.indexeddb.leveldb/LOG.old | 2 - .../MANIFEST-000001 | Bin 141 -> 0 bytes .../000004.log | Bin 95 -> 0 bytes .../000005.ldb | Bin 8362 -> 0 bytes .../CURRENT | 1 - .../https_docs.google.com_0.indexeddb.leveldb/LOCK | 0 .../https_docs.google.com_0.indexeddb.leveldb/LOG | 3 - .../LOG.old | 3 - .../MANIFEST-000001 | Bin 117 -> 0 bytes .../https_drive.google.com_0.indexeddb.blob/1/00/8 | Bin 193286 -> 0 bytes .../https_drive.google.com_0.indexeddb.blob/1/00/9 | Bin 800646 -> 0 bytes .../000004.log | 0 .../000005.ldb | Bin 457203 -> 0 bytes .../CURRENT | 1 - .../LOCK | 0 .../https_drive.google.com_0.indexeddb.leveldb/LOG | 6 - .../MANIFEST-000001 | Bin 104 -> 0 bytes .../https_duck.ai_0.indexeddb.blob/1/00/2 | Bin 16965 -> 0 bytes .../https_duck.ai_0.indexeddb.blob/1/00/3 | Bin 237157 -> 0 bytes .../https_duck.ai_0.indexeddb.blob/1/00/4 | Bin 368917 -> 0 bytes .../https_duck.ai_0.indexeddb.blob/1/00/5 | Bin 98900 -> 0 bytes .../https_duck.ai_0.indexeddb.blob/1/00/6 | Bin 116369 -> 0 bytes .../https_duck.ai_0.indexeddb.leveldb/000011.log | Bin 1481149 -> 0 bytes .../https_duck.ai_0.indexeddb.leveldb/000013.ldb | Bin 165612 -> 0 bytes .../https_duck.ai_0.indexeddb.leveldb/CURRENT | 1 - .../https_duck.ai_0.indexeddb.leveldb/LOCK | 0 .../https_duck.ai_0.indexeddb.leveldb/LOG | 3 - .../https_duck.ai_0.indexeddb.leveldb/LOG.old | 3 - .../MANIFEST-000001 | Bin 635 -> 0 bytes .../000007.log | Bin 452150 -> 0 bytes .../000009.ldb | Bin 88203 -> 0 bytes .../https_github.com_0.indexeddb.leveldb/CURRENT | 1 - .../https_github.com_0.indexeddb.leveldb/LOCK | 0 .../https_github.com_0.indexeddb.leveldb/LOG | 3 - .../https_github.com_0.indexeddb.leveldb/LOG.old | 3 - .../MANIFEST-000001 | Bin 1965 -> 0 bytes .../000003.log | Bin 187388 -> 0 bytes .../https_grainrad.com_0.indexeddb.leveldb/CURRENT | 1 - .../https_grainrad.com_0.indexeddb.leveldb/LOCK | 0 .../https_grainrad.com_0.indexeddb.leveldb/LOG | 3 - .../https_grainrad.com_0.indexeddb.leveldb/LOG.old | 2 - .../MANIFEST-000001 | Bin 23 -> 0 bytes .../https_habr.com_0.indexeddb.leveldb/000007.log | 0 .../https_habr.com_0.indexeddb.leveldb/000009.ldb | Bin 648 -> 0 bytes .../https_habr.com_0.indexeddb.leveldb/CURRENT | 1 - .../https_habr.com_0.indexeddb.leveldb/LOCK | 0 .../https_habr.com_0.indexeddb.leveldb/LOG | 15 - .../https_habr.com_0.indexeddb.leveldb/LOG.old | 3 - .../MANIFEST-000001 | Bin 249 -> 0 bytes .../000003.log | Bin 23853 -> 0 bytes .../CURRENT | 1 - .../LOCK | 0 .../LOG | 2 - .../MANIFEST-000001 | Bin 23 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/1/03/304 | Bin 231983 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/11 | Bin 109120 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/13 | Bin 99364 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/15 | Bin 90032 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/17 | Bin 79616 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/19 | Bin 79700 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/1b | Bin 96404 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/1d | Bin 591688 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/1f | Bin 133504 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/21 | Bin 183044 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/23 | Bin 92400 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/25 | Bin 76536 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/27 | Bin 120644 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/29 | Bin 65620 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/2b | Bin 85704 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/2d | Bin 73148 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/2f | Bin 84752 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/3 | Bin 99000 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/31 | Bin 265008 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/33 | Bin 138764 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/35 | Bin 106800 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/5 | Bin 596804 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/7 | Bin 80464 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/9 | Bin 122272 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/b | Bin 77384 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/d | Bin 95760 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/f | Bin 79788 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/00/ff | Bin 209096 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/02/28f | Bin 91594 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/07/73c | Bin 134396 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/08/8ce | Bin 116656 -> 0 bytes .../https_lumo.proton.me_0.indexeddb.blob/3/09/996 | Bin 171546 -> 0 bytes .../000862.log | Bin 3054580 -> 0 bytes .../000864.ldb | Bin 2136698 -> 0 bytes .../000865.ldb | Bin 903902 -> 0 bytes .../CURRENT | 1 - .../https_lumo.proton.me_0.indexeddb.leveldb/LOCK | 0 .../https_lumo.proton.me_0.indexeddb.leveldb/LOG | 58 - .../LOG.old | 80 - .../MANIFEST-000001 | Bin 88166 -> 0 bytes .../000004.log | Bin 1326337 -> 0 bytes .../000005.ldb | Bin 2945 -> 0 bytes .../CURRENT | 1 - .../https_mail.google.com_0.indexeddb.leveldb/LOCK | 0 .../https_mail.google.com_0.indexeddb.leveldb/LOG | 3 - .../LOG.old | 3 - .../MANIFEST-000001 | Bin 72 -> 0 bytes .../https_mail.proton.me_0.indexeddb.blob/1/00/17 | Bin 251146 -> 0 bytes .../000012.ldb | Bin 980 -> 0 bytes .../000044.log | Bin 9232 -> 0 bytes .../000046.ldb | Bin 1516 -> 0 bytes .../CURRENT | 1 - .../https_mail.proton.me_0.indexeddb.leveldb/LOCK | 0 .../https_mail.proton.me_0.indexeddb.leveldb/LOG | 3 - .../LOG.old | 4 - .../MANIFEST-000001 | Bin 2509 -> 0 bytes .../https_mynixos.com_0.indexeddb.blob/4/00/2 | Bin 42190156 -> 0 bytes .../000004.log | Bin 4788 -> 0 bytes .../000005.ldb | Bin 1268 -> 0 bytes .../https_mynixos.com_0.indexeddb.leveldb/CURRENT | 1 - .../https_mynixos.com_0.indexeddb.leveldb/LOCK | 0 .../https_mynixos.com_0.indexeddb.leveldb/LOG | 6 - .../MANIFEST-000001 | Bin 112 -> 0 bytes .../000004.log | 0 .../000005.ldb | Bin 7722 -> 0 bytes .../https_novelai.net_0.indexeddb.leveldb/CURRENT | 1 - .../https_novelai.net_0.indexeddb.leveldb/LOCK | 0 .../https_novelai.net_0.indexeddb.leveldb/LOG | 7 - .../https_novelai.net_0.indexeddb.leveldb/LOG.old | 3 - .../MANIFEST-000001 | Bin 97 -> 0 bytes .../000004.log | 0 .../000005.ldb | Bin 909 -> 0 bytes .../CURRENT | 1 - .../https_openrouter.ai_0.indexeddb.leveldb/LOCK | 0 .../https_openrouter.ai_0.indexeddb.leveldb/LOG | 6 - .../MANIFEST-000001 | Bin 110 -> 0 bytes .../000004.log | 0 .../000005.ldb | Bin 10111 -> 0 bytes .../CURRENT | 1 - .../LOCK | 0 .../LOG | 7 - .../LOG.old | 2 - .../MANIFEST-000001 | Bin 109 -> 0 bytes .../000003.log | Bin 1720 -> 0 bytes .../CURRENT | 1 - .../LOCK | 0 .../LOG | 2 - .../MANIFEST-000001 | Bin 23 -> 0 bytes .../https_spotubedl.com_0.indexeddb.blob/1/00/2 | Bin 9031391 -> 0 bytes .../000003.log | Bin 10963 -> 0 bytes .../CURRENT | 1 - .../https_spotubedl.com_0.indexeddb.leveldb/LOCK | 0 .../https_spotubedl.com_0.indexeddb.leveldb/LOG | 3 - .../LOG.old | 3 - .../MANIFEST-000001 | Bin 23 -> 0 bytes .../https_windows93.net_0.indexeddb.blob/1/00/cf | Bin 996488 -> 0 bytes .../https_windows93.net_0.indexeddb.blob/2/00/10 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/11 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/12 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/13 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/14 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/15 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/16 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/17 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/18 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/19 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/1a | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/1b | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/1c | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/1d | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/1e | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/1f | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/2 | 6 - .../https_windows93.net_0.indexeddb.blob/2/00/20 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/21 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/22 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/23 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/24 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/25 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/26 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/27 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/28 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/29 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/2a | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/2b | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/2c | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/2d | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/2e | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/2f | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/3 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/30 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/31 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/32 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/33 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/34 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/35 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/36 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/37 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/38 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/39 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/3a | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/3b | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/3c | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/3d | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/3e | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/3f | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/4 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/40 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/41 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/42 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/43 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/44 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/45 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/46 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/47 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/48 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/49 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/4a | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/4b | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/4c | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/4d | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/4e | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/4f | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/5 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/50 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/51 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/52 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/53 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/54 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/55 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/56 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/57 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/58 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/59 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/5a | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/5b | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/5c | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/5d | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/5e | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/5f | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/6 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/60 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/61 | 1 - .../https_windows93.net_0.indexeddb.blob/2/00/62 | 8 - .../https_windows93.net_0.indexeddb.blob/2/00/63 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/64 | 6 - .../https_windows93.net_0.indexeddb.blob/2/00/66 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/67 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/68 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/69 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/6a | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/6b | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/6c | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/6d | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/6e | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/6f | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/7 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/70 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/71 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/72 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/73 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/74 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/75 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/76 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/77 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/78 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/79 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/7a | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/7b | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/7c | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/7d | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/7e | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/7f | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/8 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/80 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/81 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/82 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/83 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/84 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/85 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/86 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/87 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/88 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/89 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/8a | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/8b | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/8c | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/8d | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/8e | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/8f | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/9 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/90 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/91 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/92 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/93 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/94 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/95 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/96 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/97 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/98 | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/9a | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/9b | 6222 ----- .../https_windows93.net_0.indexeddb.blob/2/00/9c | 2401 -- .../https_windows93.net_0.indexeddb.blob/2/00/9d | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/9e | 296 - .../https_windows93.net_0.indexeddb.blob/2/00/a | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/b | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/c | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/d | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/e | 3 - .../https_windows93.net_0.indexeddb.blob/2/00/f | 3 - .../000004.log | 0 .../000005.ldb | Bin 122818 -> 0 bytes .../CURRENT | 1 - .../https_windows93.net_0.indexeddb.leveldb/LOCK | 0 .../https_windows93.net_0.indexeddb.leveldb/LOG | 6 - .../MANIFEST-000001 | Bin 94 -> 0 bytes .../000006.log | 0 .../000008.ldb | Bin 929 -> 0 bytes .../https_www.avito.ru_0.indexeddb.leveldb/CURRENT | 1 - .../https_www.avito.ru_0.indexeddb.leveldb/LOCK | 0 .../https_www.avito.ru_0.indexeddb.leveldb/LOG | 18 - .../MANIFEST-000001 | Bin 504 -> 0 bytes .../000004.log | 0 .../000005.ldb | Bin 1319 -> 0 bytes .../CURRENT | 1 - .../LOCK | 0 .../LOG | 6 - .../MANIFEST-000001 | Bin 84 -> 0 bytes .../000003.log | Bin 6554 -> 0 bytes .../CURRENT | 1 - .../https_www.fandom.com_0.indexeddb.leveldb/LOCK | 0 .../https_www.fandom.com_0.indexeddb.leveldb/LOG | 3 - .../LOG.old | 2 - .../MANIFEST-000001 | Bin 23 -> 0 bytes .../000003.log | Bin 211784 -> 0 bytes .../https_www.kimi.com_0.indexeddb.leveldb/CURRENT | 1 - .../https_www.kimi.com_0.indexeddb.leveldb/LOCK | 0 .../https_www.kimi.com_0.indexeddb.leveldb/LOG | 3 - .../https_www.kimi.com_0.indexeddb.leveldb/LOG.old | 2 - .../MANIFEST-000001 | Bin 23 -> 0 bytes .../https_www.kucoin.com_0.indexeddb.blob/2/00/3 | Bin 147554 -> 0 bytes .../https_www.kucoin.com_0.indexeddb.blob/2/00/5 | Bin 230829 -> 0 bytes .../000003.log | Bin 7466 -> 0 bytes .../CURRENT | 1 - .../https_www.kucoin.com_0.indexeddb.leveldb/LOCK | 0 .../https_www.kucoin.com_0.indexeddb.leveldb/LOG | 2 - .../MANIFEST-000001 | Bin 23 -> 0 bytes .../000018.log | Bin 1015431 -> 0 bytes .../000020.ldb | Bin 241156 -> 0 bytes .../https_www.ozon.ru_0.indexeddb.leveldb/CURRENT | 1 - .../https_www.ozon.ru_0.indexeddb.leveldb/LOCK | 0 .../https_www.ozon.ru_0.indexeddb.leveldb/LOG | 3 - .../https_www.ozon.ru_0.indexeddb.leveldb/LOG.old | 3 - .../MANIFEST-000001 | Bin 6726 -> 0 bytes .../000055.log | Bin 1909515 -> 0 bytes .../000057.ldb | Bin 28014 -> 0 bytes .../CURRENT | 1 - .../LOCK | 0 .../LOG | 3 - .../LOG.old | 39 - .../MANIFEST-000001 | Bin 6051 -> 0 bytes .../000056.log | 0 .../000059.ldb | Bin 3488 -> 0 bytes .../CURRENT | 1 - .../LOCK | 0 .../LOG | 209 - .../MANIFEST-000001 | Bin 4495 -> 0 bytes .../16/00/10 | Bin 186834 -> 0 bytes .../000137.ldb | Bin 123251 -> 0 bytes .../000138.log | Bin 42681 -> 0 bytes .../000139.ldb | Bin 1768840 -> 0 bytes .../CURRENT | 1 - .../https_www.youtube.com_0.indexeddb.leveldb/LOCK | 0 .../https_www.youtube.com_0.indexeddb.leveldb/LOG | 24 - .../LOG.old | 30 - .../MANIFEST-000001 | Bin 12484 -> 0 bytes .../.config/net.imput.helium/Default/LOCK | 0 .../.config/net.imput.helium/Default/LOG | 0 .../.config/net.imput.helium/Default/LOG.old | 0 .../blockjmkbacgjkknlgpkjjiijinjdanf/001261.ldb | Bin 1465 -> 0 bytes .../blockjmkbacgjkknlgpkjjiijinjdanf/001262.ldb | Bin 3787321 -> 0 bytes .../blockjmkbacgjkknlgpkjjiijinjdanf/001263.ldb | Bin 2857982 -> 0 bytes .../blockjmkbacgjkknlgpkjjiijinjdanf/001264.ldb | Bin 2460583 -> 0 bytes .../blockjmkbacgjkknlgpkjjiijinjdanf/001265.ldb | Bin 2593093 -> 0 bytes .../blockjmkbacgjkknlgpkjjiijinjdanf/001266.ldb | Bin 2348124 -> 0 bytes .../blockjmkbacgjkknlgpkjjiijinjdanf/001267.ldb | Bin 2271511 -> 0 bytes .../blockjmkbacgjkknlgpkjjiijinjdanf/001268.ldb | Bin 2676125 -> 0 bytes .../blockjmkbacgjkknlgpkjjiijinjdanf/001269.log | Bin 9444 -> 0 bytes .../blockjmkbacgjkknlgpkjjiijinjdanf/001271.ldb | Bin 2120286 -> 0 bytes .../blockjmkbacgjkknlgpkjjiijinjdanf/001272.ldb | Bin 8061649 -> 0 bytes .../blockjmkbacgjkknlgpkjjiijinjdanf/001273.ldb | Bin 12656892 -> 0 bytes .../blockjmkbacgjkknlgpkjjiijinjdanf/001274.ldb | Bin 2366432 -> 0 bytes .../blockjmkbacgjkknlgpkjjiijinjdanf/CURRENT | 1 - .../blockjmkbacgjkknlgpkjjiijinjdanf/LOCK | 0 .../blockjmkbacgjkknlgpkjjiijinjdanf/LOG | 79 - .../blockjmkbacgjkknlgpkjjiijinjdanf/LOG.old | 58 - .../MANIFEST-000001 | Bin 96045 -> 0 bytes .../eimadpbcbfnmbkopoojfekhnkhdbieeh/000005.ldb | Bin 2028697 -> 0 bytes .../eimadpbcbfnmbkopoojfekhnkhdbieeh/000027.ldb | Bin 7031 -> 0 bytes .../eimadpbcbfnmbkopoojfekhnkhdbieeh/000028.log | Bin 1960773 -> 0 bytes .../eimadpbcbfnmbkopoojfekhnkhdbieeh/000029.ldb | Bin 2483184 -> 0 bytes .../eimadpbcbfnmbkopoojfekhnkhdbieeh/CURRENT | 1 - .../eimadpbcbfnmbkopoojfekhnkhdbieeh/LOCK | 0 .../eimadpbcbfnmbkopoojfekhnkhdbieeh/LOG | 27 - .../eimadpbcbfnmbkopoojfekhnkhdbieeh/LOG.old | 21 - .../MANIFEST-000001 | Bin 1042 -> 0 bytes .../fgmjlmbojbkmdpofahffgcpkhkngfpef/000003.log | Bin 290 -> 0 bytes .../fgmjlmbojbkmdpofahffgcpkhkngfpef/CURRENT | 1 - .../fgmjlmbojbkmdpofahffgcpkhkngfpef/LOCK | 0 .../fgmjlmbojbkmdpofahffgcpkhkngfpef/LOG | 3 - .../fgmjlmbojbkmdpofahffgcpkhkngfpef/LOG.old | 2 - .../MANIFEST-000001 | Bin 41 -> 0 bytes .../fhkphphbadjkepgfljndicmgdlndmoke/000003.log | Bin 50 -> 0 bytes .../fhkphphbadjkepgfljndicmgdlndmoke/CURRENT | 1 - .../fhkphphbadjkepgfljndicmgdlndmoke/LOCK | 0 .../fhkphphbadjkepgfljndicmgdlndmoke/LOG | 3 - .../fhkphphbadjkepgfljndicmgdlndmoke/LOG.old | 3 - .../MANIFEST-000001 | Bin 41 -> 0 bytes .../fjkmabmdepjfammlpliljpnbhleegehm/000003.log | Bin 161 -> 0 bytes .../fjkmabmdepjfammlpliljpnbhleegehm/CURRENT | 1 - .../fjkmabmdepjfammlpliljpnbhleegehm/LOCK | 0 .../fjkmabmdepjfammlpliljpnbhleegehm/LOG | 3 - .../fjkmabmdepjfammlpliljpnbhleegehm/LOG.old | 3 - .../MANIFEST-000001 | Bin 41 -> 0 bytes .../ghmbeldphafepmbegfdlkpapadhbakde/000005.ldb | Bin 4983620 -> 0 bytes .../ghmbeldphafepmbegfdlkpapadhbakde/000272.ldb | Bin 1693029 -> 0 bytes .../ghmbeldphafepmbegfdlkpapadhbakde/000274.ldb | Bin 5023102 -> 0 bytes .../ghmbeldphafepmbegfdlkpapadhbakde/000275.log | Bin 198152 -> 0 bytes .../ghmbeldphafepmbegfdlkpapadhbakde/000276.ldb | Bin 3419403 -> 0 bytes .../ghmbeldphafepmbegfdlkpapadhbakde/CURRENT | 1 - .../ghmbeldphafepmbegfdlkpapadhbakde/LOCK | 0 .../ghmbeldphafepmbegfdlkpapadhbakde/LOG | 171 - .../ghmbeldphafepmbegfdlkpapadhbakde/LOG.old | 213 - .../MANIFEST-000001 | Bin 11080 -> 0 bytes .../lanfdkkpgfjfdikkncbnojekcppdebfp/000003.log | Bin 50 -> 0 bytes .../lanfdkkpgfjfdikkncbnojekcppdebfp/CURRENT | 1 - .../lanfdkkpgfjfdikkncbnojekcppdebfp/LOCK | 0 .../lanfdkkpgfjfdikkncbnojekcppdebfp/LOG | 3 - .../lanfdkkpgfjfdikkncbnojekcppdebfp/LOG.old | 3 - .../MANIFEST-000001 | Bin 41 -> 0 bytes .../nljkibfhlpcnanjgbnlnbjecgicbjkge/000003.log | Bin 13000 -> 0 bytes .../nljkibfhlpcnanjgbnlnbjecgicbjkge/CURRENT | 1 - .../nljkibfhlpcnanjgbnlnbjecgicbjkge/LOCK | 0 .../nljkibfhlpcnanjgbnlnbjecgicbjkge/LOG | 3 - .../nljkibfhlpcnanjgbnlnbjecgicbjkge/LOG.old | 3 - .../MANIFEST-000001 | Bin 41 -> 0 bytes .../oboonakemofpalcgghocfoadofidjkkk/000003.log | Bin 88753 -> 0 bytes .../oboonakemofpalcgghocfoadofidjkkk/CURRENT | 1 - .../oboonakemofpalcgghocfoadofidjkkk/LOCK | 0 .../oboonakemofpalcgghocfoadofidjkkk/LOG | 3 - .../oboonakemofpalcgghocfoadofidjkkk/LOG.old | 3 - .../MANIFEST-000001 | Bin 41 -> 0 bytes .../ogfcmafjalglgifnmanfmnieipoejdcf/000003.log | Bin 2784797 -> 0 bytes .../ogfcmafjalglgifnmanfmnieipoejdcf/CURRENT | 1 - .../ogfcmafjalglgifnmanfmnieipoejdcf/LOCK | 0 .../ogfcmafjalglgifnmanfmnieipoejdcf/LOG | 3 - .../ogfcmafjalglgifnmanfmnieipoejdcf/LOG.old | 3 - .../MANIFEST-000001 | Bin 41 -> 0 bytes .../oladmjdebphlnjjcnomfhhbfdldiimaf/000003.log | Bin 64923 -> 0 bytes .../oladmjdebphlnjjcnomfhhbfdldiimaf/CURRENT | 1 - .../oladmjdebphlnjjcnomfhhbfdldiimaf/LOCK | 0 .../oladmjdebphlnjjcnomfhhbfdldiimaf/LOG | 3 - .../oladmjdebphlnjjcnomfhhbfdldiimaf/LOG.old | 3 - .../MANIFEST-000001 | Bin 41 -> 0 bytes .../oldceeleldhonbafppcapldpdifcinji/000003.log | Bin 1858265 -> 0 bytes .../oldceeleldhonbafppcapldpdifcinji/CURRENT | 1 - .../oldceeleldhonbafppcapldpdifcinji/LOCK | 0 .../oldceeleldhonbafppcapldpdifcinji/LOG | 3 - .../oldceeleldhonbafppcapldpdifcinji/LOG.old | 3 - .../MANIFEST-000001 | Bin 41 -> 0 bytes .../olnbjpaejebpnokblkepbphhembdicik/000003.log | Bin 50 -> 0 bytes .../olnbjpaejebpnokblkepbphhembdicik/CURRENT | 1 - .../olnbjpaejebpnokblkepbphhembdicik/LOCK | 0 .../olnbjpaejebpnokblkepbphhembdicik/LOG | 3 - .../olnbjpaejebpnokblkepbphhembdicik/LOG.old | 3 - .../MANIFEST-000001 | Bin 41 -> 0 bytes .../Default/Local Storage/leveldb/000005.ldb | Bin 10783 -> 0 bytes .../Default/Local Storage/leveldb/001192.ldb | Bin 2781026 -> 0 bytes .../Default/Local Storage/leveldb/001193.ldb | Bin 1370378 -> 0 bytes .../Default/Local Storage/leveldb/001195.ldb | Bin 18617 -> 0 bytes .../Default/Local Storage/leveldb/001197.ldb | Bin 18738 -> 0 bytes .../Default/Local Storage/leveldb/001199.log | Bin 645 -> 0 bytes .../Default/Local Storage/leveldb/001200.ldb | Bin 22394 -> 0 bytes .../Default/Local Storage/leveldb/CURRENT | 1 - .../Default/Local Storage/leveldb/LOCK | 0 .../Default/Local Storage/leveldb/LOG | 6 - .../Default/Local Storage/leveldb/LOG.old | 52 - .../Default/Local Storage/leveldb/MANIFEST-000001 | Bin 88624 -> 0 bytes .../.config/net.imput.helium/Default/Login Data | Bin 40960 -> 0 bytes .../Default/Login Data For Account | Bin 40960 -> 0 bytes .../Default/Login Data For Account-journal | 0 .../net.imput.helium/Default/Login Data-journal | 0 .../blockjmkbacgjkknlgpkjjiijinjdanf/000003.log | Bin 5092 -> 0 bytes .../blockjmkbacgjkknlgpkjjiijinjdanf/CURRENT | 1 - .../blockjmkbacgjkknlgpkjjiijinjdanf/LOCK | 0 .../blockjmkbacgjkknlgpkjjiijinjdanf/LOG | 3 - .../blockjmkbacgjkknlgpkjjiijinjdanf/LOG.old | 3 - .../MANIFEST-000001 | Bin 41 -> 0 bytes .../oboonakemofpalcgghocfoadofidjkkk/000003.log | Bin 1254 -> 0 bytes .../oboonakemofpalcgghocfoadofidjkkk/CURRENT | 1 - .../oboonakemofpalcgghocfoadofidjkkk/LOCK | 0 .../oboonakemofpalcgghocfoadofidjkkk/LOG | 3 - .../oboonakemofpalcgghocfoadofidjkkk/LOG.old | 3 - .../MANIFEST-000001 | Bin 41 -> 0 bytes .../oldceeleldhonbafppcapldpdifcinji/000003.log | Bin 646 -> 0 bytes .../oldceeleldhonbafppcapldpdifcinji/CURRENT | 1 - .../oldceeleldhonbafppcapldpdifcinji/LOCK | 0 .../oldceeleldhonbafppcapldpdifcinji/LOG | 3 - .../oldceeleldhonbafppcapldpdifcinji/LOG.old | 3 - .../MANIFEST-000001 | Bin 41 -> 0 bytes .../net.imput.helium/Default/MediaDeviceSalts | Bin 24576 -> 0 bytes .../Default/MediaDeviceSalts-journal | 0 .../Default/Network Action Predictor | Bin 688128 -> 0 bytes .../Default/Network Action Predictor-journal | 0 .../Default/Network Persistent State | 1 - .../Default/PersistentOriginTrials/LOCK | 0 .../Default/PersistentOriginTrials/LOG | 0 .../Default/PersistentOriginTrials/LOG.old | 0 .../Default/Platform Notifications/000003.log | Bin 1195 -> 0 bytes .../Default/Platform Notifications/CURRENT | 1 - .../Default/Platform Notifications/LOCK | 0 .../Default/Platform Notifications/LOG | 3 - .../Default/Platform Notifications/LOG.old | 3 - .../Default/Platform Notifications/MANIFEST-000001 | Bin 41 -> 0 bytes .../.config/net.imput.helium/Default/Preferences | 1 - .../.config/net.imput.helium/Default/PreferredApps | 1 - .../.config/net.imput.helium/Default/README | 1 - .../Default/SCT Auditing Pending Reports | 1 - .../net.imput.helium/Default/Secure Preferences | 1 - .../Segmentation Platform/SegmentInfoDB/LOCK | 0 .../Segmentation Platform/SegmentInfoDB/LOG | 0 .../Segmentation Platform/SegmentInfoDB/LOG.old | 0 .../Default/Segmentation Platform/SignalDB/LOCK | 0 .../Default/Segmentation Platform/SignalDB/LOG | 0 .../Default/Segmentation Platform/SignalDB/LOG.old | 0 .../SignalStorageConfigDB/LOCK | 0 .../SignalStorageConfigDB/LOG | 0 .../SignalStorageConfigDB/LOG.old | 0 .../net.imput.helium/Default/ServerCertificate | Bin 20480 -> 0 bytes .../Default/ServerCertificate-journal | 0 .../5d38329751e8525d_0 | Bin 440 -> 0 bytes .../167ac202-830b-4cc9-823a-c0eef551d304/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 72 -> 0 bytes .../index.txt | Bin 178 -> 0 bytes .../ca2b8576-224d-4751-85f1-ceb55d54a591/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 48 -> 0 bytes .../index.txt | Bin 152 -> 0 bytes .../70c13bf7-078b-4e9c-ba3b-5f9bf375ae96/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 48 -> 0 bytes .../075aeca7e556c651_0 | Bin 8616 -> 0 bytes .../075aeca7e556c651_1 | Bin 3471 -> 0 bytes .../0a41c5226f4ea45c_0 | Bin 735670 -> 0 bytes .../0fc09f38b2295ac0_0 | Bin 79751 -> 0 bytes .../0fc09f38b2295ac0_1 | Bin 169764 -> 0 bytes .../1f3240a2dd73eca6_0 | Bin 15176 -> 0 bytes .../1f3240a2dd73eca6_1 | Bin 30666 -> 0 bytes .../2932e1153c64eb30_0 | Bin 14930 -> 0 bytes .../35dcfa5da122dc3f_0 | Bin 10691682 -> 0 bytes .../35dcfa5da122dc3f_1 | Bin 20538660 -> 0 bytes .../44acd6df7b0f6c29_0 | Bin 526356 -> 0 bytes .../48234e7037907372_0 | Bin 104709 -> 0 bytes .../48234e7037907372_1 | Bin 38220 -> 0 bytes .../61bbe64726f600d2_0 | Bin 29091 -> 0 bytes .../61bbe64726f600d2_1 | Bin 11790 -> 0 bytes .../6be34d05411f8a58_0 | Bin 6666 -> 0 bytes .../6be34d05411f8a58_1 | Bin 11822 -> 0 bytes .../80dca37114654a65_0 | Bin 121303 -> 0 bytes .../80dca37114654a65_1 | Bin 94323 -> 0 bytes .../8300925a06792860_0 | Bin 3161 -> 0 bytes .../8300925a06792860_1 | Bin 3418 -> 0 bytes .../846f31c2d5d83610_0 | Bin 51984 -> 0 bytes .../846f31c2d5d83610_1 | Bin 111260 -> 0 bytes .../a23df982d61b6504_0 | Bin 39158 -> 0 bytes .../a23df982d61b6504_1 | Bin 92586 -> 0 bytes .../a9e53d396796cb16_0 | Bin 1836 -> 0 bytes .../c037cc6d848ee571_0 | Bin 9598 -> 0 bytes .../c548304d03e754fa_0 | Bin 8410 -> 0 bytes .../c548304d03e754fa_1 | Bin 10390 -> 0 bytes .../c6b55a8840308240_0 | Bin 10129 -> 0 bytes .../c6b55a8840308240_1 | Bin 21214 -> 0 bytes .../cf370ffc2f4673ee_0 | Bin 2561516 -> 0 bytes .../cf370ffc2f4673ee_1 | Bin 1740201 -> 0 bytes .../da12145b12f3c5e5_0 | Bin 2936629 -> 0 bytes .../de9318660da488d9_0 | Bin 71387 -> 0 bytes .../de9318660da488d9_1 | Bin 33821 -> 0 bytes .../e293b17b64b4e482_0 | Bin 5404 -> 0 bytes .../754e3171-62ad-49e1-9eb1-5b252d428161/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 576 -> 0 bytes .../00ba5fc263b59bcc_0 | Bin 1411 -> 0 bytes .../0222ffa3c71a476b_0 | Bin 1975 -> 0 bytes .../027c813f28eb3d53_0 | Bin 1561 -> 0 bytes .../02ce44654c978c4c_0 | Bin 1651 -> 0 bytes .../04babee2bfa8b48c_0 | Bin 1834 -> 0 bytes .../06c49d2fa0ad4bcd_0 | Bin 1614 -> 0 bytes .../08000439b4130129_0 | Bin 2084 -> 0 bytes .../0b3bd81b114681fa_0 | Bin 1550 -> 0 bytes .../0b8c705721509f10_0 | Bin 1526 -> 0 bytes .../0db7075bc130b313_0 | Bin 1652 -> 0 bytes .../0dbec196046ed063_0 | Bin 1717 -> 0 bytes .../0e68ef3e3bc686b2_0 | Bin 1564 -> 0 bytes .../0f1e03ffbe4a08f3_0 | Bin 1599 -> 0 bytes .../10d52c8541d8e931_0 | Bin 1617 -> 0 bytes .../1410946c5e325198_0 | Bin 2022 -> 0 bytes .../16559ac9c884651f_0 | Bin 1520 -> 0 bytes .../166a5b768db2d6dc_0 | Bin 1450 -> 0 bytes .../179872ac4492afa0_0 | Bin 1444 -> 0 bytes .../1ada7ade10cca105_0 | Bin 1753 -> 0 bytes .../21d60d8d92bf19bf_0 | Bin 1624 -> 0 bytes .../22063dd5403b833c_0 | Bin 1444 -> 0 bytes .../2532623a88776236_0 | Bin 1380 -> 0 bytes .../2e2413a06637b0ec_0 | Bin 1417 -> 0 bytes .../3107558eea9ba321_0 | Bin 1430 -> 0 bytes .../364b223b1bc79872_0 | Bin 1799 -> 0 bytes .../366f560b67a386ee_0 | Bin 1492 -> 0 bytes .../375db0c2ac836167_0 | Bin 1479 -> 0 bytes .../3761f940ae901389_0 | Bin 12930 -> 0 bytes .../383152c2a19b4e8f_0 | Bin 1703 -> 0 bytes .../3865648767564005_0 | Bin 1454 -> 0 bytes .../38720ab1369ba567_0 | Bin 1649 -> 0 bytes .../3900fd29baef0480_0 | Bin 2028 -> 0 bytes .../3941d9264340cece_0 | Bin 1412 -> 0 bytes .../3dd738a47abc8dee_0 | Bin 1705 -> 0 bytes .../40a9bd45a75375db_0 | Bin 1472 -> 0 bytes .../422d408262aa1cbc_0 | Bin 1503 -> 0 bytes .../445287d025921e6f_0 | Bin 2790 -> 0 bytes .../44fdad3a201128f8_0 | Bin 1495 -> 0 bytes .../4816386a87d7566c_0 | Bin 1672 -> 0 bytes .../482a0b7ae2b00776_0 | Bin 1496 -> 0 bytes .../4b32244f47a52aa1_0 | Bin 1870 -> 0 bytes .../4bfb0fd95edd59d2_0 | Bin 1516 -> 0 bytes .../4c4800b635ae2098_0 | Bin 1499 -> 0 bytes .../4c9a3bb214971f6c_0 | Bin 1864 -> 0 bytes .../4eceab7d2e5e75bd_0 | Bin 1418 -> 0 bytes .../50aef4afc8eb2221_0 | Bin 1311 -> 0 bytes .../50ec495042a41f6d_0 | Bin 1398 -> 0 bytes .../5399a0cd57faade2_0 | Bin 2989 -> 0 bytes .../54920af5f79603ff_0 | Bin 1438 -> 0 bytes .../551f311ce70a041a_0 | Bin 1745 -> 0 bytes .../55248bf5cdb1f722_0 | Bin 1491 -> 0 bytes .../577dbf0b91a4fd20_0 | Bin 1381 -> 0 bytes .../57976939f24b399a_0 | Bin 1679 -> 0 bytes .../598bb08c9f41a7b9_0 | Bin 2342 -> 0 bytes .../63650b2efa24c917_0 | Bin 1494 -> 0 bytes .../6635a01024910e7c_0 | Bin 1689 -> 0 bytes .../6b991611054a2e9f_0 | Bin 1526 -> 0 bytes .../6e7ceb2d0629c0d2_0 | Bin 1462 -> 0 bytes .../766415f99b4c6b7d_0 | Bin 1222 -> 0 bytes .../76d092187417e324_0 | Bin 1895 -> 0 bytes .../7a80e0d12aa14c6c_0 | Bin 1453 -> 0 bytes .../7e048a4ec5b9e1d4_0 | Bin 1924 -> 0 bytes .../7e9e9637312f4527_0 | Bin 1554 -> 0 bytes .../7f4dd8a89067dd14_0 | Bin 1570 -> 0 bytes .../8059ab2dc6262984_0 | Bin 1418 -> 0 bytes .../8383e54a78e96fc0_0 | Bin 1513 -> 0 bytes .../83c00149b31ccab3_0 | Bin 1227 -> 0 bytes .../842bceedb8c09930_0 | Bin 1578 -> 0 bytes .../87b78db93ca06597_0 | Bin 1441 -> 0 bytes .../88a5e52ddb6d6d2c_0 | Bin 1736 -> 0 bytes .../88c1d03bb90903c8_0 | Bin 1680 -> 0 bytes .../8ab4bfc157c68e03_0 | Bin 1560 -> 0 bytes .../8b74f42ca7f9d4ce_0 | Bin 1480 -> 0 bytes .../8ba42d1959e21094_0 | Bin 1548 -> 0 bytes .../8ba930f6d3763aad_0 | Bin 1775 -> 0 bytes .../8df5c0290e6e7d6b_0 | Bin 1425 -> 0 bytes .../901cda61dbe1c72b_0 | Bin 1430 -> 0 bytes .../91bffe440af90184_0 | Bin 1523 -> 0 bytes .../92f3fbe0cc645cda_0 | Bin 1510 -> 0 bytes .../94dd7ef9d668d39f_0 | Bin 1418 -> 0 bytes .../9527542be48ffabc_0 | Bin 1449 -> 0 bytes .../95db89fc6a02f451_0 | Bin 1535 -> 0 bytes .../963ed8c33def50bf_0 | Bin 2989 -> 0 bytes .../96aec6e9ae26248e_0 | Bin 1241 -> 0 bytes .../97de5abfe883dbcf_0 | Bin 1555 -> 0 bytes .../986d0106ec1842ce_0 | Bin 1398 -> 0 bytes .../98a16392447e67ac_0 | Bin 1517 -> 0 bytes .../9e14eade795efe8c_0 | Bin 1559 -> 0 bytes .../9f4ad6f7051df145_0 | Bin 1750 -> 0 bytes .../9fd5f62bf71b3d75_0 | Bin 4412 -> 0 bytes .../a10e102536afddc3_0 | Bin 1684 -> 0 bytes .../a14b1d1ba3ffefc8_0 | Bin 1703 -> 0 bytes .../a1962e8c0da37551_0 | Bin 1926 -> 0 bytes .../a6b7c04cc881aa8f_0 | Bin 1653 -> 0 bytes .../a6f27ff03ba78ebe_0 | Bin 1692 -> 0 bytes .../a85adbefb300ab4e_0 | Bin 1398 -> 0 bytes .../a8861e49fb8957aa_0 | Bin 1442 -> 0 bytes .../a9b4668151d3b918_0 | Bin 1385 -> 0 bytes .../aa2af9656088cce5_0 | Bin 1726 -> 0 bytes .../aab204e4e2e6cad8_0 | Bin 1561 -> 0 bytes .../ac4be60b26fb5511_0 | Bin 1612 -> 0 bytes .../afbf989a8c95bf2e_0 | Bin 1442 -> 0 bytes .../b2141b088ee5e98c_0 | Bin 1487 -> 0 bytes .../b3f87b55d8dbfa47_0 | Bin 1432 -> 0 bytes .../b5f29d0312456036_0 | Bin 2069 -> 0 bytes .../bc145685a6573d8d_0 | Bin 1522 -> 0 bytes .../bca21f99472447f3_0 | Bin 1663 -> 0 bytes .../bcefea0b5feaa3e6_0 | Bin 1435 -> 0 bytes .../be519e977a6323d2_0 | Bin 1635 -> 0 bytes .../be581dea90cddde7_0 | Bin 1565 -> 0 bytes .../bfcfe1973eae70a6_0 | Bin 2071 -> 0 bytes .../c09d11a05755e8de_0 | Bin 1487 -> 0 bytes .../c30f776ad1595b83_0 | Bin 1427 -> 0 bytes .../c3d986f17b5dc565_0 | Bin 1469 -> 0 bytes .../c50c2efcca9c8010_0 | Bin 1488 -> 0 bytes .../c7348c3f4f98c4ab_0 | Bin 1449 -> 0 bytes .../c82aed60a977e45b_0 | Bin 1609 -> 0 bytes .../c8b473e0f9374235_0 | Bin 1642 -> 0 bytes .../c8f84126e8a205d3_0 | Bin 2326 -> 0 bytes .../c9adc58020b2b3de_0 | Bin 1508 -> 0 bytes .../ca5a67fda3466f4d_0 | Bin 1516 -> 0 bytes .../cb47929bcd785350_0 | Bin 1588 -> 0 bytes .../cd85acb1c0e5f8f6_0 | Bin 1569 -> 0 bytes .../cde968a267e2506f_0 | Bin 1788 -> 0 bytes .../ce5fdc792b67fd6e_0 | Bin 2187 -> 0 bytes .../d3d3117da1954c11_0 | Bin 1627 -> 0 bytes .../d48cca5b61f158fe_0 | Bin 2272 -> 0 bytes .../d57fe2c6b1537486_0 | Bin 1794 -> 0 bytes .../d949b6a948217766_0 | Bin 1586 -> 0 bytes .../db4b978e1d037149_0 | Bin 1576 -> 0 bytes .../db529ccd665da8b5_0 | Bin 1629 -> 0 bytes .../dc1d8d198ab144a4_0 | Bin 1730 -> 0 bytes .../dc1f0d705c07825e_0 | Bin 1729 -> 0 bytes .../dd15da64bd340266_0 | Bin 10127 -> 0 bytes .../dec87465aca36c9e_0 | Bin 1496 -> 0 bytes .../e00a14b7237f316a_0 | Bin 1791 -> 0 bytes .../e0679885439abda2_0 | Bin 1656 -> 0 bytes .../e31f7a7e623b4b27_0 | Bin 3929 -> 0 bytes .../e8b90ca167b6e771_0 | Bin 11410 -> 0 bytes .../e8c610db15382c0d_0 | Bin 1474 -> 0 bytes .../e8f209bb953d0431_0 | Bin 1463 -> 0 bytes .../e939b9c74705d0f2_0 | Bin 1696 -> 0 bytes .../e9cc87730829e287_0 | Bin 2348 -> 0 bytes .../ea8caa098b6387ff_0 | Bin 1568 -> 0 bytes .../eaffc3a9ed933df4_0 | Bin 1516 -> 0 bytes .../ecf4f84b241d1325_0 | Bin 1507 -> 0 bytes .../ee0df4a02bea74ec_0 | Bin 1581 -> 0 bytes .../f355a1c9fc9dac63_0 | Bin 1876 -> 0 bytes .../f549ece535126cd0_0 | Bin 1675 -> 0 bytes .../f587f3bec747896f_0 | Bin 1532 -> 0 bytes .../f6f13d7893cf7781_0 | Bin 1586 -> 0 bytes .../f7d87e9c65f44131_0 | Bin 2113 -> 0 bytes .../f9bc7061061e4803_0 | Bin 2906 -> 0 bytes .../fad7b2239e784870_0 | Bin 1627 -> 0 bytes .../fc496558f77f6d37_0 | Bin 1601 -> 0 bytes .../fdd89d27c13f85e5_0 | Bin 2189 -> 0 bytes .../ff7d190261fb21f8_0 | Bin 1509 -> 0 bytes .../fff368752d794b37_0 | Bin 1427 -> 0 bytes .../df02438d-ec97-49fc-befe-d7f04c7c0bc6/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 3840 -> 0 bytes .../index.txt | Bin 419 -> 0 bytes .../006a538dedf500bb_0 | Bin 1506 -> 0 bytes .../0175f3f40ba8dbde_0 | Bin 1500 -> 0 bytes .../1721bd4f8fb2cadc_0 | Bin 1500 -> 0 bytes .../17b8036994926313_0 | Bin 1503 -> 0 bytes .../25dc4c03e53ce621_0 | Bin 2862 -> 0 bytes .../335c73116c925d69_0 | Bin 4576 -> 0 bytes .../35479c8993a56980_0 | Bin 1420 -> 0 bytes .../3ae70dcea11c2fbe_0 | Bin 1501 -> 0 bytes .../3b5be9cfbf996496_0 | Bin 1425 -> 0 bytes .../3bafac095fd25cbd_0 | Bin 2422 -> 0 bytes .../4569c647f3e546ae_0 | Bin 2403 -> 0 bytes .../4d67962a65e63981_0 | Bin 2189 -> 0 bytes .../586a022384e46803_0 | Bin 3527 -> 0 bytes .../5dae2ab319d8aac9_0 | Bin 1514 -> 0 bytes .../5de9374d0d33bce6_0 | Bin 1503 -> 0 bytes .../61660244c8309188_0 | Bin 2475 -> 0 bytes .../6ea1cb40f0aee2a6_0 | Bin 2315 -> 0 bytes .../713851498c4150dc_0 | Bin 1500 -> 0 bytes .../802e042d69cb5b9f_0 | Bin 2336 -> 0 bytes .../8cec4c83eb238125_0 | Bin 1505 -> 0 bytes .../90064f6e62ae2b4c_0 | Bin 1730 -> 0 bytes .../938f804276fb35f1_0 | Bin 1499 -> 0 bytes .../93df658616c97d06_0 | Bin 1427 -> 0 bytes .../a9699016563b8209_0 | Bin 1506 -> 0 bytes .../ac7ba52fac0e95e1_0 | Bin 2681 -> 0 bytes .../b3393d462f0043ad_0 | Bin 2772 -> 0 bytes .../c1599dde8bade953_0 | Bin 1426 -> 0 bytes .../d588d824228ac415_0 | Bin 2573 -> 0 bytes .../d75edc2286fae9b7_0 | Bin 1502 -> 0 bytes .../ea578ddc3dc3c687_0 | Bin 2602 -> 0 bytes .../ec116a03a65112e6_0 | Bin 2056 -> 0 bytes .../ecac73213fcefcdf_0 | Bin 1424 -> 0 bytes .../fcddaeca4ec70adb_0 | Bin 1501 -> 0 bytes .../5e478eeb-1820-4299-b857-8a957d5454ff/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 840 -> 0 bytes .../index.txt | Bin 215 -> 0 bytes .../dbaaafcc074f9ed9_0 | Bin 43063 -> 0 bytes .../2b37bdcb-00c6-4891-9af4-00f62af17426/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 72 -> 0 bytes .../index.txt | Bin 140 -> 0 bytes .../07f8e196a7727a3f_0 | Bin 16117 -> 0 bytes .../0cb5dd327b96a31b_0 | Bin 224362 -> 0 bytes .../0fc5bdde6f53153f_0 | Bin 114400 -> 0 bytes .../14b6e0546d8edd38_0 | Bin 69912 -> 0 bytes .../1568eaad9cefb057_0 | Bin 1042375 -> 0 bytes .../1568eaad9cefb057_1 | Bin 1050365 -> 0 bytes .../1a84c0fdb8f29ecd_0 | Bin 9401 -> 0 bytes .../29e34f22d379c8ec_0 | Bin 181159 -> 0 bytes .../312b41ec91efbbbb_0 | Bin 11526 -> 0 bytes .../3190d25e17d196d1_0 | Bin 42682 -> 0 bytes .../3af3cabdea0ce2f3_0 | Bin 190510 -> 0 bytes .../43dd297a4824c424_0 | Bin 15881 -> 0 bytes .../5445d97c0ba39932_0 | Bin 28000 -> 0 bytes .../5b520f29f907e97a_0 | Bin 400808 -> 0 bytes .../5b70ab48f346dff6_0 | Bin 2090270 -> 0 bytes .../5be730099e2d1e3e_0 | Bin 25874 -> 0 bytes .../5c160c98f6b0e2e8_0 | Bin 327786 -> 0 bytes .../5f232009d9ee7634_0 | Bin 1597228 -> 0 bytes .../60e679941208711d_0 | Bin 8575 -> 0 bytes .../6ac2a5ce1f87808c_0 | Bin 10078 -> 0 bytes .../762f62de057c0fc9_0 | Bin 14695 -> 0 bytes .../7e575746073c75ed_0 | Bin 13699 -> 0 bytes .../88a307d09a45768c_0 | Bin 10481 -> 0 bytes .../8c92e2fa07a9121e_0 | Bin 2071400 -> 0 bytes .../8c92e2fa07a9121e_1 | Bin 3134492 -> 0 bytes .../90ec518fba35891f_0 | Bin 1749812 -> 0 bytes .../90ec518fba35891f_1 | Bin 2864434 -> 0 bytes .../9119b3cc47548319_0 | Bin 18111 -> 0 bytes .../9460a6ba2daa3295_0 | Bin 38023 -> 0 bytes .../9460a6ba2daa3295_1 | Bin 32715 -> 0 bytes .../a2b53de7eaf727e9_0 | Bin 15391 -> 0 bytes .../a5d6bcce35bc7475_0 | Bin 234396 -> 0 bytes .../b03dced0dcd88b1e_0 | Bin 8813 -> 0 bytes .../b6165d9548afde92_0 | Bin 86069 -> 0 bytes .../b7e105217bc9c5e5_0 | Bin 2279677 -> 0 bytes .../c392b1e5fb08c126_0 | Bin 12581 -> 0 bytes .../d7946d00f2e1376a_0 | Bin 397328 -> 0 bytes .../d85b5e5c4acd813e_0 | Bin 269066 -> 0 bytes .../d9d8fbf977dedb59_0 | Bin 8629 -> 0 bytes .../de28351e2ea658a2_0 | Bin 10183 -> 0 bytes .../df7ab6ba53ea4e7a_0 | Bin 12437 -> 0 bytes .../e6eb93dca5412515_0 | Bin 28523 -> 0 bytes .../e7e2abc4e5a3e0aa_0 | Bin 38198 -> 0 bytes .../fbd95b051be10bd6_0 | Bin 14635 -> 0 bytes .../fc9eb799ae313e7f_0 | Bin 52941 -> 0 bytes .../2f157599-d077-4b86-81b0-ce3863b5f858/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 1032 -> 0 bytes .../29213d2ab33b53bc_0 | Bin 288471 -> 0 bytes .../50fdf5b3-4e70-4cf9-baf9-7249bbf80c0a/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 72 -> 0 bytes .../6bd2b74669b9987c_0 | Bin 2086667 -> 0 bytes .../6bd2b74669b9987c_1 | Bin 3140324 -> 0 bytes .../7f8a0389b51446e6_0 | Bin 1019005 -> 0 bytes .../7f8a0389b51446e6_1 | Bin 1028013 -> 0 bytes .../8c05ecc7896ae8de_0 | Bin 38051 -> 0 bytes .../8c05ecc7896ae8de_1 | Bin 32675 -> 0 bytes .../b076fcad9d02efd1_0 | Bin 1600971 -> 0 bytes .../b076fcad9d02efd1_1 | Bin 2768682 -> 0 bytes .../59a16354-cfa0-42ed-a44b-cc3b49e17c5a/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 144 -> 0 bytes .../054440bf2c331c43_0 | Bin 4230736 -> 0 bytes .../44569690086fd740_0 | Bin 4230751 -> 0 bytes .../e00244a1c1d66cf5_0 | Bin 4230729 -> 0 bytes .../861a2246-b5c6-4feb-a8e6-64f0f16a2064/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 120 -> 0 bytes .../010090a4715f7982_0 | Bin 1579 -> 0 bytes .../0178ed80ba166694_0 | Bin 1429 -> 0 bytes .../01d1bd9d3481613b_0 | Bin 1527 -> 0 bytes .../028a34c713cffa8e_0 | Bin 1422 -> 0 bytes .../029acfe340af5384_0 | Bin 1410 -> 0 bytes .../0325bbbffc847ef9_0 | Bin 1390 -> 0 bytes .../03bc795eaff9b5cd_0 | Bin 1361 -> 0 bytes .../03de6d80e67b0c21_0 | Bin 1396 -> 0 bytes .../03e814ec520f66f0_0 | Bin 1379 -> 0 bytes .../0566c36e9d66c629_0 | Bin 1437 -> 0 bytes .../05adfe7bf452189e_0 | Bin 1392 -> 0 bytes .../06693067e337341a_0 | Bin 1328 -> 0 bytes .../06b37557aa4cd1fd_0 | Bin 1470 -> 0 bytes .../07274db1f47b1bb4_0 | Bin 1512 -> 0 bytes .../077a9cbf6788c7d1_0 | Bin 1284 -> 0 bytes .../07df800e6fd2e4b5_0 | Bin 1445 -> 0 bytes .../0809a6f55fed9f3d_0 | Bin 1351 -> 0 bytes .../08621f8de27fc09d_0 | Bin 1491 -> 0 bytes .../08c00414b0740128_0 | Bin 1632 -> 0 bytes .../08ff00bec6ec0013_0 | Bin 1590 -> 0 bytes .../097055410aa8a2ba_0 | Bin 1335 -> 0 bytes .../0a8fb9475f3b996b_0 | Bin 1388 -> 0 bytes .../0ab70eadeaf07b89_0 | Bin 1409 -> 0 bytes .../0ac6ce1f2227e805_0 | Bin 1340 -> 0 bytes .../0ac92cfcd164c6aa_0 | Bin 1416 -> 0 bytes .../0b0f1db4427bcd14_0 | Bin 1191 -> 0 bytes .../0b6b46031efba167_0 | Bin 1508 -> 0 bytes .../0b6c9873335e9d78_0 | Bin 1448 -> 0 bytes .../0b78ec7f18bf27f8_0 | Bin 1317 -> 0 bytes .../0c1f9942b5049920_0 | Bin 1498 -> 0 bytes .../0d5b342f3c27ae46_0 | Bin 1478 -> 0 bytes .../0d706a3735b5c179_0 | Bin 1336 -> 0 bytes .../0dd991f1c793b330_0 | Bin 1398 -> 0 bytes .../0ed0588b1aeed822_0 | Bin 1356 -> 0 bytes .../10a6de262188cabc_0 | Bin 1382 -> 0 bytes .../11ff41e2c72c2a0b_0 | Bin 1394 -> 0 bytes .../1326682a85b8839c_0 | Bin 1329 -> 0 bytes .../13e636b6c483e1b5_0 | Bin 1377 -> 0 bytes .../164a06b5da754d80_0 | Bin 1592 -> 0 bytes .../1651158d19b17e1a_0 | Bin 1484 -> 0 bytes .../16a55b1b63681512_0 | Bin 1332 -> 0 bytes .../1797898dbf9abe3d_0 | Bin 1746 -> 0 bytes .../1848b8431f464bbc_0 | Bin 1353 -> 0 bytes .../18d0a3e4115b15f9_0 | Bin 1213 -> 0 bytes .../18ecd22745dd139f_0 | Bin 1394 -> 0 bytes .../197548d334d866a6_0 | Bin 1593 -> 0 bytes .../1b75cec76c4aed75_0 | Bin 1308 -> 0 bytes .../1b90a8d8469ff377_0 | Bin 1331 -> 0 bytes .../1bf9b16217d3cd8e_0 | Bin 1640 -> 0 bytes .../1cdf58bab8d09377_0 | Bin 1438 -> 0 bytes .../1d8d40c8bd53afc0_0 | Bin 5288 -> 0 bytes .../1f64274428bc3ad0_0 | Bin 1412 -> 0 bytes .../1fb712b8196b1476_0 | Bin 1391 -> 0 bytes .../1ff0767ed2f79efa_0 | Bin 1395 -> 0 bytes .../2162042b78dab24e_0 | Bin 1507 -> 0 bytes .../226d42dee542a505_0 | Bin 1580 -> 0 bytes .../2291a5b924b9e143_0 | Bin 1474 -> 0 bytes .../244ff8db75afbcee_0 | Bin 1375 -> 0 bytes .../24692dc296675274_0 | Bin 1389 -> 0 bytes .../261fb8495be0de84_0 | Bin 1407 -> 0 bytes .../26e40f14db914a7d_0 | Bin 1555 -> 0 bytes .../27ae31930a5f4c88_0 | Bin 1729 -> 0 bytes .../27feded4fc28f7b1_0 | Bin 2825 -> 0 bytes .../283a01c1fd5fcc90_0 | Bin 1593 -> 0 bytes .../28a1a4eb95900cc5_0 | Bin 1355 -> 0 bytes .../28aeb8e6927f88bf_0 | Bin 1465 -> 0 bytes .../29bf4019111fdf9e_0 | Bin 1391 -> 0 bytes .../2a47eea8f2be94d4_0 | Bin 1347 -> 0 bytes .../2a515c4601a460b5_0 | Bin 1520 -> 0 bytes .../2b944482863d9787_0 | Bin 1393 -> 0 bytes .../2cdeeba0c8388ef1_0 | Bin 1360 -> 0 bytes .../2dc85643336d7c98_0 | Bin 1340 -> 0 bytes .../2dda1e0469cf29d5_0 | Bin 1431 -> 0 bytes .../2e5fdb2b74aabf38_0 | Bin 1398 -> 0 bytes .../2ea26e623c043319_0 | Bin 1330 -> 0 bytes .../2ea68d59259117ae_0 | Bin 1301 -> 0 bytes .../2ec697a6a7916a4b_0 | Bin 1390 -> 0 bytes .../2f20eeb0f78a12cb_0 | Bin 1429 -> 0 bytes .../2f7904bd5ff48aa4_0 | Bin 1725 -> 0 bytes .../2fb23db919cbac4f_0 | Bin 1409 -> 0 bytes .../2fc8d15c7838f3d1_0 | Bin 1344 -> 0 bytes .../2ff2dc5711b5b44b_0 | Bin 1346 -> 0 bytes .../300c4a7acfaae0e6_0 | Bin 1413 -> 0 bytes .../30c3f5d24b89073e_0 | Bin 1597 -> 0 bytes .../3146046935712b98_0 | Bin 1566 -> 0 bytes .../316a18f2391b96b6_0 | Bin 1336 -> 0 bytes .../323c59764f29d1a6_0 | Bin 1380 -> 0 bytes .../32c00850e582741e_0 | Bin 1449 -> 0 bytes .../3375bf704893c9df_0 | Bin 1409 -> 0 bytes .../34d132cebace4bb8_0 | Bin 1819 -> 0 bytes .../35b1864f8dca267e_0 | Bin 1312 -> 0 bytes .../35c50d72a0d9abe2_0 | Bin 1474 -> 0 bytes .../35d5ee3785bf2d41_0 | Bin 1522 -> 0 bytes .../36b306a09b9baa69_0 | Bin 1341 -> 0 bytes .../374ef6e0c7130fbc_0 | Bin 1316 -> 0 bytes .../37b299fcd53f078a_0 | Bin 1640 -> 0 bytes .../3a45eb408a7d9681_0 | Bin 1337 -> 0 bytes .../3a707dfcd239013f_0 | Bin 1713 -> 0 bytes .../3a7363b2769e7ce9_0 | Bin 1418 -> 0 bytes .../3ba354e4df139a39_0 | Bin 1465 -> 0 bytes .../3c150c2dd87fd6e8_0 | Bin 1546 -> 0 bytes .../3c6a323d9eaf2d02_0 | Bin 1415 -> 0 bytes .../3cbf65811b564b6e_0 | Bin 1412 -> 0 bytes .../3cc5185e299fa410_0 | Bin 2776 -> 0 bytes .../3d2883b151058934_0 | Bin 1346 -> 0 bytes .../3d9cc84221ab7d0e_0 | Bin 1376 -> 0 bytes .../3db535d43555d95d_0 | Bin 1423 -> 0 bytes .../3e083bdfa59388de_0 | Bin 1477 -> 0 bytes .../3e6b96474e4cd9e2_0 | Bin 1408 -> 0 bytes .../3e8f5891b6a76580_0 | Bin 1357 -> 0 bytes .../3ee555b7d09662f9_0 | Bin 1474 -> 0 bytes .../3f7ed6652d14748c_0 | Bin 1349 -> 0 bytes .../3fa3b9230004c5ac_0 | Bin 1492 -> 0 bytes .../40000ad0b2717f89_0 | Bin 1362 -> 0 bytes .../401c9ecb66380e7d_0 | Bin 1369 -> 0 bytes .../403b044f976196b0_0 | Bin 1379 -> 0 bytes .../405dcfa581a33f6f_0 | Bin 2150 -> 0 bytes .../40e5dd3864b40061_0 | Bin 1331 -> 0 bytes .../417b0661fb6da4cc_0 | Bin 1547 -> 0 bytes .../4249a405b758e6b0_0 | Bin 67506 -> 0 bytes .../43030d4dfc53606e_0 | Bin 1277 -> 0 bytes .../434b43f63be1082a_0 | Bin 1510 -> 0 bytes .../435dc7180587c2f9_0 | Bin 1244 -> 0 bytes .../440beaeaa3e9275f_0 | Bin 1232 -> 0 bytes .../44a0f1f0d4716da8_0 | Bin 1273 -> 0 bytes .../44abacfeac6e3a3c_0 | Bin 1855 -> 0 bytes .../461d0538bcde61a9_0 | Bin 1389 -> 0 bytes .../462cff8c40a19469_0 | Bin 1325 -> 0 bytes .../467bfef644ed08fb_0 | Bin 1440 -> 0 bytes .../46a7a4fd8de8ac15_0 | Bin 1697 -> 0 bytes .../46ad973d0ddad864_0 | Bin 1522 -> 0 bytes .../47317d65fc0a6c95_0 | Bin 1558 -> 0 bytes .../473d8294e4f39459_0 | Bin 1377 -> 0 bytes .../47409dfcbc7bc816_0 | Bin 1658 -> 0 bytes .../47974f690887fe0b_0 | Bin 1393 -> 0 bytes .../47c5c28cdfafc410_0 | Bin 1537 -> 0 bytes .../48ebd49fcb59fa62_0 | Bin 1305 -> 0 bytes .../491eed5273dbc6f8_0 | Bin 1510 -> 0 bytes .../49380de47cda0142_0 | Bin 1419 -> 0 bytes .../49be4907b4618b49_0 | Bin 1510 -> 0 bytes .../4a351c50eda1dabe_0 | Bin 1352 -> 0 bytes .../4a762ea7b29f0040_0 | Bin 1418 -> 0 bytes .../4aefc6516c8f09ef_0 | Bin 1422 -> 0 bytes .../4af99deb3627b3af_0 | Bin 1357 -> 0 bytes .../4b3718bc5ce62ed0_0 | Bin 1525 -> 0 bytes .../4cd488b0eb39b812_0 | Bin 1379 -> 0 bytes .../4ce7b5a39f349938_0 | Bin 1322 -> 0 bytes .../4e68236ef8433dee_0 | Bin 1681 -> 0 bytes .../4ec86f3c7b50ea9a_0 | Bin 1438 -> 0 bytes .../4ecfb74cc2c5020c_0 | Bin 1782 -> 0 bytes .../4f2214c1205d9ee6_0 | Bin 1272 -> 0 bytes .../4f3d92a68bac1d08_0 | Bin 2763 -> 0 bytes .../4fcb373f2c5c0cc8_0 | Bin 1308 -> 0 bytes .../4fecf1bfc69078c9_0 | Bin 1544 -> 0 bytes .../4ff568a32f1bc060_0 | Bin 1174 -> 0 bytes .../50727972d197bdd1_0 | Bin 1441 -> 0 bytes .../5094b1a41ec0992f_0 | Bin 1430 -> 0 bytes .../5281c83d55a5a3f4_0 | Bin 1406 -> 0 bytes .../52faaed1e72cd26d_0 | Bin 1401 -> 0 bytes .../539ea2533efe9124_0 | Bin 1414 -> 0 bytes .../55092d5b76a5235f_0 | Bin 1688 -> 0 bytes .../55c4d626167ca37f_0 | Bin 1275 -> 0 bytes .../55f3f5be082df174_0 | Bin 1350 -> 0 bytes .../5633b14a24918a87_0 | Bin 1320 -> 0 bytes .../563911f0d5a08805_0 | Bin 1472 -> 0 bytes .../564a4f7cac02234f_0 | Bin 1326 -> 0 bytes .../5770f37e1158342e_0 | Bin 1354 -> 0 bytes .../5908a9b715d02910_0 | Bin 1520 -> 0 bytes .../5b493bdce9741e12_0 | Bin 1796 -> 0 bytes .../5b4eca0ef8b63d80_0 | Bin 1538 -> 0 bytes .../5bd1bc949f7a282e_0 | Bin 1304 -> 0 bytes .../5c1d26f609f4a349_0 | Bin 1377 -> 0 bytes .../5d568e9f3bb60999_0 | Bin 1654 -> 0 bytes .../5d5dd0ce098b82ae_0 | Bin 1318 -> 0 bytes .../5dbdfe1f78d89ed2_0 | Bin 1572 -> 0 bytes .../5e286de0854046c5_0 | Bin 1451 -> 0 bytes .../5e929df8ffd0b512_0 | Bin 1524 -> 0 bytes .../5f648b8e8da959f6_0 | Bin 1386 -> 0 bytes .../60ada439c219d85e_0 | Bin 1361 -> 0 bytes .../60adb161b062547a_0 | Bin 1367 -> 0 bytes .../615467575aab9d58_0 | Bin 1300 -> 0 bytes .../617852fb06aeced7_0 | Bin 1370 -> 0 bytes .../62f1430b6f83f2a3_0 | Bin 1554 -> 0 bytes .../633a9a70ca8b5383_0 | Bin 1377 -> 0 bytes .../63eb77e2513cd8f1_0 | Bin 1648 -> 0 bytes .../63f1c8a683f8225f_0 | Bin 1762 -> 0 bytes .../63fa8b17283be32b_0 | Bin 1537 -> 0 bytes .../641ba44fc9dde0d4_0 | Bin 1372 -> 0 bytes .../645c0ebb2a0520ec_0 | Bin 1359 -> 0 bytes .../64ab34cc8d5979a8_0 | Bin 1379 -> 0 bytes .../64c8b49a96602142_0 | Bin 1268 -> 0 bytes .../6538f081994b8744_0 | Bin 1492 -> 0 bytes .../65b92e377b0fa843_0 | Bin 1437 -> 0 bytes .../66632c13c1c475ba_0 | Bin 1426 -> 0 bytes .../6717b2b093e246cf_0 | Bin 1328 -> 0 bytes .../675f5ef490d855c2_0 | Bin 1402 -> 0 bytes .../67be1e13eeec2e8c_0 | Bin 1186 -> 0 bytes .../67e02db3cc4d7172_0 | Bin 1474 -> 0 bytes .../68a0bd0feff1417f_0 | Bin 1489 -> 0 bytes .../68e48aaaa8eed872_0 | Bin 1409 -> 0 bytes .../69a622ddc4de2de2_0 | Bin 1428 -> 0 bytes .../69d908bdfea092f3_0 | Bin 1474 -> 0 bytes .../69dc9c00c1096539_0 | Bin 1184 -> 0 bytes .../6a31717497945fd8_0 | Bin 1703 -> 0 bytes .../6aafea8d6e8c80c9_0 | Bin 52203 -> 0 bytes .../6ada150ef7f7b66a_0 | Bin 1310 -> 0 bytes .../6b35672256f5dbf9_0 | Bin 1484 -> 0 bytes .../6b73951b12bcfe24_0 | Bin 1527 -> 0 bytes .../6c0f23f3a776038a_0 | Bin 1360 -> 0 bytes .../6c199ef7952f1cb9_0 | Bin 1301 -> 0 bytes .../6cbae82b29f486c0_0 | Bin 1334 -> 0 bytes .../6d1299026d44f445_0 | Bin 1382 -> 0 bytes .../6d2c7a73bf56d82e_0 | Bin 1327 -> 0 bytes .../6d6746ffdfe2c5da_0 | Bin 1454 -> 0 bytes .../6ea5cd00d1ef5c5e_0 | Bin 1344 -> 0 bytes .../6eafb1f8e4d27046_0 | Bin 1331 -> 0 bytes .../6f45dc32b64d35e3_0 | Bin 1226 -> 0 bytes .../6f7792d088936b71_0 | Bin 1419 -> 0 bytes .../6fecedabc9999d8b_0 | Bin 1366 -> 0 bytes .../70012114dc1d1d88_0 | Bin 1460 -> 0 bytes .../706accb2deacecdf_0 | Bin 1406 -> 0 bytes .../7087aada1f4066c7_0 | Bin 1320 -> 0 bytes .../70f0928214687af3_0 | Bin 1453 -> 0 bytes .../71471beeeb832013_0 | Bin 1304 -> 0 bytes .../71880fa819250839_0 | Bin 1380 -> 0 bytes .../71af3ff0da25ecb4_0 | Bin 1463 -> 0 bytes .../72efb03b6e76c5de_0 | Bin 1341 -> 0 bytes .../74229e2379833847_0 | Bin 1411 -> 0 bytes .../74d8507a8531f02b_0 | Bin 1403 -> 0 bytes .../750927c19c5edcba_0 | Bin 1342 -> 0 bytes .../75106a26e2dd80d4_0 | Bin 1417 -> 0 bytes .../751bebd4610d5d4c_0 | Bin 1403 -> 0 bytes .../76337b91b4900a25_0 | Bin 1401 -> 0 bytes .../76f4c5a18d2a4d54_0 | Bin 1304 -> 0 bytes .../7748de2aa7cf2ea4_0 | Bin 1376 -> 0 bytes .../7865ed43b8d1f6db_0 | Bin 1476 -> 0 bytes .../78ab97b6c49538cd_0 | Bin 1331 -> 0 bytes .../79a0e6d190a1bf69_0 | Bin 1300 -> 0 bytes .../79dd64d3d88a9e7d_0 | Bin 1391 -> 0 bytes .../7b11897a6e627caa_0 | Bin 1374 -> 0 bytes .../7b37f1b48b6d925c_0 | Bin 1403 -> 0 bytes .../7c6d2d12385f9ee0_0 | Bin 1524 -> 0 bytes .../7cb72d2bdce685df_0 | Bin 1315 -> 0 bytes .../7d76fe340dfdbc4e_0 | Bin 1441 -> 0 bytes .../7e1ae7aeaa77a535_0 | Bin 1847 -> 0 bytes .../7e7adf60d84afd18_0 | Bin 1356 -> 0 bytes .../7f588195f082f356_0 | Bin 1344 -> 0 bytes .../7fbb5007ff08fd98_0 | Bin 1344 -> 0 bytes .../80227b644439b542_0 | Bin 1388 -> 0 bytes .../818c23c29ee1a73b_0 | Bin 1350 -> 0 bytes .../82a15928af9ccafe_0 | Bin 1694 -> 0 bytes .../82a24d405442f878_0 | Bin 4971 -> 0 bytes .../8397b39bab574872_0 | Bin 1454 -> 0 bytes .../845bfef2605ef371_0 | Bin 1361 -> 0 bytes .../851e9d42098ef1c5_0 | Bin 1614 -> 0 bytes .../855be4791a76b056_0 | Bin 1311 -> 0 bytes .../858b1b97724823ac_0 | Bin 1417 -> 0 bytes .../8637c8296b939632_0 | Bin 1454 -> 0 bytes .../87cd4e61fddcd966_0 | Bin 1332 -> 0 bytes .../87f3bed1bdda23b6_0 | Bin 1373 -> 0 bytes .../88a44733befdfde4_0 | Bin 1365 -> 0 bytes .../88f7d898076d4e73_0 | Bin 1403 -> 0 bytes .../89aa94d34fed7381_0 | Bin 1313 -> 0 bytes .../8bc3812d75d08ee6_0 | Bin 1300 -> 0 bytes .../8c6f07b5576b4aab_0 | Bin 1558 -> 0 bytes .../8c7edcd939fc7e83_0 | Bin 1599 -> 0 bytes .../8ce3ef412d22aad1_0 | Bin 1319 -> 0 bytes .../8cf4139cfdfbfc8d_0 | Bin 1562 -> 0 bytes .../8d537950d77cd7c7_0 | Bin 1420 -> 0 bytes .../8db29d494e6bd315_0 | Bin 1456 -> 0 bytes .../8ee7c4a577f7a0de_0 | Bin 1450 -> 0 bytes .../8f16ca910597cc7a_0 | Bin 1397 -> 0 bytes .../8fe77c96e12c0e82_0 | Bin 1571 -> 0 bytes .../90380676b30f51d7_0 | Bin 1330 -> 0 bytes .../90404dc2347f9dab_0 | Bin 1396 -> 0 bytes .../904d9d11ab898cc9_0 | Bin 1532 -> 0 bytes .../906a12dea99dea37_0 | Bin 1611 -> 0 bytes .../90c1259cd9567b5a_0 | Bin 1601 -> 0 bytes .../9136a8b19fc17c26_0 | Bin 1255 -> 0 bytes .../92b1a249fe90382f_0 | Bin 1363 -> 0 bytes .../93fcaad73df22088_0 | Bin 1407 -> 0 bytes .../94351c9a10539573_0 | Bin 1474 -> 0 bytes .../94a97651f25813ea_0 | Bin 1420 -> 0 bytes .../97c2222de82aabb7_0 | Bin 1378 -> 0 bytes .../989b1c0e817cb740_0 | Bin 1384 -> 0 bytes .../9944e43e0af2504f_0 | Bin 1462 -> 0 bytes .../9991dcbe73719eb6_0 | Bin 1388 -> 0 bytes .../99c7c14f7c842aee_0 | Bin 1494 -> 0 bytes .../9a1d5e2e19cd6830_0 | Bin 1409 -> 0 bytes .../9ad2d6a2d0d34d8b_0 | Bin 5100 -> 0 bytes .../9bbcd130c76ca82b_0 | Bin 1365 -> 0 bytes .../9c1a47b65557b3c7_0 | Bin 1423 -> 0 bytes .../9c44bf9d9f6d5046_0 | Bin 1804 -> 0 bytes .../9c797756525c3a9d_0 | Bin 1514 -> 0 bytes .../9d1cfc17ee75085f_0 | Bin 1488 -> 0 bytes .../9e0164d9f9c21b2b_0 | Bin 1549 -> 0 bytes .../9e208c9945614b0a_0 | Bin 1366 -> 0 bytes .../9f6242da93cf9a60_0 | Bin 1558 -> 0 bytes .../9fafcd5b7c4c7d46_0 | Bin 1378 -> 0 bytes .../9fe159871d0f34b1_0 | Bin 1861 -> 0 bytes .../9fe60c30216cae9f_0 | Bin 1415 -> 0 bytes .../9fe6d760ee68bde4_0 | Bin 1355 -> 0 bytes .../a09e183f013c55f9_0 | Bin 1523 -> 0 bytes .../a111af295948c13b_0 | Bin 1507 -> 0 bytes .../a22c8b7fdc93ba7b_0 | Bin 1702 -> 0 bytes .../a2516d049d3061eb_0 | Bin 1370 -> 0 bytes .../a3210a474dbf3470_0 | Bin 1741 -> 0 bytes .../a441a981da270027_0 | Bin 1563 -> 0 bytes .../a5e8235022e3ffb2_0 | Bin 1388 -> 0 bytes .../a6e6bd77279ec2d1_0 | Bin 1567 -> 0 bytes .../a98098b99e7d2869_0 | Bin 1606 -> 0 bytes .../a9d4becd3632d6ee_0 | Bin 1229 -> 0 bytes .../a9ef7b7d112096fb_0 | Bin 1532 -> 0 bytes .../aa4267498c1bdb8e_0 | Bin 1456 -> 0 bytes .../abb42dd22bb398d8_0 | Bin 1501 -> 0 bytes .../ac8d4fbbff1e4511_0 | Bin 1278 -> 0 bytes .../ac8f3a08baae84c7_0 | Bin 1511 -> 0 bytes .../accbc6b98658fec3_0 | Bin 1438 -> 0 bytes .../acf7596d327c576c_0 | Bin 1251 -> 0 bytes .../ad02fae9789df093_0 | Bin 1332 -> 0 bytes .../ad14117198bec082_0 | Bin 1352 -> 0 bytes .../ae369f724076d110_0 | Bin 1243 -> 0 bytes .../ae902f024ac9b001_0 | Bin 1340 -> 0 bytes .../ae9af5c89b53f7b7_0 | Bin 1371 -> 0 bytes .../aea414ab5074aa6c_0 | Bin 1498 -> 0 bytes .../aec58053023a88ac_0 | Bin 1350 -> 0 bytes .../af11397f610def1d_0 | Bin 1320 -> 0 bytes .../af2753ca257c8835_0 | Bin 1288 -> 0 bytes .../af616d40a7566670_0 | Bin 1437 -> 0 bytes .../af66c8b1d2edf140_0 | Bin 1512 -> 0 bytes .../afb1287c332f9b5b_0 | Bin 1315 -> 0 bytes .../b0b96b9337ec0f01_0 | Bin 1502 -> 0 bytes .../b0fcfb2205e12b8c_0 | Bin 1430 -> 0 bytes .../b11399c2d34b65ec_0 | Bin 1400 -> 0 bytes .../b13f8d35dd4416ee_0 | Bin 1485 -> 0 bytes .../b17089788610695d_0 | Bin 1430 -> 0 bytes .../b20fb40450b8df8d_0 | Bin 1294 -> 0 bytes .../b253d9782a04fa24_0 | Bin 1319 -> 0 bytes .../b25fb755218203c7_0 | Bin 1393 -> 0 bytes .../b27f4456a0893c22_0 | Bin 1328 -> 0 bytes .../b334d6f43db7225f_0 | Bin 1555 -> 0 bytes .../b375963a13a8ca2a_0 | Bin 1365 -> 0 bytes .../b3b3268a576e2217_0 | Bin 1629 -> 0 bytes .../b4b3413faa63c5c9_0 | Bin 1342 -> 0 bytes .../b535d4da7e56c833_0 | Bin 1323 -> 0 bytes .../b5384dfe649ae3c9_0 | Bin 1427 -> 0 bytes .../b57d38814d61150e_0 | Bin 1231 -> 0 bytes .../b5db8021d45d1a84_0 | Bin 1335 -> 0 bytes .../b60781e5744b2a1c_0 | Bin 1357 -> 0 bytes .../b64bde2f4d5986c7_0 | Bin 1326 -> 0 bytes .../b6994106f42f340a_0 | Bin 1293 -> 0 bytes .../b70da7e783de3e3f_0 | Bin 1331 -> 0 bytes .../b71ed6589c7be093_0 | Bin 1595 -> 0 bytes .../b754d8e55cf362ea_0 | Bin 1380 -> 0 bytes .../b7909cb8f6e30f6f_0 | Bin 1571 -> 0 bytes .../b7c6fd9fbd20ecaf_0 | Bin 1304 -> 0 bytes .../b84030228bcea101_0 | Bin 1270 -> 0 bytes .../b852063f83c7b9f0_0 | Bin 1356 -> 0 bytes .../b8c0761c78dae0e5_0 | Bin 1514 -> 0 bytes .../b8d3986c9b1abcef_0 | Bin 1526 -> 0 bytes .../b923d597daf5f5da_0 | Bin 1588 -> 0 bytes .../b9a3f2fc12e61701_0 | Bin 1404 -> 0 bytes .../b9fc73196a15de83_0 | Bin 1407 -> 0 bytes .../ba5bae53b65d3bc7_0 | Bin 1484 -> 0 bytes .../bb61669531d4e58d_0 | Bin 1549 -> 0 bytes .../bbd63dece1bdf1f8_0 | Bin 1581 -> 0 bytes .../bc1b9eab080caf12_0 | Bin 1371 -> 0 bytes .../bcb692b2d63ab273_0 | Bin 1292 -> 0 bytes .../bd35d25df8e8d68c_0 | Bin 1446 -> 0 bytes .../bd9efb0b6d94f452_0 | Bin 1590 -> 0 bytes .../bdcc4a26b93e80bf_0 | Bin 1345 -> 0 bytes .../bdefb43552790deb_0 | Bin 1346 -> 0 bytes .../bdf98845dbf92cf7_0 | Bin 1426 -> 0 bytes .../bf08f2433cc99fa1_0 | Bin 1436 -> 0 bytes .../bf77de102b70e497_0 | Bin 1619 -> 0 bytes .../bff5dc42912015d2_0 | Bin 1654 -> 0 bytes .../c338bdddb184f703_0 | Bin 1377 -> 0 bytes .../c380b0c4841aa25b_0 | Bin 1367 -> 0 bytes .../c3c9632fba0bd8d7_0 | Bin 1398 -> 0 bytes .../c441dfa2465b5fa6_0 | Bin 1195 -> 0 bytes .../c4515313351f1df3_0 | Bin 1438 -> 0 bytes .../c4e866e94b70e9ac_0 | Bin 1460 -> 0 bytes .../c5765227c22fbdf2_0 | Bin 1439 -> 0 bytes .../c587a83357030b91_0 | Bin 1430 -> 0 bytes .../c591d07e12a43bf2_0 | Bin 1434 -> 0 bytes .../c5bb406ae3cf31e5_0 | Bin 1486 -> 0 bytes .../c6c9e29b3412b09c_0 | Bin 1468 -> 0 bytes .../c7a30a85a85d0ee9_0 | Bin 1430 -> 0 bytes .../c884bad1d888a6ca_0 | Bin 1466 -> 0 bytes .../c9393eb9835030ef_0 | Bin 1440 -> 0 bytes .../c9d81d6c12c3977f_0 | Bin 1474 -> 0 bytes .../cb5b394264a7b03f_0 | Bin 1372 -> 0 bytes .../cbdb9df688ab59c1_0 | Bin 1537 -> 0 bytes .../cbe8c6cc8cdf4253_0 | Bin 1307 -> 0 bytes .../cc839ca63759a933_0 | Bin 1511 -> 0 bytes .../cd49d7961e20a6a1_0 | Bin 1401 -> 0 bytes .../cd5860071fc9af25_0 | Bin 1567 -> 0 bytes .../cfcf69a2a44c3240_0 | Bin 1361 -> 0 bytes .../d01e08504cf7f0d2_0 | Bin 1562 -> 0 bytes .../d08588d1c7114cf6_0 | Bin 1282 -> 0 bytes .../d120c6efa03f7bcf_0 | Bin 1344 -> 0 bytes .../d162575e51be1b1b_0 | Bin 1332 -> 0 bytes .../d1628889ec2280b2_0 | Bin 1505 -> 0 bytes .../d1958a4c2322ae80_0 | Bin 1432 -> 0 bytes .../d1d74df0e0804e09_0 | Bin 1400 -> 0 bytes .../d25dd5c26ab005c4_0 | Bin 1508 -> 0 bytes .../d266e92b0ea7b46d_0 | Bin 1365 -> 0 bytes .../d28e10a752b14040_0 | Bin 1694 -> 0 bytes .../d2b0ca3185c63611_0 | Bin 1493 -> 0 bytes .../d3150e10cc3f8100_0 | Bin 1354 -> 0 bytes .../d32c1ae48c08773b_0 | Bin 1421 -> 0 bytes .../d41452f8148bab4f_0 | Bin 1486 -> 0 bytes .../d4890a4a0126077f_0 | Bin 1670 -> 0 bytes .../d5d07c05706867e3_0 | Bin 5120 -> 0 bytes .../d63ecd498f2df031_0 | Bin 1410 -> 0 bytes .../d6b435b13658ad79_0 | Bin 1514 -> 0 bytes .../d724a6a489355fd7_0 | Bin 1360 -> 0 bytes .../d7614f8e699d7af7_0 | Bin 2810 -> 0 bytes .../d7860e993a5630c3_0 | Bin 1458 -> 0 bytes .../d7c1eb09513b88dc_0 | Bin 67500 -> 0 bytes .../d7ee02e163765039_0 | Bin 1315 -> 0 bytes .../d85ab24a940b886b_0 | Bin 1471 -> 0 bytes .../d868e21a071aaa88_0 | Bin 1536 -> 0 bytes .../d86a30efba8dca7d_0 | Bin 1578 -> 0 bytes .../d877c081a5e74446_0 | Bin 1423 -> 0 bytes .../d904d5df8bcc2368_0 | Bin 1406 -> 0 bytes .../da9bf1b664b212e4_0 | Bin 1371 -> 0 bytes .../daf657e3d886e3f5_0 | Bin 1473 -> 0 bytes .../db9869d05db04f19_0 | Bin 1327 -> 0 bytes .../dc0b85e29399b7db_0 | Bin 1446 -> 0 bytes .../dd86e516f7ea18c3_0 | Bin 1421 -> 0 bytes .../de38962cd1ad8145_0 | Bin 1384 -> 0 bytes .../df1566ee5748d5c8_0 | Bin 1531 -> 0 bytes .../df29d983c7787c30_0 | Bin 1401 -> 0 bytes .../e06cabc98b1c4b25_0 | Bin 1466 -> 0 bytes .../e072450abf56cd4e_0 | Bin 1409 -> 0 bytes .../e1a11641a222cb84_0 | Bin 1283 -> 0 bytes .../e1b0a3fbeffc9be3_0 | Bin 1468 -> 0 bytes .../e2539ce4c4b91c64_0 | Bin 52879 -> 0 bytes .../e27dc59ce1a1362c_0 | Bin 1443 -> 0 bytes .../e51b347d4c00be5c_0 | Bin 1304 -> 0 bytes .../e56ddf935567f7ef_0 | Bin 1459 -> 0 bytes .../e6a4d86dbe08b13e_0 | Bin 1380 -> 0 bytes .../e783970fc7df1fe0_0 | Bin 1510 -> 0 bytes .../e8fca6e5aa54903c_0 | Bin 1464 -> 0 bytes .../e909f7c6df34fa61_0 | Bin 1598 -> 0 bytes .../e90b160176cd82b1_0 | Bin 1709 -> 0 bytes .../e97e0c67bace2cf0_0 | Bin 1761 -> 0 bytes .../e97f8dab42e0d8e7_0 | Bin 1451 -> 0 bytes .../e9953b743f7c2f41_0 | Bin 1454 -> 0 bytes .../ea213b800075ab34_0 | Bin 1437 -> 0 bytes .../ea7647fca069f90f_0 | Bin 1366 -> 0 bytes .../eae1d667c105527a_0 | Bin 1357 -> 0 bytes .../eaf75b8fe5189380_0 | Bin 1387 -> 0 bytes .../ebfec19c01a2e65b_0 | Bin 1503 -> 0 bytes .../eccb5f0dcff7ac51_0 | Bin 1403 -> 0 bytes .../ed35e8f7da1e5e18_0 | Bin 1395 -> 0 bytes .../ed88fc92ee703cf0_0 | Bin 1684 -> 0 bytes .../edc4373b200da25f_0 | Bin 1396 -> 0 bytes .../ee829bf4f42f1888_0 | Bin 1551 -> 0 bytes .../ef2982b5975e4296_0 | Bin 1354 -> 0 bytes .../ef5b2db1a8142fc9_0 | Bin 1462 -> 0 bytes .../efbc196a4dfb22aa_0 | Bin 1388 -> 0 bytes .../efd475c526c9c1d8_0 | Bin 1529 -> 0 bytes .../f016fbdaf514b269_0 | Bin 1609 -> 0 bytes .../f1263cdcb28a2882_0 | Bin 1443 -> 0 bytes .../f22388deab1c296d_0 | Bin 1766 -> 0 bytes .../f267e80a6f81f4b5_0 | Bin 1411 -> 0 bytes .../f2b90e027d21b687_0 | Bin 1332 -> 0 bytes .../f3f5fbc2f09835ce_0 | Bin 1355 -> 0 bytes .../f4e079ef6a9cdb5e_0 | Bin 1368 -> 0 bytes .../f529e18a77966546_0 | Bin 1438 -> 0 bytes .../f5a310cc8b2edd28_0 | Bin 1742 -> 0 bytes .../f5beb7f811387224_0 | Bin 1732 -> 0 bytes .../f66df915c89a519d_0 | Bin 1458 -> 0 bytes .../f6c0156a2fea2845_0 | Bin 1572 -> 0 bytes .../f6f4d65c2f0747df_0 | Bin 1453 -> 0 bytes .../f71b17f7ebd58e9d_0 | Bin 1358 -> 0 bytes .../f791b588370f3828_0 | Bin 1466 -> 0 bytes .../f7ae4156a119fb28_0 | Bin 1625 -> 0 bytes .../f877fef425749231_0 | Bin 1494 -> 0 bytes .../f8901d129c274bed_0 | Bin 1427 -> 0 bytes .../f895d0a6446241da_0 | Bin 1440 -> 0 bytes .../f8d79728ff97f661_0 | Bin 1388 -> 0 bytes .../f8e0d7196e603f5c_0 | Bin 1378 -> 0 bytes .../fa4ed36594c5557d_0 | Bin 1236 -> 0 bytes .../fb0c98a284d9915a_0 | Bin 1347 -> 0 bytes .../fb96252ef371bd49_0 | Bin 1445 -> 0 bytes .../fcbc1da413162718_0 | Bin 1654 -> 0 bytes .../fd1abaa0e6192be7_0 | Bin 1431 -> 0 bytes .../fd5f5589973f3caa_0 | Bin 1330 -> 0 bytes .../fe0825ba0022493e_0 | Bin 1436 -> 0 bytes .../fe0863a94af0f7c9_0 | Bin 1519 -> 0 bytes .../fe756b47c45a5730_0 | Bin 1562 -> 0 bytes .../fe8c580bed1de761_0 | Bin 1374 -> 0 bytes .../febdb5cc1f915199_0 | Bin 1374 -> 0 bytes .../ff36c015dd67add3_0 | Bin 1399 -> 0 bytes .../ffa1cfeb1d201a97_0 | Bin 1474 -> 0 bytes .../a57a7ca5-6305-4460-ac5e-392e618ce994/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 12000 -> 0 bytes .../54024a26d3ccf712_0 | Bin 4208817 -> 0 bytes .../82d930988f59e1ff_0 | Bin 4208795 -> 0 bytes .../b867624a40faea70_0 | Bin 4208801 -> 0 bytes .../b233e79b-4fec-44b8-8960-0d6d7a955e83/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 120 -> 0 bytes .../a006053cee55d015_0 | Bin 288641 -> 0 bytes .../f8395d38-0733-4946-8c64-9f377902fab2/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 72 -> 0 bytes .../index.txt | Bin 1127 -> 0 bytes .../0c44e4c4c8c8ada1_0 | Bin 244734 -> 0 bytes .../0c888c0b749b9e33_0 | Bin 388391 -> 0 bytes .../0c888c0b749b9e33_1 | Bin 271022 -> 0 bytes .../0de650566a5514e3_0 | Bin 5277 -> 0 bytes .../10c1bc332814f1db_0 | Bin 599757 -> 0 bytes .../1354b5f7c2a856d5_0 | Bin 1188609 -> 0 bytes .../1354b5f7c2a856d5_1 | Bin 361256 -> 0 bytes .../156ecf8e0a19058c_0 | Bin 86354 -> 0 bytes .../20d3bc6daf5f3440_0 | Bin 338578 -> 0 bytes .../241897cbcb541b52_0 | Bin 424068 -> 0 bytes .../262e9df1e2d15d47_0 | Bin 60518 -> 0 bytes .../2786d125441c365a_0 | Bin 170148 -> 0 bytes .../2786d125441c365a_1 | Bin 98762 -> 0 bytes .../2997514a15f97019_0 | Bin 106534 -> 0 bytes .../2ee8d95c51d3b7d1_0 | Bin 48467 -> 0 bytes .../2ee8d95c51d3b7d1_1 | Bin 35759 -> 0 bytes .../30fdbcf80e02e088_0 | Bin 1755061 -> 0 bytes .../3655b57a8feb677c_0 | Bin 1368144 -> 0 bytes .../371e8f851c4af508_0 | Bin 20768 -> 0 bytes .../38fe1561e2002ceb_0 | Bin 54713 -> 0 bytes .../3aef9bfd971876ae_0 | Bin 21567 -> 0 bytes .../3aef9bfd971876ae_1 | Bin 11920 -> 0 bytes .../3c0f455159e10c2a_0 | Bin 82251 -> 0 bytes .../41771143ca47bf5d_0 | Bin 3614 -> 0 bytes .../42690ef93d41a7f6_0 | Bin 450627 -> 0 bytes .../42690ef93d41a7f6_1 | Bin 399545 -> 0 bytes .../4553ba12b187f4c1_0 | Bin 157174 -> 0 bytes .../4b4ab5e2e8e51017_0 | Bin 7018 -> 0 bytes .../4b59694a60068a9a_0 | Bin 95974 -> 0 bytes .../50bc2a822f0bd3f9_0 | Bin 204542 -> 0 bytes .../50bc2a822f0bd3f9_1 | Bin 115753 -> 0 bytes .../519787191582cd5e_0 | Bin 262503 -> 0 bytes .../5212c900c21f2442_0 | Bin 3042 -> 0 bytes .../550e41bd70b0ee0e_0 | Bin 189418 -> 0 bytes .../5d515bd553f8e102_0 | Bin 1944303 -> 0 bytes .../5ef247a383493ff1_0 | Bin 847 -> 0 bytes .../60681db93a93ab4b_0 | Bin 468512 -> 0 bytes .../628700c977a167ab_0 | Bin 93436 -> 0 bytes .../65fcb4b93f8cfb33_0 | Bin 104256 -> 0 bytes .../65fcb4b93f8cfb33_1 | Bin 92613 -> 0 bytes .../6918f0b1f2066aad_0 | Bin 6293 -> 0 bytes .../691c63d6eab671fe_0 | Bin 997226 -> 0 bytes .../69c5c36f0b081f4a_0 | Bin 407645 -> 0 bytes .../69c5c36f0b081f4a_1 | Bin 247709 -> 0 bytes .../6b913fea10b54c71_0 | Bin 422904 -> 0 bytes .../6cae3579b4d1c390_0 | Bin 1580439 -> 0 bytes .../6d164b319dcb74a4_0 | Bin 368217 -> 0 bytes .../6edf68457c8bfe1f_0 | Bin 887 -> 0 bytes .../6fbb7fa7d8d2930e_0 | Bin 286029 -> 0 bytes .../70a9ee61830d7cc2_0 | Bin 95720 -> 0 bytes .../70a9ee61830d7cc2_1 | Bin 65676 -> 0 bytes .../714a04bda77fc715_0 | Bin 38963 -> 0 bytes .../71795f3195364dc8_0 | Bin 99463 -> 0 bytes .../72465c1d1abe1a64_0 | Bin 457376 -> 0 bytes .../78fb11ed10f5f2f5_0 | Bin 26697 -> 0 bytes .../798b0126b0fa8b30_0 | Bin 9263 -> 0 bytes .../798b0126b0fa8b30_1 | Bin 6677 -> 0 bytes .../835577074314aced_0 | Bin 500865 -> 0 bytes .../835577074314aced_1 | Bin 481303 -> 0 bytes .../855623f4c52e90d5_0 | Bin 136728 -> 0 bytes .../855623f4c52e90d5_1 | Bin 134475 -> 0 bytes .../863db226d286a226_0 | Bin 1379 -> 0 bytes .../882359eb8f40badd_0 | Bin 84077 -> 0 bytes .../882359eb8f40badd_1 | Bin 49961 -> 0 bytes .../892df032d6d084e4_0 | Bin 1611 -> 0 bytes .../892df032d6d084e4_1 | Bin 1450 -> 0 bytes .../8dd5c96853e60ff8_0 | Bin 70468 -> 0 bytes .../8dd5c96853e60ff8_1 | Bin 44511 -> 0 bytes .../8f5c3973168e9cd7_0 | Bin 684982 -> 0 bytes .../913158a8fa01b685_0 | Bin 3537713 -> 0 bytes .../92f3e7b6cfd21174_0 | Bin 53008 -> 0 bytes .../92f3e7b6cfd21174_1 | Bin 92627 -> 0 bytes .../94034c254cff5cf4_0 | Bin 29078 -> 0 bytes .../94034c254cff5cf4_1 | Bin 19270 -> 0 bytes .../980b45a396a84b64_0 | Bin 35969 -> 0 bytes .../980b45a396a84b64_1 | Bin 54952 -> 0 bytes .../9f9fe787af5267bb_0 | Bin 1657 -> 0 bytes .../a06c7758aa595dab_0 | Bin 162884 -> 0 bytes .../a2bb1795da26e56f_0 | Bin 144169 -> 0 bytes .../a2ec65f3093378d5_0 | Bin 38434 -> 0 bytes .../a2ec65f3093378d5_1 | Bin 54282 -> 0 bytes .../a6d86813558e38bb_0 | Bin 900342 -> 0 bytes .../a8d2a8f40acd0424_0 | Bin 384402 -> 0 bytes .../a8d2a8f40acd0424_1 | Bin 274817 -> 0 bytes .../b2ee940d308dea2e_0 | Bin 91443 -> 0 bytes .../b2ee940d308dea2e_1 | Bin 48830 -> 0 bytes .../b35e5bbd39c36bd3_0 | Bin 148279 -> 0 bytes .../b35e5bbd39c36bd3_1 | Bin 105075 -> 0 bytes .../beefeca20bbb79de_0 | Bin 117564 -> 0 bytes .../beefeca20bbb79de_1 | Bin 65388 -> 0 bytes .../c020baaa4a2cd60e_0 | Bin 539432 -> 0 bytes .../c0c3c1efb78cf3b4_0 | Bin 7061 -> 0 bytes .../c5e4712ce6d0b5b7_0 | Bin 358810 -> 0 bytes .../c7b579a7fc76cc83_0 | Bin 525609 -> 0 bytes .../ccae21030651acbd_0 | Bin 27644 -> 0 bytes .../ccae21030651acbd_1 | Bin 32278 -> 0 bytes .../ce182d4e15a26d65_0 | Bin 1421 -> 0 bytes .../ce182d4e15a26d65_1 | Bin 1408 -> 0 bytes .../d76753c35e47b9a6_0 | Bin 84159 -> 0 bytes .../d76753c35e47b9a6_1 | Bin 55158 -> 0 bytes .../dcb1afafccfd5e4d_0 | Bin 240692 -> 0 bytes .../e160ce32c72e95b5_0 | Bin 537184 -> 0 bytes .../e24e9ac859acc440_0 | Bin 170058 -> 0 bytes .../e7a0602c472ef959_0 | Bin 28236 -> 0 bytes .../f1a2f898505fe7bc_0 | Bin 162888 -> 0 bytes .../f1a2f898505fe7bc_1 | Bin 219511 -> 0 bytes .../f32c33e67d0bd51d_0 | Bin 243858 -> 0 bytes .../f9f18fce84316c15_0 | Bin 59486 -> 0 bytes .../fce29a6c31af62bc_0 | Bin 9274 -> 0 bytes .../fce29a6c31af62bc_1 | Bin 6226 -> 0 bytes .../63b1b16d-3189-4b5f-9213-9048e2d49fc5/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 1992 -> 0 bytes .../index.txt | Bin 175 -> 0 bytes .../5c44c608e968d1a2_0 | Bin 414958 -> 0 bytes .../03be0e10-8edb-4fe6-8ad1-f9d13347f67d/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 72 -> 0 bytes .../d1fcfabdff80b26e_0 | Bin 424581 -> 0 bytes .../1bf07e59-9e36-49d5-824f-921b7a4b4370/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 72 -> 0 bytes .../589cab1e-5f40-449d-8fb8-541d1be495b1/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 48 -> 0 bytes .../19b26a2a946d82ed_0 | Bin 288309 -> 0 bytes .../e69a596848720b01_0 | Bin 143462 -> 0 bytes .../b1e4fbda-fbe9-4cd3-bbf1-e98a67c9f8f1/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 96 -> 0 bytes .../index.txt | Bin 476 -> 0 bytes .../034c6ddbca1c01dc_0 | Bin 2301 -> 0 bytes .../0587c5e59af811eb_0 | Bin 741 -> 0 bytes .../07d177d7cb118f9d_0 | Bin 1781 -> 0 bytes .../09a3f479389b2f3e_0 | Bin 4788 -> 0 bytes .../0ae4079e81991306_0 | Bin 3406 -> 0 bytes .../0ae4079e81991306_1 | Bin 8266 -> 0 bytes .../0cbc2ee61c9e90ce_0 | Bin 1487 -> 0 bytes .../10bdd7a5a8e0f8d0_0 | Bin 744 -> 0 bytes .../14965a1c8f5f8d7a_0 | Bin 1364 -> 0 bytes .../15f9beff407d072d_0 | Bin 907 -> 0 bytes .../192c2092560ae10c_0 | Bin 7507 -> 0 bytes .../1b0872fee1f9d4e0_0 | Bin 1520 -> 0 bytes .../1d49f95a84be5ac1_0 | Bin 6996 -> 0 bytes .../1d49f95a84be5ac1_1 | Bin 17990 -> 0 bytes .../21207c6a01baab90_0 | Bin 6765 -> 0 bytes .../27cb7f0323a443b5_0 | Bin 792 -> 0 bytes .../2c5ff5da48d32502_0 | Bin 6199 -> 0 bytes .../2c5ff5da48d32502_1 | Bin 13053 -> 0 bytes .../2fb909d30c4feb9b_0 | Bin 848 -> 0 bytes .../316a1136edb9ae89_0 | Bin 4020 -> 0 bytes .../31c4f4ef122216fd_0 | Bin 2059 -> 0 bytes .../3237b092b8893c71_0 | Bin 915 -> 0 bytes .../337829bd96c0bb0c_0 | Bin 5618 -> 0 bytes .../337829bd96c0bb0c_1 | Bin 12069 -> 0 bytes .../3793732114425c02_0 | Bin 6192 -> 0 bytes .../39bc77af21c7a055_0 | Bin 14672 -> 0 bytes .../3f6b73d560506067_0 | Bin 1336 -> 0 bytes .../40050dc4a21d289d_0 | Bin 2086 -> 0 bytes .../400d4bf2f85979ca_0 | Bin 1223 -> 0 bytes .../400d4bf2f85979ca_1 | Bin 1346 -> 0 bytes .../41862b87ea43192a_0 | Bin 1558 -> 0 bytes .../41ac76c57e72009e_0 | Bin 867 -> 0 bytes .../445133e5733d278a_0 | Bin 1913 -> 0 bytes .../4ad26e4762e51e37_0 | Bin 1823 -> 0 bytes .../4ef4bf98570f5e7c_0 | Bin 1456 -> 0 bytes .../5492342daad87031_0 | Bin 1502 -> 0 bytes .../55e6f5660736d734_0 | Bin 1198 -> 0 bytes .../55e6f5660736d734_1 | Bin 1361 -> 0 bytes .../5751807d7822f320_0 | Bin 6542 -> 0 bytes .../5751807d7822f320_1 | Bin 15673 -> 0 bytes .../584532a04040a579_0 | Bin 845 -> 0 bytes .../5b826b1aaaa18c6d_0 | Bin 3600 -> 0 bytes .../5eaea9cee2153b18_0 | Bin 780 -> 0 bytes .../6202cf6b8c76390b_0 | Bin 798 -> 0 bytes .../6202cf6b8c76390b_1 | Bin 828 -> 0 bytes .../63176c280e1f2620_0 | Bin 2842 -> 0 bytes .../694364d94928f43e_0 | Bin 667 -> 0 bytes .../6bdf0c55fd64fbff_0 | Bin 3340 -> 0 bytes .../70dd1232aa1dc49a_0 | Bin 2379 -> 0 bytes .../710a090431817783_0 | Bin 858 -> 0 bytes .../759937651cf59aed_0 | Bin 1148 -> 0 bytes .../767b47419e493d42_0 | Bin 1751 -> 0 bytes .../7ddd4bb8ec080cab_0 | Bin 6013 -> 0 bytes .../7ddd4bb8ec080cab_1 | Bin 5708 -> 0 bytes .../81f94cb2c2a30976_0 | Bin 1365 -> 0 bytes .../83302bec4944bf86_0 | Bin 5145 -> 0 bytes .../8444d9b9710f63a7_0 | Bin 2907 -> 0 bytes .../9575c9466e2f27f5_0 | Bin 10981 -> 0 bytes .../9575c9466e2f27f5_1 | Bin 18534 -> 0 bytes .../9a12e1ddedf443a3_0 | Bin 17221 -> 0 bytes .../a06a529bf5188b81_0 | Bin 3021 -> 0 bytes .../a06a529bf5188b81_1 | Bin 5595 -> 0 bytes .../a5c10a00111ac550_0 | Bin 3821 -> 0 bytes .../a5fd86fffc86886e_0 | Bin 3747 -> 0 bytes .../a5fd86fffc86886e_1 | Bin 10131 -> 0 bytes .../a6aa9ae962be64c8_0 | Bin 2242 -> 0 bytes .../a6aa9ae962be64c8_1 | Bin 4526 -> 0 bytes .../a8102c20e3dfa22d_0 | Bin 3229 -> 0 bytes .../a8102c20e3dfa22d_1 | Bin 8651 -> 0 bytes .../af432948523ffc36_0 | Bin 1367 -> 0 bytes .../b094bc4de53b94b9_0 | Bin 1573 -> 0 bytes .../b3250c239391a92f_0 | Bin 1661 -> 0 bytes .../bcebf0d2726cd7d0_0 | Bin 1687 -> 0 bytes .../bec09916227584ae_0 | Bin 1405 -> 0 bytes .../bf3c3a1a8ab24f5c_0 | Bin 2065 -> 0 bytes .../c389b5211f3327c2_0 | Bin 687 -> 0 bytes .../c3e9132f62a2f24c_0 | Bin 1657 -> 0 bytes .../c62e8a3d503b863a_0 | Bin 3944 -> 0 bytes .../c7e7aaa9e27d30d8_0 | Bin 2980 -> 0 bytes .../ccd3166c8fe34364_0 | Bin 1424 -> 0 bytes .../cdacfed793b166c9_0 | Bin 13763 -> 0 bytes .../d061642eeac34211_0 | Bin 2511 -> 0 bytes .../d16ba1100e823add_0 | Bin 5351 -> 0 bytes .../d5a711f4aa681eba_0 | Bin 1295727 -> 0 bytes .../d5a711f4aa681eba_1 | Bin 1390502 -> 0 bytes .../d9c32ce3dbcf7a51_0 | Bin 1110 -> 0 bytes .../e439822d42c03eba_0 | Bin 935 -> 0 bytes .../ebd61f32f4bb8c70_0 | Bin 86647 -> 0 bytes .../ec4a483d21dd3ff0_0 | Bin 4090 -> 0 bytes .../ec4a483d21dd3ff0_1 | Bin 8230 -> 0 bytes .../ef296d5201d80c31_0 | Bin 2661 -> 0 bytes .../f3beb061b9aeb818_0 | Bin 3070 -> 0 bytes .../f5a1c24cd06dd4f5_0 | Bin 2998 -> 0 bytes .../f74f7b59e3071ae4_0 | Bin 8555 -> 0 bytes .../f74f7b59e3071ae4_1 | Bin 24326 -> 0 bytes .../fecc356fc600484c_0 | Bin 1205 -> 0 bytes .../ffc0fee7b67a2edc_0 | Bin 1620 -> 0 bytes .../4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 1968 -> 0 bytes .../index.txt | Bin 232 -> 0 bytes .../010e2aa41be96f1c_0 | Bin 8526 -> 0 bytes .../036f5a255bfb08b0_0 | Bin 131280 -> 0 bytes .../046fcb9530154a4b_0 | Bin 27693 -> 0 bytes .../07c2a39150f403f8_0 | Bin 9907 -> 0 bytes .../0981e7fe4cf5c25a_0 | Bin 740117 -> 0 bytes .../09a82bddfd94214f_0 | Bin 2826 -> 0 bytes .../0b045482ed4b93db_0 | Bin 40023 -> 0 bytes .../0d449a67befa201d_0 | Bin 21648 -> 0 bytes .../0fefb1ceaeaf5098_0 | Bin 99420 -> 0 bytes .../118f514158558b6a_0 | Bin 22415 -> 0 bytes .../14f236b4ae130bc8_0 | Bin 3408 -> 0 bytes .../15c77db8fa93e72b_0 | Bin 3127 -> 0 bytes .../16af324cd017e896_0 | Bin 20986 -> 0 bytes .../189c8e2d792208bb_0 | Bin 5259 -> 0 bytes .../1d8eca990891ece2_0 | Bin 25863 -> 0 bytes .../21aab6fd892c2a4a_0 | Bin 27267 -> 0 bytes .../24a5591fdb8d6859_0 | Bin 9393 -> 0 bytes .../285dcbb4d87aea56_0 | Bin 6266 -> 0 bytes .../28efa1b838c69775_0 | Bin 66717 -> 0 bytes .../2c42e38f7a4f0eb1_0 | Bin 71171 -> 0 bytes .../2e041b1d682c46ac_0 | Bin 11536 -> 0 bytes .../32e048919195f790_0 | Bin 33884 -> 0 bytes .../3775017a28af54b0_0 | Bin 8591 -> 0 bytes .../398a220eefdaaa79_0 | Bin 50120 -> 0 bytes .../39d4d76ff1b2e13f_0 | Bin 1612 -> 0 bytes .../3ad853c9fdd19ec7_0 | Bin 117641 -> 0 bytes .../3be6db09689668a0_0 | Bin 9850 -> 0 bytes .../3c87e42e0ee9666a_0 | Bin 2691 -> 0 bytes .../3f9f6310fd3c5f1f_0 | Bin 22396 -> 0 bytes .../3fdc9d5ddceff950_0 | Bin 3325 -> 0 bytes .../43039a715f84c6dd_0 | Bin 57324 -> 0 bytes .../4304a31bd22aa08b_0 | Bin 6143 -> 0 bytes .../43a1daa1c514d4a8_0 | Bin 6190 -> 0 bytes .../463810f33351c7d3_0 | Bin 6244 -> 0 bytes .../4715e9ba39cb3d9c_0 | Bin 10650 -> 0 bytes .../481d60447e0af49e_0 | Bin 79104 -> 0 bytes .../4b4c63d8abd570ec_0 | Bin 3155 -> 0 bytes .../4b8c146d8a8a25f8_0 | Bin 22438 -> 0 bytes .../4ca0583dcf7e13b0_0 | Bin 6085 -> 0 bytes .../5881428d47454c97_0 | Bin 42496 -> 0 bytes .../58e7b394d456505f_0 | Bin 4894 -> 0 bytes .../5a7584c974f0c78b_0 | Bin 54765 -> 0 bytes .../5b4380e594b33a1b_0 | Bin 3653 -> 0 bytes .../5b6d22d979ebc753_0 | Bin 121939 -> 0 bytes .../6237dba18060f3ff_0 | Bin 61468 -> 0 bytes .../64b081f2a238b90d_0 | Bin 3272 -> 0 bytes .../6521771cc9b6ca2a_0 | Bin 2306 -> 0 bytes .../68db37ea074f7a80_0 | Bin 26375 -> 0 bytes .../6ff546fa3a5e8807_0 | Bin 20758 -> 0 bytes .../721c7dbf8a1bfdf7_0 | Bin 25779 -> 0 bytes .../73b376e03e29ff27_0 | Bin 58182 -> 0 bytes .../775f273f09f4344c_0 | Bin 21450 -> 0 bytes .../7ab751f11d6acb5c_0 | Bin 128501 -> 0 bytes .../7b460b10ec5a9b07_0 | Bin 3756 -> 0 bytes .../8288c38a1acdb8fa_0 | Bin 3270 -> 0 bytes .../83e18fff80d5211a_0 | Bin 42558 -> 0 bytes .../85b40064e623738f_0 | Bin 55678 -> 0 bytes .../870af6496c3bda8b_0 | Bin 6208 -> 0 bytes .../98390d09e8c6a97d_0 | Bin 3085 -> 0 bytes .../9850de720ec00922_0 | Bin 118506 -> 0 bytes .../996754ef9d3bc530_0 | Bin 59101 -> 0 bytes .../9a722f391e682c9e_0 | Bin 213746 -> 0 bytes .../9f9b39e1821bbeb0_0 | Bin 52783 -> 0 bytes .../a31f055d9b390624_0 | Bin 27019 -> 0 bytes .../aafa214d475b08d4_0 | Bin 2494 -> 0 bytes .../abcbd2ecbf8bb923_0 | Bin 140597 -> 0 bytes .../aed0a671853608a3_0 | Bin 4896 -> 0 bytes .../b3f521cb6b89c79a_0 | Bin 12263 -> 0 bytes .../b6feda5769cf1d94_0 | Bin 3635 -> 0 bytes .../b75fa98e7f699f0c_0 | Bin 3099 -> 0 bytes .../bb291547536af813_0 | Bin 2179 -> 0 bytes .../bc48797fa37441ae_0 | Bin 4700 -> 0 bytes .../c3e1e7363f0c7da7_0 | Bin 29595 -> 0 bytes .../c53ff7118f924ad0_0 | Bin 410232 -> 0 bytes .../c66af30274639a3f_0 | Bin 5261 -> 0 bytes .../c751bb5b15c6a36d_0 | Bin 28331 -> 0 bytes .../ca3e8050d22ad0af_0 | Bin 22211 -> 0 bytes .../ce9dc6717599ee3f_0 | Bin 33531 -> 0 bytes .../d073a59aeee8ddbf_0 | Bin 2996 -> 0 bytes .../d33730ed1f8cc046_0 | Bin 36694 -> 0 bytes .../d8ced88380b30889_0 | Bin 10772 -> 0 bytes .../da537dc2790fe606_0 | Bin 5777 -> 0 bytes .../da568aa26c9caefb_0 | Bin 368039 -> 0 bytes .../deb95f8f6d598448_0 | Bin 28104 -> 0 bytes .../df32ba27f27a019b_0 | Bin 79149 -> 0 bytes .../dfa7b72693b3362f_0 | Bin 38236 -> 0 bytes .../e34be89f97399391_0 | Bin 79189 -> 0 bytes .../e72841ac9f1f9397_0 | Bin 2371 -> 0 bytes .../e90aab69514b2968_0 | Bin 56991 -> 0 bytes .../ea7a46c4086106dc_0 | Bin 3370 -> 0 bytes .../eae50c186db28a9d_0 | Bin 51630 -> 0 bytes .../edd8a0ed102e61dc_0 | Bin 17810 -> 0 bytes .../edfb706d30168794_0 | Bin 22472 -> 0 bytes .../efd150d0e378ac5f_0 | Bin 3463 -> 0 bytes .../f1f630e35f9accab_0 | Bin 4188 -> 0 bytes .../f3ae579bf9e517ec_0 | Bin 14866 -> 0 bytes .../f79fe639651d3334_0 | Bin 31190 -> 0 bytes .../fa061e1cbc1b40a2_0 | Bin 12477 -> 0 bytes .../fff3c320501c2141_0 | Bin 10632 -> 0 bytes .../f1dcab9c-c52b-4438-9405-9ae56e42c738/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 2424 -> 0 bytes .../index.txt | Bin 227 -> 0 bytes .../00e21cce40be2887_0 | Bin 789 -> 0 bytes .../00f054370cc4d95e_0 | Bin 8890 -> 0 bytes .../024f1406b71919bb_0 | Bin 782 -> 0 bytes .../032c092253d4cb7e_0 | Bin 1151 -> 0 bytes .../0614f28a1a74a65e_0 | Bin 1379 -> 0 bytes .../067d93e8c8fadb1f_0 | Bin 1048 -> 0 bytes .../07a5a327dfcebe0b_0 | Bin 3979 -> 0 bytes .../09b5bc0bc33e2ebd_0 | Bin 774 -> 0 bytes .../0aab74dd13a7ec98_0 | Bin 9645 -> 0 bytes .../0be6979c730980ae_0 | Bin 3230 -> 0 bytes .../0d474291750582ec_0 | Bin 2785 -> 0 bytes .../0e19879486bf9a69_0 | Bin 994 -> 0 bytes .../1004d1e2f4b1d18e_0 | Bin 778 -> 0 bytes .../14a58e07e1b749e4_0 | Bin 780 -> 0 bytes .../156cec31acf2c45d_0 | Bin 1443 -> 0 bytes .../16c95698ab267681_0 | Bin 1051 -> 0 bytes .../18f37a84ca266a79_0 | Bin 1215 -> 0 bytes .../199e590df0d19782_0 | Bin 792 -> 0 bytes .../1bc976e736105ea7_0 | Bin 786 -> 0 bytes .../1ceb285f297627eb_0 | Bin 1412 -> 0 bytes .../1d813428989a99eb_0 | Bin 1195 -> 0 bytes .../205b18f3ee52d95d_0 | Bin 786 -> 0 bytes .../21532d19c0fcc24f_0 | Bin 1182 -> 0 bytes .../241189d344b3c547_0 | Bin 785 -> 0 bytes .../2442001e36350cd7_0 | Bin 2030 -> 0 bytes .../245bdd1f09655e5c_0 | Bin 782 -> 0 bytes .../24cc03f601530def_0 | Bin 779 -> 0 bytes .../25e207f5a83d5621_0 | Bin 2046 -> 0 bytes .../26e97aea58c16df0_0 | Bin 48921 -> 0 bytes .../28a3dca279ffb8ce_0 | Bin 1344 -> 0 bytes .../2b5d2a0652cbbef4_0 | Bin 1206 -> 0 bytes .../30944830c7c7d015_0 | Bin 770 -> 0 bytes .../30c9f6cd24aeecaa_0 | Bin 5932 -> 0 bytes .../36cdd3c30b1ce569_0 | Bin 1028 -> 0 bytes .../378e888e22f37133_0 | Bin 2996 -> 0 bytes .../383d122a1d384799_0 | Bin 778 -> 0 bytes .../386921f56fcc00f6_0 | Bin 1035 -> 0 bytes .../38c7495a87818852_0 | Bin 786 -> 0 bytes .../390baeeeb49e1b46_0 | Bin 786 -> 0 bytes .../3911b6bb960d5dba_0 | Bin 5163 -> 0 bytes .../39c8446d4b6ed0f3_0 | Bin 809 -> 0 bytes .../3ba7954e152570bb_0 | Bin 2955 -> 0 bytes .../3cfaefe3440af4b9_0 | Bin 1237 -> 0 bytes .../3e39c5f26a9faa53_0 | Bin 790 -> 0 bytes .../3f05103c9db5c7ec_0 | Bin 786 -> 0 bytes .../3f78a34f60e4ea5c_0 | Bin 1150 -> 0 bytes .../41a8c960f93a27c2_0 | Bin 1136 -> 0 bytes .../4267a5201fb73900_0 | Bin 785 -> 0 bytes .../46ee7a8d9a644a71_0 | Bin 774 -> 0 bytes .../4858f2ed18beac69_0 | Bin 1137 -> 0 bytes .../48aef4e2e7cdb905_0 | Bin 1040 -> 0 bytes .../497b464009271593_0 | Bin 781 -> 0 bytes .../4df411110640b594_0 | Bin 776 -> 0 bytes .../56f5a0d6d5d6fd2f_0 | Bin 1015 -> 0 bytes .../56fb54514aadd8b6_0 | Bin 790 -> 0 bytes .../591ce1c8ffa9fc91_0 | Bin 778 -> 0 bytes .../5a4bedf49ab00462_0 | Bin 774 -> 0 bytes .../5aa8e3f0072842ee_0 | Bin 1287 -> 0 bytes .../5b5db0d35f953ca6_0 | Bin 796 -> 0 bytes .../5cd59ce3323b055e_0 | Bin 90364 -> 0 bytes .../5cd59ce3323b055e_1 | Bin 132231 -> 0 bytes .../5f09c8f8738d50e1_0 | Bin 790 -> 0 bytes .../5f87160deb37ef79_0 | Bin 1270 -> 0 bytes .../612836579c828552_0 | Bin 781 -> 0 bytes .../63e12c564a03d553_0 | Bin 3288 -> 0 bytes .../651e62789627002b_0 | Bin 5383 -> 0 bytes .../660d0f16611c5eaf_0 | Bin 1351 -> 0 bytes .../69af36bc9adc9559_0 | Bin 2458 -> 0 bytes .../6a2a8817d7dfe967_0 | Bin 3580 -> 0 bytes .../6b75162ab42246d9_0 | Bin 12455 -> 0 bytes .../6c767a5b774596bf_0 | Bin 5904 -> 0 bytes .../6d1d386369c73097_0 | Bin 778 -> 0 bytes .../6d55b5184df1443d_0 | Bin 793 -> 0 bytes .../6dc5fb92b0c2e213_0 | Bin 3480 -> 0 bytes .../6ff144cc889e32e3_0 | Bin 2213 -> 0 bytes .../72acf894c8f003ae_0 | Bin 2973 -> 0 bytes .../72d4ad6693d4faeb_0 | Bin 2410 -> 0 bytes .../72d938f9de4fbd0e_0 | Bin 1049 -> 0 bytes .../79d881ec45f1385d_0 | Bin 1030 -> 0 bytes .../7d85976da1ebefa5_0 | Bin 1903 -> 0 bytes .../7dad506d561013c3_0 | Bin 2456 -> 0 bytes .../7fcaf93cb76b3cce_0 | Bin 1853 -> 0 bytes .../8107cdc3f1a5f26a_0 | Bin 7260 -> 0 bytes .../84426eb28ee2def4_0 | Bin 2256 -> 0 bytes .../8467e5b4d552544f_0 | Bin 1139 -> 0 bytes .../84d2cd0ba826f9f3_0 | Bin 3077 -> 0 bytes .../86343b01e9ed1171_0 | Bin 802 -> 0 bytes .../8641ce2afb064cac_0 | Bin 909 -> 0 bytes .../89c16cbfdc962990_0 | Bin 1164 -> 0 bytes .../8c849de8ba01eea8_0 | Bin 1409 -> 0 bytes .../8c8845abe90bff9b_0 | Bin 791 -> 0 bytes .../8e039e3ac9d9b077_0 | Bin 1714 -> 0 bytes .../8f3c192d9e696a00_0 | Bin 2485 -> 0 bytes .../904e1af19450b1f8_0 | Bin 27461 -> 0 bytes .../90f3607369d9aa12_0 | Bin 786 -> 0 bytes .../910d6b6d3da4cf8b_0 | Bin 793 -> 0 bytes .../91245d97397c554c_0 | Bin 1185 -> 0 bytes .../91b877e671f9175d_0 | Bin 782 -> 0 bytes .../92f66b46ad5828df_0 | Bin 774 -> 0 bytes .../9538eac50d24be2a_0 | Bin 841 -> 0 bytes .../9689990f42775cbe_0 | Bin 1703 -> 0 bytes .../96af1e3ef3ba4c75_0 | Bin 36231 -> 0 bytes .../980ad0ea88d78bfe_0 | Bin 1400 -> 0 bytes .../9973e4080770f2a6_0 | Bin 816 -> 0 bytes .../99a25c32c2a8d2b8_0 | Bin 786 -> 0 bytes .../9a9aa34380687509_0 | Bin 786 -> 0 bytes .../9ab71bb7289f997a_0 | Bin 1075 -> 0 bytes .../9b4ec36135c842dd_0 | Bin 1228 -> 0 bytes .../a1ae36dc42e083da_0 | Bin 2257 -> 0 bytes .../a277d7b883b6d65b_0 | Bin 23331 -> 0 bytes .../a3c93992ec13e47f_0 | Bin 8735 -> 0 bytes .../a43ac071a6293829_0 | Bin 21006 -> 0 bytes .../a43ac071a6293829_1 | Bin 26249 -> 0 bytes .../a62a768aa3c80e0a_0 | Bin 778 -> 0 bytes .../a77f3337093c70be_0 | Bin 265707 -> 0 bytes .../a8c360760f799ccb_0 | Bin 786 -> 0 bytes .../aac95bacd3df4d2c_0 | Bin 1273 -> 0 bytes .../ab39f7b6a3b5fe10_0 | Bin 766 -> 0 bytes .../ab7b816ea3629258_0 | Bin 778 -> 0 bytes .../ab8aaff42b0a5ce9_0 | Bin 807 -> 0 bytes .../ac507ccd6f3a2b02_0 | Bin 791 -> 0 bytes .../b1560b4b5fd1e983_0 | Bin 787 -> 0 bytes .../b1593fbea8e92b53_0 | Bin 1581 -> 0 bytes .../b15de68cc0cd4f98_0 | Bin 2867 -> 0 bytes .../b16e387f944d9a66_0 | Bin 1083 -> 0 bytes .../b2606b201af181a1_0 | Bin 777 -> 0 bytes .../b36609bb002518b7_0 | Bin 1464 -> 0 bytes .../b7a517426c7f0357_0 | Bin 1240 -> 0 bytes .../b7fbafe94d0c224a_0 | Bin 1091 -> 0 bytes .../b7fc7441308b400c_0 | Bin 786 -> 0 bytes .../b88d5e775dcffa07_0 | Bin 1075 -> 0 bytes .../b8a7959989537868_0 | Bin 793 -> 0 bytes .../b92a81493a1dc65e_0 | Bin 2292 -> 0 bytes .../bade2413f0ecbd45_0 | Bin 989 -> 0 bytes .../bb7804956a5f7788_0 | Bin 3016 -> 0 bytes .../bd09d29ac6d50633_0 | Bin 1441 -> 0 bytes .../bd96509006ee329a_0 | Bin 1272 -> 0 bytes .../be1b3f73bc0be0ed_0 | Bin 2888 -> 0 bytes .../be615f32826a8ebf_0 | Bin 3115 -> 0 bytes .../c484bbda3db4256d_0 | Bin 4640 -> 0 bytes .../c5450fb2d6388908_0 | Bin 1028 -> 0 bytes .../c5669de7dde57b60_0 | Bin 35299 -> 0 bytes .../c5b031dd49d15c9e_0 | Bin 1399 -> 0 bytes .../c77a5944ac39fcff_0 | Bin 762 -> 0 bytes .../c7fdb981e3285e1c_0 | Bin 6029 -> 0 bytes .../cb37d1d24d7dfa62_0 | Bin 1063 -> 0 bytes .../cb77df34ea397361_0 | Bin 1307 -> 0 bytes .../cc15c5e19d80ec08_0 | Bin 1123 -> 0 bytes .../cc1abda097f32e8b_0 | Bin 2259 -> 0 bytes .../ccc4f9ee47fe15d1_0 | Bin 1320 -> 0 bytes .../cf9ac69b9795ce19_0 | Bin 795 -> 0 bytes .../d070bbde8c88abd3_0 | Bin 12398 -> 0 bytes .../d0b3549017e33c47_0 | Bin 769 -> 0 bytes .../d3a19edb12a88d34_0 | Bin 2823 -> 0 bytes .../d4fa9fb903c96d92_0 | Bin 769 -> 0 bytes .../d50ab87eabb90640_0 | Bin 766 -> 0 bytes .../d577667594e92b64_0 | Bin 778 -> 0 bytes .../d5b78e5ea8882938_0 | Bin 1170 -> 0 bytes .../d5eec4896e346682_0 | Bin 1027 -> 0 bytes .../d690f836d97cce6e_0 | Bin 2522 -> 0 bytes .../d73e8c92c395887b_0 | Bin 798 -> 0 bytes .../d7792e69c71d0e14_0 | Bin 9373 -> 0 bytes .../d7ecf8f72f904980_0 | Bin 800 -> 0 bytes .../d85c114ff6aae5c1_0 | Bin 1317 -> 0 bytes .../d92e984bb6b9ad3f_0 | Bin 782 -> 0 bytes .../db5c43018f4a6c06_0 | Bin 1158 -> 0 bytes .../dc2c51c50848cd06_0 | Bin 786 -> 0 bytes .../dd190ed1b2d42539_0 | Bin 1095 -> 0 bytes .../df9bba31f07b2dad_0 | Bin 1341 -> 0 bytes .../dfc12e7656e36032_0 | Bin 1119 -> 0 bytes .../e47bac881e000593_0 | Bin 4142 -> 0 bytes .../e61b842bd5087d39_0 | Bin 1048 -> 0 bytes .../e6800195e7abc532_0 | Bin 789 -> 0 bytes .../e765b5a72e123d47_0 | Bin 3234 -> 0 bytes .../e7923c7275f78e4b_0 | Bin 793 -> 0 bytes .../e8b657841ef5c2e0_0 | Bin 1196 -> 0 bytes .../ea066f3cf174ce77_0 | Bin 3759 -> 0 bytes .../eb693ad74ff2dbf6_0 | Bin 782 -> 0 bytes .../eb82738b5af68423_0 | Bin 809 -> 0 bytes .../eeaf0b05507ff81d_0 | Bin 1342 -> 0 bytes .../f19b290d38d0a932_0 | Bin 1500 -> 0 bytes .../f1f40d668edc875d_0 | Bin 784 -> 0 bytes .../f24cf282a9966cf1_0 | Bin 1106 -> 0 bytes .../f27f338bac1305f7_0 | Bin 798 -> 0 bytes .../f2b472eaa88aaf62_0 | Bin 1137 -> 0 bytes .../f47b53f55fa81242_0 | Bin 809 -> 0 bytes .../f5c619d43d285d68_0 | Bin 1033 -> 0 bytes .../f82f5adf8b0ed008_0 | Bin 1435 -> 0 bytes .../f89128014a67d1e4_0 | Bin 2506 -> 0 bytes .../f99333e8b7c429b7_0 | Bin 776 -> 0 bytes .../fbadd0b77df04db0_0 | Bin 778 -> 0 bytes .../fe40d0277e4cfcca_0 | Bin 779 -> 0 bytes .../fe7b6673ab44ee0c_0 | Bin 11209 -> 0 bytes .../ff224f44abbfe29a_0 | Bin 142537 -> 0 bytes .../79cc46bd-ec3b-49cc-84e7-ca0b4927c265/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 4656 -> 0 bytes .../0029f2d25a32abd2_0 | Bin 1139 -> 0 bytes .../002f08f275657b42_0 | Bin 2005 -> 0 bytes .../002f08f275657b42_1 | Bin 1630 -> 0 bytes .../0060f98a002bd41b_0 | Bin 1205 -> 0 bytes .../00bfc277edfa4aca_0 | Bin 11410 -> 0 bytes .../00fa58c1b46e4a3f_0 | Bin 608 -> 0 bytes .../0123e6fbcb8793d0_0 | Bin 583 -> 0 bytes .../01339410823c5ef1_0 | Bin 1470 -> 0 bytes .../013e0257c24b883c_0 | Bin 682 -> 0 bytes .../018931f401e5e2fc_0 | Bin 4120 -> 0 bytes .../018931f401e5e2fc_1 | Bin 3739 -> 0 bytes .../0190a5f2ba813975_0 | Bin 668 -> 0 bytes .../0200c1b5ff6b18f1_0 | Bin 759 -> 0 bytes .../0272e8cafda516b5_0 | Bin 576 -> 0 bytes .../028c0bb138cd246f_0 | Bin 1318 -> 0 bytes .../02a12436af2b00e6_0 | Bin 516 -> 0 bytes .../02ed6a31e1c0c930_0 | Bin 589 -> 0 bytes .../030dce102f89bbfb_0 | Bin 842 -> 0 bytes .../0352f5d2fe9df2e1_0 | Bin 529 -> 0 bytes .../036bb5b108b732b9_0 | Bin 895 -> 0 bytes .../03fca120d959cb82_0 | Bin 1746 -> 0 bytes .../03ffc940b2f92d23_0 | Bin 1494 -> 0 bytes .../03ffc940b2f92d23_1 | Bin 742 -> 0 bytes .../044600a727a9eaad_0 | Bin 624 -> 0 bytes .../04cb7676af8631a4_0 | Bin 626 -> 0 bytes .../05123e9d5ca4bb40_0 | Bin 1360 -> 0 bytes .../0547c35d653701bc_0 | Bin 881 -> 0 bytes .../05b2a682c531d21b_0 | Bin 824 -> 0 bytes .../05e6ab9f9f35cf4b_0 | Bin 6263 -> 0 bytes .../05e6ab9f9f35cf4b_1 | Bin 1645 -> 0 bytes .../060cd1f132138a54_0 | Bin 7885 -> 0 bytes .../060cd1f132138a54_1 | Bin 4316 -> 0 bytes .../061539260d58d2ca_0 | Bin 588 -> 0 bytes .../067633486eeab1ab_0 | Bin 1307 -> 0 bytes .../06dc1e2342f5188c_0 | Bin 3384 -> 0 bytes .../079b1ce0ffa49d99_0 | Bin 2727 -> 0 bytes .../08269b400d633386_0 | Bin 702 -> 0 bytes .../083a51b7139af6b6_0 | Bin 2569 -> 0 bytes .../083a51b7139af6b6_1 | Bin 2885 -> 0 bytes .../08ad48d638a934c5_0 | Bin 996 -> 0 bytes .../09b000fb3ad014ce_0 | Bin 1494 -> 0 bytes .../09b000fb3ad014ce_1 | Bin 1006 -> 0 bytes .../09cb3fd7d2f474de_0 | Bin 9125 -> 0 bytes .../09d6f31c68de0560_0 | Bin 573 -> 0 bytes .../09f894df8e4f26ec_0 | Bin 960 -> 0 bytes .../0a13c6b91d38f9a3_0 | Bin 2027 -> 0 bytes .../0a13c6b91d38f9a3_1 | Bin 3110 -> 0 bytes .../0ab392b26659de1b_0 | Bin 1612 -> 0 bytes .../0ae0eb2748d7cc9d_0 | Bin 1546 -> 0 bytes .../0b524744f7fb081a_0 | Bin 2803 -> 0 bytes .../0b524744f7fb081a_1 | Bin 1647 -> 0 bytes .../0b92d7aa3137a9d7_0 | Bin 869 -> 0 bytes .../0ba0102bdce0a7bd_0 | Bin 673 -> 0 bytes .../0c460ff2680b84be_0 | Bin 568 -> 0 bytes .../0c708723bd6fb49b_0 | Bin 2787 -> 0 bytes .../0c708723bd6fb49b_1 | Bin 2642 -> 0 bytes .../0c8142858c8a8cd6_0 | Bin 3618 -> 0 bytes .../0cafc0c761e2aa86_0 | Bin 940 -> 0 bytes .../0d2d2d097885f082_0 | Bin 1896 -> 0 bytes .../0d9a03656e34d0df_0 | Bin 1686 -> 0 bytes .../0dcdd33dd73bb2a5_0 | Bin 562 -> 0 bytes .../0dd278968560fe40_0 | Bin 646 -> 0 bytes .../0dff3d8b28599dea_0 | Bin 1108 -> 0 bytes .../0e691394da245915_0 | Bin 14059 -> 0 bytes .../0e691394da245915_1 | Bin 3176 -> 0 bytes .../0e9fcc4bf5209cb3_0 | Bin 1502 -> 0 bytes .../0e9fcc4bf5209cb3_1 | Bin 782 -> 0 bytes .../0eae9661bef1aec1_0 | Bin 2766 -> 0 bytes .../0f494170c89d6c68_0 | Bin 1265 -> 0 bytes .../0fe3bdbdeefbfeba_0 | Bin 799 -> 0 bytes .../10b0bcaf44441eb6_0 | Bin 580 -> 0 bytes .../10fa69ea87abb8e8_0 | Bin 2258 -> 0 bytes .../1103408f901a4630_0 | Bin 721 -> 0 bytes .../11d4267d4579a4cc_0 | Bin 23044 -> 0 bytes .../1335bc41a2ff5741_0 | Bin 749 -> 0 bytes .../13fab61b84493ab7_0 | Bin 3129 -> 0 bytes .../140de549ed0b11a6_0 | Bin 1454 -> 0 bytes .../149fc7f20f4249b6_0 | Bin 14117 -> 0 bytes .../149fc7f20f4249b6_1 | Bin 4678 -> 0 bytes .../16183a7a01cc5ae9_0 | Bin 2522 -> 0 bytes .../163d17361f599a4a_0 | Bin 738 -> 0 bytes .../16a6931310311f0b_0 | Bin 857 -> 0 bytes .../16ce655a2fb17f9d_0 | Bin 779 -> 0 bytes .../17216002a6f88b31_0 | Bin 743 -> 0 bytes .../17265df2fe87a1d0_0 | Bin 1034 -> 0 bytes .../1772d2edb20d0a5a_0 | Bin 3261 -> 0 bytes .../1772d2edb20d0a5a_1 | Bin 970 -> 0 bytes .../1786025e2308b5ff_0 | Bin 3291 -> 0 bytes .../17d74b8f97bc2876_0 | Bin 1140 -> 0 bytes .../18620f0cae546637_0 | Bin 4164 -> 0 bytes .../18c59afe2306594c_0 | Bin 1051 -> 0 bytes .../18e4757eeb070a4d_0 | Bin 4399 -> 0 bytes .../18eb19b8e9390b88_0 | Bin 1051 -> 0 bytes .../194fdbd0630cd2be_0 | Bin 636 -> 0 bytes .../1957b52a86294ed5_0 | Bin 1356 -> 0 bytes .../19da1491fe9e160c_0 | Bin 578 -> 0 bytes .../1aa1dbd18e49fbc3_0 | Bin 791 -> 0 bytes .../1aee571026244a25_0 | Bin 680 -> 0 bytes .../1b1127aeece6cde9_0 | Bin 597 -> 0 bytes .../1c1f0903174d921d_0 | Bin 2371 -> 0 bytes .../1c1f0903174d921d_1 | Bin 3772 -> 0 bytes .../1c251a94bb693aae_0 | Bin 2748 -> 0 bytes .../1c251a94bb693aae_1 | Bin 909 -> 0 bytes .../1c3fa28db0528c79_0 | Bin 12776 -> 0 bytes .../1c3fa28db0528c79_1 | Bin 8053 -> 0 bytes .../1c7ac1cbf051b90d_0 | Bin 4218 -> 0 bytes .../1d045de85ea81295_0 | Bin 5075 -> 0 bytes .../1d08ce0054bc5804_0 | Bin 3318 -> 0 bytes .../1d697042fd67c7c4_0 | Bin 643 -> 0 bytes .../1d9863f220fc0316_0 | Bin 922 -> 0 bytes .../1e1cac68e8f3b2a0_0 | Bin 727 -> 0 bytes .../1e5c6f69467d8e22_0 | Bin 586 -> 0 bytes .../1e7f5c08b8e4e380_0 | Bin 11964 -> 0 bytes .../1e994007c405cc00_0 | Bin 6156 -> 0 bytes .../1eb8fb93bda3177f_0 | Bin 4744 -> 0 bytes .../1ed246a826f4aafa_0 | Bin 8846 -> 0 bytes .../1ed609ce142ced2e_0 | Bin 8393 -> 0 bytes .../1f0ebace0b125963_0 | Bin 12386 -> 0 bytes .../1f0ebace0b125963_1 | Bin 1504 -> 0 bytes .../1f3a0298ba271c55_0 | Bin 18482 -> 0 bytes .../1f468e6d025b3a23_0 | Bin 6449 -> 0 bytes .../1f468e6d025b3a23_1 | Bin 1361 -> 0 bytes .../1f5fd83b5a400f00_0 | Bin 568 -> 0 bytes .../1ff8b4449b1b0b30_0 | Bin 4859 -> 0 bytes .../20c4958cd97d5229_0 | Bin 3924 -> 0 bytes .../2117a1853e3f2a48_0 | Bin 496 -> 0 bytes .../213bbaf68fef2863_0 | Bin 3919 -> 0 bytes .../214920e746c10d56_0 | Bin 1847 -> 0 bytes .../214920e746c10d56_1 | Bin 1441 -> 0 bytes .../218cde139e656e46_0 | Bin 1673 -> 0 bytes .../218cde139e656e46_1 | Bin 1718 -> 0 bytes .../21ea6092fc4bf3dd_0 | Bin 1822100 -> 0 bytes .../2229509e3c7389b0_0 | Bin 3813 -> 0 bytes .../223d93c86e069699_0 | Bin 2301 -> 0 bytes .../2326bf1acb02c4c9_0 | Bin 623 -> 0 bytes .../23704bd9e3ade0ef_0 | Bin 8417 -> 0 bytes .../23704bd9e3ade0ef_1 | Bin 4348 -> 0 bytes .../23c64c660a0a8fed_0 | Bin 4848 -> 0 bytes .../23c64c660a0a8fed_1 | Bin 1430 -> 0 bytes .../2412ef7c8fdd497c_0 | Bin 2196 -> 0 bytes .../252cedcfc269a8c6_0 | Bin 3715 -> 0 bytes .../255c1f570a9ac27f_0 | Bin 719 -> 0 bytes .../25d4654c18020a5f_0 | Bin 742 -> 0 bytes .../2642a301765867df_0 | Bin 9480 -> 0 bytes .../26a5fa2c779e8415_0 | Bin 692 -> 0 bytes .../26ce1c765f56c8db_0 | Bin 1052 -> 0 bytes .../26e8a59c8fcff3f0_0 | Bin 1312 -> 0 bytes .../26e97aea58c16df0_0 | Bin 48921 -> 0 bytes .../270a3b619e0b65d9_0 | Bin 502 -> 0 bytes .../27293f4cb3e5fb7b_0 | Bin 4342 -> 0 bytes .../27dfd07fdddb1709_0 | Bin 624 -> 0 bytes .../27f7367222e0da93_0 | Bin 2619 -> 0 bytes .../27f7367222e0da93_1 | Bin 733 -> 0 bytes .../2801bb1aedb09ace_0 | Bin 7528 -> 0 bytes .../287c729ce1ee8237_0 | Bin 605 -> 0 bytes .../28b81e937341619f_0 | Bin 682 -> 0 bytes .../296c80be20dea0a5_0 | Bin 5397 -> 0 bytes .../299df59e8be54456_0 | Bin 603 -> 0 bytes .../29aad51301923671_0 | Bin 8579 -> 0 bytes .../29aad51301923671_1 | Bin 4712 -> 0 bytes .../29b50be7d5337b1d_0 | Bin 651 -> 0 bytes .../29d87ddbfb35acf6_0 | Bin 743 -> 0 bytes .../2ac4d343560088f3_0 | Bin 861 -> 0 bytes .../2bcb750390e70bca_0 | Bin 690 -> 0 bytes .../2c4dab2b8ea118be_0 | Bin 556 -> 0 bytes .../2c53bf15dc7d382a_0 | Bin 1172 -> 0 bytes .../2c654035e96392f8_0 | Bin 753 -> 0 bytes .../2cd3da05b34a0731_0 | Bin 3721 -> 0 bytes .../2ced7c471d3a9946_0 | Bin 2234 -> 0 bytes .../2d774716df65c34a_0 | Bin 7495 -> 0 bytes .../2d774716df65c34a_1 | Bin 1132 -> 0 bytes .../2d9085399ce1a5ed_0 | Bin 1557 -> 0 bytes .../2d9085399ce1a5ed_1 | Bin 847 -> 0 bytes .../2e7ea4941198751f_0 | Bin 32143 -> 0 bytes .../2e7ea4941198751f_1 | Bin 9535 -> 0 bytes .../2f01738de10e6772_0 | Bin 3005 -> 0 bytes .../2f01738de10e6772_1 | Bin 3368 -> 0 bytes .../2f0b8132c4bea2d5_0 | Bin 721 -> 0 bytes .../2f36fea9267ddd83_0 | Bin 2032 -> 0 bytes .../2f36fea9267ddd83_1 | Bin 972 -> 0 bytes .../309fa92a4c877c18_0 | Bin 946 -> 0 bytes .../30defcbb2bb6aa1a_0 | Bin 541 -> 0 bytes .../30ec39545b49aa54_0 | Bin 7396 -> 0 bytes .../30f19ca12e91f02e_0 | Bin 5427 -> 0 bytes .../31ef5bfbc2973709_0 | Bin 632 -> 0 bytes .../31fa29da9e851988_0 | Bin 1885 -> 0 bytes .../3205bb7c7de7440e_0 | Bin 4129 -> 0 bytes .../327888b40b67cc95_0 | Bin 1493 -> 0 bytes .../327888b40b67cc95_1 | Bin 815 -> 0 bytes .../328ff6eb2a5d587d_0 | Bin 914 -> 0 bytes .../32a84721a1d1bbcd_0 | Bin 9404 -> 0 bytes .../32a84721a1d1bbcd_1 | Bin 2686 -> 0 bytes .../32db6c56ea3cab09_0 | Bin 1543 -> 0 bytes .../32db6c56ea3cab09_1 | Bin 604 -> 0 bytes .../32e2c4b5c8de7abc_0 | Bin 1093 -> 0 bytes .../33015423ba7c63d2_0 | Bin 568 -> 0 bytes .../332cda7d6f4a42b9_0 | Bin 1709 -> 0 bytes .../3440ac044f1e5236_0 | Bin 720 -> 0 bytes .../346c38803b756847_0 | Bin 1768 -> 0 bytes .../34a00ae2cb52aaa2_0 | Bin 8806 -> 0 bytes .../34a00ae2cb52aaa2_1 | Bin 3243 -> 0 bytes .../34a5891628d242a3_0 | Bin 556 -> 0 bytes .../35109e92146d357c_0 | Bin 1198 -> 0 bytes .../35165c2f6e8cc8c4_0 | Bin 703 -> 0 bytes .../351e690514b3f9f9_0 | Bin 3192 -> 0 bytes .../3520a085242b09d4_0 | Bin 966 -> 0 bytes .../359de2112885354f_0 | Bin 2310 -> 0 bytes .../35d8f8ef9ddf1a49_0 | Bin 2288 -> 0 bytes .../35d8f8ef9ddf1a49_1 | Bin 1852 -> 0 bytes .../35ed223cbb44bb43_0 | Bin 993 -> 0 bytes .../3601fc5e4ed5eae7_0 | Bin 1462 -> 0 bytes .../3601fc5e4ed5eae7_1 | Bin 1629 -> 0 bytes .../368f830949aa58eb_0 | Bin 3230 -> 0 bytes .../368f830949aa58eb_1 | Bin 1572 -> 0 bytes .../36be1a8943e9ce00_0 | Bin 605 -> 0 bytes .../36cbc364191c11b8_0 | Bin 641 -> 0 bytes .../36d751db5dcff1d4_0 | Bin 11028 -> 0 bytes .../3729fa0efaba8337_0 | Bin 561 -> 0 bytes .../37a2e3af74472b10_0 | Bin 1204 -> 0 bytes .../37ac4620a94296fc_0 | Bin 6860 -> 0 bytes .../37d5b7fdee7b3957_0 | Bin 5128 -> 0 bytes .../37fba6cce54ae226_0 | Bin 3380 -> 0 bytes .../383741e63b3c3fcf_0 | Bin 581 -> 0 bytes .../38d6cb3d1fd3e617_0 | Bin 5262 -> 0 bytes .../38d6cb3d1fd3e617_1 | Bin 2099 -> 0 bytes .../38e76d0bd76a6156_0 | Bin 670 -> 0 bytes .../39284b91d360f619_0 | Bin 681 -> 0 bytes .../3968e94bb1142bd1_0 | Bin 3016 -> 0 bytes .../3968e94bb1142bd1_1 | Bin 1228 -> 0 bytes .../39e55388dd2cd8ce_0 | Bin 917 -> 0 bytes .../39f29f70914b766a_0 | Bin 7235 -> 0 bytes .../3a36b62cb22790ee_0 | Bin 1181 -> 0 bytes .../3a375421f5b86832_0 | Bin 2871 -> 0 bytes .../3ac437491273e126_0 | Bin 826 -> 0 bytes .../3ae44b1bd13dea04_0 | Bin 8268 -> 0 bytes .../3ae44b1bd13dea04_1 | Bin 2763 -> 0 bytes .../3b4076ed28bf3ff9_0 | Bin 2026 -> 0 bytes .../3b7912069836d716_0 | Bin 561 -> 0 bytes .../3bd551ff103c88f9_0 | Bin 787 -> 0 bytes .../3bfeb15cbdef351a_0 | Bin 422 -> 0 bytes .../3c73470c8c7f7540_0 | Bin 8114 -> 0 bytes .../3cc701eb0bb46d8a_0 | Bin 2988 -> 0 bytes .../3cd4d1aba768e9a3_0 | Bin 4152 -> 0 bytes .../3d8db76e54542eb6_0 | Bin 626 -> 0 bytes .../3e8ca313dcb4c07c_0 | Bin 3158 -> 0 bytes .../3e8ca313dcb4c07c_1 | Bin 1530 -> 0 bytes .../3f0c43b19fefd04e_0 | Bin 919 -> 0 bytes .../3f8fec17670984bc_0 | Bin 861 -> 0 bytes .../40379f8a76ee5e7e_0 | Bin 623 -> 0 bytes .../40835d6c70a3caf3_0 | Bin 596 -> 0 bytes .../423c6a390bd3a2bf_0 | Bin 1852 -> 0 bytes .../423c6a390bd3a2bf_1 | Bin 940 -> 0 bytes .../42d7834e47109bf2_0 | Bin 1760 -> 0 bytes .../42d7834e47109bf2_1 | Bin 831 -> 0 bytes .../42ed82c5d02ee71e_0 | Bin 871 -> 0 bytes .../430186e3ae37db9f_0 | Bin 2235 -> 0 bytes .../430186e3ae37db9f_1 | Bin 1173 -> 0 bytes .../433ea32573445487_0 | Bin 7186 -> 0 bytes .../4398cc970337c9ad_0 | Bin 791 -> 0 bytes .../43ef5d7cd2c866c1_0 | Bin 665 -> 0 bytes .../441c19ea6513a67b_0 | Bin 2354 -> 0 bytes .../441dbcf906d5a240_0 | Bin 14178 -> 0 bytes .../441dbcf906d5a240_1 | Bin 9368 -> 0 bytes .../44262c51d3d12e24_0 | Bin 565 -> 0 bytes .../442ea9873de73825_0 | Bin 8396 -> 0 bytes .../442ea9873de73825_1 | Bin 3024 -> 0 bytes .../446bf7a0b1addcee_0 | Bin 1924 -> 0 bytes .../446bf7a0b1addcee_1 | Bin 1769 -> 0 bytes .../44fe6e5da27e61a9_0 | Bin 523 -> 0 bytes .../45106d1b736a68de_0 | Bin 637 -> 0 bytes .../4543164c1801b580_0 | Bin 3511 -> 0 bytes .../45708144a6589cd8_0 | Bin 1639 -> 0 bytes .../45cc1d6a521e450c_0 | Bin 4597 -> 0 bytes .../45decc49c21c7c0d_0 | Bin 507 -> 0 bytes .../45ef9b37931d8030_0 | Bin 14790 -> 0 bytes .../45ef9b37931d8030_1 | Bin 3690 -> 0 bytes .../46daff1a02f68a93_0 | Bin 1038 -> 0 bytes .../477ff50f7da93a5e_0 | Bin 645 -> 0 bytes .../479fb9e5a39b1284_0 | Bin 738 -> 0 bytes .../483d75c6d14950fd_0 | Bin 707 -> 0 bytes .../48783723bd618fbe_0 | Bin 878 -> 0 bytes .../48a4020f6b284e62_0 | Bin 2526 -> 0 bytes .../4930349ac5bdaf95_0 | Bin 2195 -> 0 bytes .../4957ba728b0ac39e_0 | Bin 719 -> 0 bytes .../4958efe9b332199c_0 | Bin 3867 -> 0 bytes .../49688aceaaefb3df_0 | Bin 620 -> 0 bytes .../4a8ad21154d46fbb_0 | Bin 615 -> 0 bytes .../4aa2d86b26a106a0_0 | Bin 623 -> 0 bytes .../4ad58c86c2e48186_0 | Bin 596 -> 0 bytes .../4bc352ec78088335_0 | Bin 595 -> 0 bytes .../4c4ada0c551d767a_0 | Bin 4862 -> 0 bytes .../4c4ada0c551d767a_1 | Bin 2562 -> 0 bytes .../4c5c6bd7a9741ebd_0 | Bin 631 -> 0 bytes .../4c76c7a80ba540eb_0 | Bin 9293 -> 0 bytes .../4c76c7a80ba540eb_1 | Bin 4142 -> 0 bytes .../4d137094407c24a0_0 | Bin 757 -> 0 bytes .../4df4ea25148b7b8e_0 | Bin 738 -> 0 bytes .../4df88a55ff5250bc_0 | Bin 587 -> 0 bytes .../4dfeccea386878c4_0 | Bin 754 -> 0 bytes .../4ea940e7f43148c7_0 | Bin 721 -> 0 bytes .../4eda6d38ed73d9d1_0 | Bin 838 -> 0 bytes .../4f0ce9a8c9e2930b_0 | Bin 11150 -> 0 bytes .../4f0ce9a8c9e2930b_1 | Bin 4403 -> 0 bytes .../4f749a73f475f6d5_0 | Bin 553 -> 0 bytes .../4fb0c0644e3bf4d0_0 | Bin 1431 -> 0 bytes .../4ff28143e0cd3056_0 | Bin 1210 -> 0 bytes .../50346c50993be916_0 | Bin 725 -> 0 bytes .../50a1b2693e9d288c_0 | Bin 4202 -> 0 bytes .../50af2e27d9533067_0 | Bin 1556 -> 0 bytes .../50af2e27d9533067_1 | Bin 1013 -> 0 bytes .../50bd74e43006d7a4_0 | Bin 7489 -> 0 bytes .../50db13ff9f8667ab_0 | Bin 14078 -> 0 bytes .../50eac6dd39abc46f_0 | Bin 2953 -> 0 bytes .../511546c9988cc4fe_0 | Bin 1682 -> 0 bytes .../511546c9988cc4fe_1 | Bin 941 -> 0 bytes .../51293e64f4e52df5_0 | Bin 7939 -> 0 bytes .../513798a24a123cc0_0 | Bin 2308 -> 0 bytes .../513798a24a123cc0_1 | Bin 1110 -> 0 bytes .../51b8b055cd711c5f_0 | Bin 3488 -> 0 bytes .../52263b053b1db3da_0 | Bin 611 -> 0 bytes .../523c3e245e4f70e7_0 | Bin 11744 -> 0 bytes .../523c3e245e4f70e7_1 | Bin 1960 -> 0 bytes .../5294478d0a0367f3_0 | Bin 5693 -> 0 bytes .../5294478d0a0367f3_1 | Bin 1132 -> 0 bytes .../530a4540ff95fd2b_0 | Bin 5296 -> 0 bytes .../530a4540ff95fd2b_1 | Bin 2110 -> 0 bytes .../5352d092b301e582_0 | Bin 1594 -> 0 bytes .../5352d092b301e582_1 | Bin 2330 -> 0 bytes .../53d2718175b5aa2f_0 | Bin 1888 -> 0 bytes .../53dcc8c2cdc22d84_0 | Bin 1844 -> 0 bytes .../54c82ca00a765499_0 | Bin 1827 -> 0 bytes .../550a151211aa8f30_0 | Bin 5456 -> 0 bytes .../558dcf1ca073b89b_0 | Bin 2141 -> 0 bytes .../559d85e976248450_0 | Bin 1784 -> 0 bytes .../56817d23267114b4_0 | Bin 753 -> 0 bytes .../5681a580a4199e26_0 | Bin 499 -> 0 bytes .../56ba56576f463004_0 | Bin 623 -> 0 bytes .../56ef9bf95d4188cd_0 | Bin 7718 -> 0 bytes .../5753937e31914f96_0 | Bin 832 -> 0 bytes .../578286609c84b497_0 | Bin 6355 -> 0 bytes .../578286609c84b497_1 | Bin 1963 -> 0 bytes .../58a87ecb873c3675_0 | Bin 1460 -> 0 bytes .../593d430f03719714_0 | Bin 3041 -> 0 bytes .../593d430f03719714_1 | Bin 2704 -> 0 bytes .../594387e4de1e5c1e_0 | Bin 617 -> 0 bytes .../59ac1d5195bb3577_0 | Bin 604 -> 0 bytes .../5a21aad954e0afae_0 | Bin 5885 -> 0 bytes .../5b72246585668d70_0 | Bin 3511 -> 0 bytes .../5bf99169d8879d37_0 | Bin 495 -> 0 bytes .../5cc8d7e7d0dd1720_0 | Bin 599 -> 0 bytes .../5cee58eb648aa5c8_0 | Bin 637 -> 0 bytes .../5d09415e3243f24e_0 | Bin 1982 -> 0 bytes .../5d09415e3243f24e_1 | Bin 1236 -> 0 bytes .../5d16a9b9cda9567a_0 | Bin 4951 -> 0 bytes .../5f88581bdada8542_0 | Bin 6254 -> 0 bytes .../5f88581bdada8542_1 | Bin 3128 -> 0 bytes .../5fd5b294855d7cda_0 | Bin 1077 -> 0 bytes .../6064b216d87f43d9_0 | Bin 70102 -> 0 bytes .../6064b216d87f43d9_1 | Bin 19084 -> 0 bytes .../608952a8032e1ec1_0 | Bin 555 -> 0 bytes .../60dfc55d1cb18e8d_0 | Bin 671 -> 0 bytes .../6103be495c9f0fbc_0 | Bin 2062 -> 0 bytes .../61567a85339bb980_0 | Bin 2660 -> 0 bytes .../61567a85339bb980_1 | Bin 1994 -> 0 bytes .../61d28c54d0ec7235_0 | Bin 2702 -> 0 bytes .../61d28c54d0ec7235_1 | Bin 827 -> 0 bytes .../622bbe9538001149_0 | Bin 2163 -> 0 bytes .../622c3eb7c328ffa7_0 | Bin 1336 -> 0 bytes .../62530ba030521b41_0 | Bin 1228 -> 0 bytes .../6257246058c5daca_0 | Bin 2216 -> 0 bytes .../6257246058c5daca_1 | Bin 1037 -> 0 bytes .../630e1ef315d4eae4_0 | Bin 1117 -> 0 bytes .../6369cd0c4f4efa54_0 | Bin 701 -> 0 bytes .../638d2c465a2107ff_0 | Bin 10327 -> 0 bytes .../638d2c465a2107ff_1 | Bin 2967 -> 0 bytes .../63928f50535c43cb_0 | Bin 801 -> 0 bytes .../63c5894ef2b17e65_0 | Bin 3303 -> 0 bytes .../63c5894ef2b17e65_1 | Bin 1573 -> 0 bytes .../63f45554a75111e1_0 | Bin 1056 -> 0 bytes .../65fb2e1e36f904d4_0 | Bin 872 -> 0 bytes .../66fa204a4a3af845_0 | Bin 1398 -> 0 bytes .../6748bd2791a82ace_0 | Bin 681 -> 0 bytes .../6779c8cf5996acd2_0 | Bin 679 -> 0 bytes .../67a270c93ddf5110_0 | Bin 17803 -> 0 bytes .../687aacc61a31345e_0 | Bin 1525 -> 0 bytes .../687aacc61a31345e_1 | Bin 981 -> 0 bytes .../689713d3d9f1f849_0 | Bin 4353 -> 0 bytes .../689713d3d9f1f849_1 | Bin 2260 -> 0 bytes .../690b42100d768bd9_0 | Bin 2300 -> 0 bytes .../6933f8d6a19d88d2_0 | Bin 832 -> 0 bytes .../693ce182b99514f7_0 | Bin 669 -> 0 bytes .../69833ebf814237d4_0 | Bin 1431 -> 0 bytes .../69c6c36317e440b8_0 | Bin 595 -> 0 bytes .../6a2c1946aea9644f_0 | Bin 953 -> 0 bytes .../6a510fbb89996a66_0 | Bin 941 -> 0 bytes .../6b2fdd0fbd3bbfc7_0 | Bin 1280 -> 0 bytes .../6b5d77b1fc19ca67_0 | Bin 9405 -> 0 bytes .../6b85f2e2f2700469_0 | Bin 7122 -> 0 bytes .../6b85f2e2f2700469_1 | Bin 1120 -> 0 bytes .../6c1a923c3f5e4386_0 | Bin 3042 -> 0 bytes .../6c9b68f7a5653067_0 | Bin 4777 -> 0 bytes .../6c9b68f7a5653067_1 | Bin 4349 -> 0 bytes .../6cef2d941e597d5b_0 | Bin 8723 -> 0 bytes .../6d0b16cdfeafa1c5_0 | Bin 6867 -> 0 bytes .../6d0b16cdfeafa1c5_1 | Bin 1012 -> 0 bytes .../6d35bcaf282781c8_0 | Bin 626 -> 0 bytes .../6d501ac5aff10014_0 | Bin 1582 -> 0 bytes .../6d501ac5aff10014_1 | Bin 1534 -> 0 bytes .../6dc9be6ef6e95267_0 | Bin 3310 -> 0 bytes .../6dd07335af55eab8_0 | Bin 578 -> 0 bytes .../6e7215e4cdc435e9_0 | Bin 859 -> 0 bytes .../6ef2a81e16c38afb_0 | Bin 776 -> 0 bytes .../6f4334a34f4742a1_0 | Bin 20222 -> 0 bytes .../6f4334a34f4742a1_1 | Bin 5462 -> 0 bytes .../6f735d18a1a7b74c_0 | Bin 530 -> 0 bytes .../6f8154c008242b03_0 | Bin 830 -> 0 bytes .../6fdcd334ac038785_0 | Bin 16047 -> 0 bytes .../709ada9ae5fb541a_0 | Bin 611 -> 0 bytes .../70a104efec749d67_0 | Bin 625 -> 0 bytes .../70cb160a1daf5cca_0 | Bin 539 -> 0 bytes .../70e39730015bd97e_0 | Bin 1056 -> 0 bytes .../710a0d8f4af3c06b_0 | Bin 3115 -> 0 bytes .../710f3bf109e786c2_0 | Bin 1350 -> 0 bytes .../71535f26b12fd340_0 | Bin 715 -> 0 bytes .../724abf01c0317399_0 | Bin 570 -> 0 bytes .../7276d2f32074745c_0 | Bin 2358 -> 0 bytes .../7276d2f32074745c_1 | Bin 973 -> 0 bytes .../72f182534350f588_0 | Bin 738 -> 0 bytes .../7366ddd9f0884914_0 | Bin 644 -> 0 bytes .../7367c5cb771233a8_0 | Bin 741 -> 0 bytes .../7377f1fde208cacb_0 | Bin 7797 -> 0 bytes .../73a3e5feeaa5011c_0 | Bin 2277 -> 0 bytes .../73a3e5feeaa5011c_1 | Bin 1080 -> 0 bytes .../73bb0f71f3489db6_0 | Bin 12340 -> 0 bytes .../73e4875ff7bd7187_0 | Bin 2531 -> 0 bytes .../73e4875ff7bd7187_1 | Bin 2690 -> 0 bytes .../73f43bddd46e592a_0 | Bin 1508 -> 0 bytes .../73f43bddd46e592a_1 | Bin 1043 -> 0 bytes .../74ae0f61809ac93d_0 | Bin 1170 -> 0 bytes .../74ec99204c680827_0 | Bin 30758 -> 0 bytes .../75477707732d500a_0 | Bin 1507 -> 0 bytes .../75477707732d500a_1 | Bin 1953 -> 0 bytes .../75a6730445717086_0 | Bin 745 -> 0 bytes .../75bf7056994f5803_0 | Bin 820 -> 0 bytes .../761a19a7074ebbb0_0 | Bin 1094 -> 0 bytes .../7673b54be5292216_0 | Bin 7487 -> 0 bytes .../7673b54be5292216_1 | Bin 7226 -> 0 bytes .../771dd3b94603084a_0 | Bin 556 -> 0 bytes .../775f84da77276e29_0 | Bin 1926 -> 0 bytes .../775f84da77276e29_1 | Bin 1431 -> 0 bytes .../77c4eaee97194d59_0 | Bin 742 -> 0 bytes .../7861b8ce232c1a4d_0 | Bin 1002 -> 0 bytes .../791d3989e0f391b9_0 | Bin 4082 -> 0 bytes .../791d3989e0f391b9_1 | Bin 1584 -> 0 bytes .../79245308382c592d_0 | Bin 738 -> 0 bytes .../793e9860b573049c_0 | Bin 702 -> 0 bytes .../79a70a9339047192_0 | Bin 814 -> 0 bytes .../79b77c552a5424c6_0 | Bin 601 -> 0 bytes .../79bb30391c135ba7_0 | Bin 931 -> 0 bytes .../7a23f72341f3cffc_0 | Bin 1383 -> 0 bytes .../7a50acac93fa5ec2_0 | Bin 871 -> 0 bytes .../7a71361415c9bcd6_0 | Bin 7420 -> 0 bytes .../7a81bba7c04b569f_0 | Bin 591 -> 0 bytes .../7a991df0b1ae8f88_0 | Bin 679 -> 0 bytes .../7ae4aa9b72af7540_0 | Bin 1933 -> 0 bytes .../7ae4aa9b72af7540_1 | Bin 1216 -> 0 bytes .../7afd228e4121c55a_0 | Bin 1203 -> 0 bytes .../7b4b87d57d64f35c_0 | Bin 4686 -> 0 bytes .../7b4b87d57d64f35c_1 | Bin 3275 -> 0 bytes .../7b8d42b73cc6ae75_0 | Bin 484 -> 0 bytes .../7c0fc7e80bba5d20_0 | Bin 1936 -> 0 bytes .../7c0fc7e80bba5d20_1 | Bin 867 -> 0 bytes .../7cdfe013ff471e52_0 | Bin 1349 -> 0 bytes .../7dcac4522efbc8df_0 | Bin 538 -> 0 bytes .../7f32da8e30756b40_0 | Bin 619 -> 0 bytes .../7f4c1222dd5bf418_0 | Bin 4816 -> 0 bytes .../7f4c1222dd5bf418_1 | Bin 1729 -> 0 bytes .../7f4ed7f823ce75ba_0 | Bin 870 -> 0 bytes .../7fcd4916b14c515e_0 | Bin 799 -> 0 bytes .../7fd4d46ed6626f0b_0 | Bin 621 -> 0 bytes .../80a3f1dbb26dbfa1_0 | Bin 5948 -> 0 bytes .../820af54f7c5c23bf_0 | Bin 1074 -> 0 bytes .../829d6242931f2eb7_0 | Bin 654 -> 0 bytes .../8328b9dbba6b8fd9_0 | Bin 1312 -> 0 bytes .../83d8d0cef30499b4_0 | Bin 1139 -> 0 bytes .../84b4412ac28f79b0_0 | Bin 3058 -> 0 bytes .../84b4412ac28f79b0_1 | Bin 1540 -> 0 bytes .../84d7d25fb68bda01_0 | Bin 668 -> 0 bytes .../8580d4386b63cd1f_0 | Bin 627 -> 0 bytes .../85b23a16455bb50b_0 | Bin 876 -> 0 bytes .../85c46a97e0c7ca2f_0 | Bin 766 -> 0 bytes .../85ecf4d706b189a5_0 | Bin 726 -> 0 bytes .../867d404186e3cdbc_0 | Bin 708 -> 0 bytes .../86b5a45586e1e558_0 | Bin 967 -> 0 bytes .../86c90a3f346c51e2_0 | Bin 630 -> 0 bytes .../86f0e7a22ce97aab_0 | Bin 584 -> 0 bytes .../86f5389c6d8dcc17_0 | Bin 611 -> 0 bytes .../871adb95c81e1bb0_0 | Bin 696 -> 0 bytes .../8783f0e436853ee1_0 | Bin 6515 -> 0 bytes .../87948b1fbd98a139_0 | Bin 2929 -> 0 bytes .../87948b1fbd98a139_1 | Bin 751 -> 0 bytes .../87bc1fb8309724cb_0 | Bin 5549 -> 0 bytes .../87bc1fb8309724cb_1 | Bin 4539 -> 0 bytes .../881b14ed98c84387_0 | Bin 1103 -> 0 bytes .../8880cb1bd2411da9_0 | Bin 2770 -> 0 bytes .../88bb7aa99d5707e4_0 | Bin 666 -> 0 bytes .../8922ad6d8340114f_0 | Bin 4625 -> 0 bytes .../8922ad6d8340114f_1 | Bin 2955 -> 0 bytes .../89320be43f8b181b_0 | Bin 2679 -> 0 bytes .../89320be43f8b181b_1 | Bin 2872 -> 0 bytes .../896d0606f6f178f8_0 | Bin 613 -> 0 bytes .../89e36aa18eb949b0_0 | Bin 575 -> 0 bytes .../8a1311725ca33b2c_0 | Bin 5570 -> 0 bytes .../8a1311725ca33b2c_1 | Bin 4901 -> 0 bytes .../8a1dd71e45d70bec_0 | Bin 5481 -> 0 bytes .../8a5cb8368faaa817_0 | Bin 1426 -> 0 bytes .../8a67f25f0fe360d9_0 | Bin 743 -> 0 bytes .../8a7946ca343b182e_0 | Bin 3028 -> 0 bytes .../8adb8163cc75e963_0 | Bin 4977 -> 0 bytes .../8af0f5b7ff0e341a_0 | Bin 6522 -> 0 bytes .../8af0f5b7ff0e341a_1 | Bin 3834 -> 0 bytes .../8af60c358551eda6_0 | Bin 5318 -> 0 bytes .../8af60c358551eda6_1 | Bin 3209 -> 0 bytes .../8b6c53e4cf5916cd_0 | Bin 8349 -> 0 bytes .../8bf87ef5f2ada06f_0 | Bin 617 -> 0 bytes .../8c4d4b74b5fa40b8_0 | Bin 1921 -> 0 bytes .../8c4d4b74b5fa40b8_1 | Bin 1034 -> 0 bytes .../8c9249c4bc51caf4_0 | Bin 8393 -> 0 bytes .../8c9249c4bc51caf4_1 | Bin 6038 -> 0 bytes .../8dec7321af0f005d_0 | Bin 1995 -> 0 bytes .../8dec7321af0f005d_1 | Bin 2597 -> 0 bytes .../8e0e054a2a9dd2f2_0 | Bin 603 -> 0 bytes .../8e38e066d7953e27_0 | Bin 1325 -> 0 bytes .../8e962ea0a8d230c8_0 | Bin 588 -> 0 bytes .../8f31b5ae5902a058_0 | Bin 6184 -> 0 bytes .../8f31b5ae5902a058_1 | Bin 2227 -> 0 bytes .../8f55e19132053fb6_0 | Bin 1560 -> 0 bytes .../8f55e19132053fb6_1 | Bin 742 -> 0 bytes .../8f583e357cd7515f_0 | Bin 5040 -> 0 bytes .../8f583e357cd7515f_1 | Bin 1514 -> 0 bytes .../8f59bf79f2f5103f_0 | Bin 16137 -> 0 bytes .../8f59bf79f2f5103f_1 | Bin 6564 -> 0 bytes .../9061de6d910b03ce_0 | Bin 2707 -> 0 bytes .../90aca6c18f295dc4_0 | Bin 858 -> 0 bytes .../913c2b2f48f581c0_0 | Bin 1607 -> 0 bytes .../913c2b2f48f581c0_1 | Bin 1551 -> 0 bytes .../91410ce43700f7e9_0 | Bin 702 -> 0 bytes .../9159c7a5e4f0025e_0 | Bin 1228 -> 0 bytes .../9224c749c21fa128_0 | Bin 924 -> 0 bytes .../929187cccab5c250_0 | Bin 2704 -> 0 bytes .../929187cccab5c250_1 | Bin 2631 -> 0 bytes .../92bb10d4094904d9_0 | Bin 665 -> 0 bytes .../92c7dc0c7ce5c239_0 | Bin 738 -> 0 bytes .../9346b5f75f69dc72_0 | Bin 1700 -> 0 bytes .../9346b5f75f69dc72_1 | Bin 1849 -> 0 bytes .../935666e2b0d4bca2_0 | Bin 3118 -> 0 bytes .../935666e2b0d4bca2_1 | Bin 1161 -> 0 bytes .../935693ca843c6796_0 | Bin 14134 -> 0 bytes .../935693ca843c6796_1 | Bin 8259 -> 0 bytes .../9368859968915a05_0 | Bin 6491 -> 0 bytes .../939235324800599f_0 | Bin 692 -> 0 bytes .../941e8ff6e6cc956f_0 | Bin 581 -> 0 bytes .../94261ee719cd51bc_0 | Bin 4419 -> 0 bytes .../94261ee719cd51bc_1 | Bin 5026 -> 0 bytes .../943ab0ee2adc1def_0 | Bin 2016 -> 0 bytes .../943ab0ee2adc1def_1 | Bin 991 -> 0 bytes .../943d45722f6273e3_0 | Bin 4356 -> 0 bytes .../943d45722f6273e3_1 | Bin 6685 -> 0 bytes .../94b48dbed9bd9dcb_0 | Bin 1576 -> 0 bytes .../94bd25466474a148_0 | Bin 113545 -> 0 bytes .../9526b4eb4acd0495_0 | Bin 2672 -> 0 bytes .../9526b4eb4acd0495_1 | Bin 837 -> 0 bytes .../953ff05c6941df33_0 | Bin 4920 -> 0 bytes .../953ff05c6941df33_1 | Bin 3459 -> 0 bytes .../9543ecdd789d55a6_0 | Bin 2208 -> 0 bytes .../9543ecdd789d55a6_1 | Bin 1802 -> 0 bytes .../956aece011f4da22_0 | Bin 1695 -> 0 bytes .../956aece011f4da22_1 | Bin 2932 -> 0 bytes .../96b955ea2d155f3c_0 | Bin 541 -> 0 bytes .../96f31da99cc3e139_0 | Bin 707 -> 0 bytes .../9705713437c8bec9_0 | Bin 498 -> 0 bytes .../973345a0d41b9059_0 | Bin 2713 -> 0 bytes .../973345a0d41b9059_1 | Bin 2241 -> 0 bytes .../98ad008e1a1367da_0 | Bin 2168 -> 0 bytes .../98af4b8b6c524c38_0 | Bin 3685 -> 0 bytes .../98ec2f4e90ab1724_0 | Bin 661 -> 0 bytes .../98f1d6e4d1bf290c_0 | Bin 1813 -> 0 bytes .../98f1d6e4d1bf290c_1 | Bin 2048 -> 0 bytes .../991a6243628a1f15_0 | Bin 2048 -> 0 bytes .../9b030d0903524b0d_0 | Bin 802 -> 0 bytes .../9b409985cf9f40a5_0 | Bin 13940 -> 0 bytes .../9b409985cf9f40a5_1 | Bin 7362 -> 0 bytes .../9b41e595d8f8cefd_0 | Bin 22062 -> 0 bytes .../9b41e595d8f8cefd_1 | Bin 8795 -> 0 bytes .../9bdac4054f84355d_0 | Bin 711 -> 0 bytes .../9bebf014733b6009_0 | Bin 592 -> 0 bytes .../9c07b2a4783f7e98_0 | Bin 1208 -> 0 bytes .../9c18e98be1dd3353_0 | Bin 15372 -> 0 bytes .../9c2e64b2b71eed0e_0 | Bin 712 -> 0 bytes .../9c3ffbe79bd659f2_0 | Bin 653 -> 0 bytes .../9c6dd37c9de07c66_0 | Bin 6342 -> 0 bytes .../9c7e485fc0790948_0 | Bin 723 -> 0 bytes .../9d2bd8a83fee54dd_0 | Bin 3976 -> 0 bytes .../9d2bd8a83fee54dd_1 | Bin 4285 -> 0 bytes .../9d48d368db8a60b7_0 | Bin 853 -> 0 bytes .../9dde186cc9f2e85b_0 | Bin 814 -> 0 bytes .../9ea3450d37ed2352_0 | Bin 613 -> 0 bytes .../9eb60986e4e80f25_0 | Bin 5381 -> 0 bytes .../9ec07980ffd73bf1_0 | Bin 940 -> 0 bytes .../9f19fe9fbffd2b56_0 | Bin 4723 -> 0 bytes .../9f25813bdf5d93b8_0 | Bin 1737 -> 0 bytes .../9f3cbe27363af30e_0 | Bin 690 -> 0 bytes .../9f9e2855b8b4febf_0 | Bin 617 -> 0 bytes .../9fa241803209717e_0 | Bin 761 -> 0 bytes .../9fda719601763512_0 | Bin 633 -> 0 bytes .../a0020d97813369fa_0 | Bin 779 -> 0 bytes .../a038abca13edc87c_0 | Bin 581 -> 0 bytes .../a067a8610006159e_0 | Bin 1577 -> 0 bytes .../a067a8610006159e_1 | Bin 775 -> 0 bytes .../a0e855153df1f749_0 | Bin 3766 -> 0 bytes .../a0e855153df1f749_1 | Bin 3178 -> 0 bytes .../a0f1d4f28d0d8aa1_0 | Bin 541 -> 0 bytes .../a0fdd0cfdce94779_0 | Bin 1181 -> 0 bytes .../a153e94113c0c8d2_0 | Bin 20526 -> 0 bytes .../a166d859c95a24ac_0 | Bin 9411 -> 0 bytes .../a166d859c95a24ac_1 | Bin 3919 -> 0 bytes .../a1b6144a8cf24525_0 | Bin 741 -> 0 bytes .../a2db43c631cb0b05_0 | Bin 1058 -> 0 bytes .../a315689f925e88d6_0 | Bin 988 -> 0 bytes .../a376e7d024f4e39b_0 | Bin 5685 -> 0 bytes .../a3835c8816906f37_0 | Bin 1230 -> 0 bytes .../a3d1eb323ba120f7_0 | Bin 2389 -> 0 bytes .../a3d1eb323ba120f7_1 | Bin 3737 -> 0 bytes .../a41b3f13da5b1794_0 | Bin 3801 -> 0 bytes .../a41b3f13da5b1794_1 | Bin 3247 -> 0 bytes .../a41b8d1b7e3dd822_0 | Bin 8433 -> 0 bytes .../a41b8d1b7e3dd822_1 | Bin 4377 -> 0 bytes .../a4695f565d1d0241_0 | Bin 1008 -> 0 bytes .../a4d791a955b8f30e_0 | Bin 3784 -> 0 bytes .../a4fc30740db061d8_0 | Bin 934 -> 0 bytes .../a504595e2b4816bf_0 | Bin 4907 -> 0 bytes .../a504595e2b4816bf_1 | Bin 3345 -> 0 bytes .../a508ea0795a19684_0 | Bin 3025 -> 0 bytes .../a508ea0795a19684_1 | Bin 3151 -> 0 bytes .../a50a6632b3ebf93e_0 | Bin 946 -> 0 bytes .../a5328da85f586a61_0 | Bin 2613 -> 0 bytes .../a55841be88ec35dd_0 | Bin 3112 -> 0 bytes .../a56a6ba8806120ea_0 | Bin 745 -> 0 bytes .../a681072f69b0ecaa_0 | Bin 2804 -> 0 bytes .../a681072f69b0ecaa_1 | Bin 4444 -> 0 bytes .../a6e4ad14bbe4ad8d_0 | Bin 3103 -> 0 bytes .../a7228b5f391c7a0f_0 | Bin 605 -> 0 bytes .../a77065b4ee3f4a5f_0 | Bin 2311 -> 0 bytes .../a7fe7b590ba1833f_0 | Bin 1955 -> 0 bytes .../a7fe7b590ba1833f_1 | Bin 809 -> 0 bytes .../a8b73624ae458f78_0 | Bin 1888 -> 0 bytes .../a8b73624ae458f78_1 | Bin 2243 -> 0 bytes .../a8cd86eb6ad69dde_0 | Bin 3165 -> 0 bytes .../a8cd86eb6ad69dde_1 | Bin 910 -> 0 bytes .../a8ce478e6ad84c5c_0 | Bin 928 -> 0 bytes .../a8e27f6e0e0df5b1_0 | Bin 571 -> 0 bytes .../a8e8236e18f6b0bd_0 | Bin 3180 -> 0 bytes .../a8e8236e18f6b0bd_1 | Bin 1593 -> 0 bytes .../a949dd1a80ad35c8_0 | Bin 643 -> 0 bytes .../aa4bcc41d254ec4a_0 | Bin 3336 -> 0 bytes .../aa655f56c98a9fb7_0 | Bin 851 -> 0 bytes .../aa772af924db6617_0 | Bin 708 -> 0 bytes .../aae5d5a899f78778_0 | Bin 10609 -> 0 bytes .../aae5d5a899f78778_1 | Bin 7370 -> 0 bytes .../ab16558c2535aa72_0 | Bin 2672 -> 0 bytes .../ab16558c2535aa72_1 | Bin 1112 -> 0 bytes .../ab1e2f76020a766a_0 | Bin 640 -> 0 bytes .../ab2bc633da052bb2_0 | Bin 989 -> 0 bytes .../ab5ca508cb16c84d_0 | Bin 7389 -> 0 bytes .../ab5ca508cb16c84d_1 | Bin 4068 -> 0 bytes .../ab6543335d83780a_0 | Bin 24773 -> 0 bytes .../ab6543335d83780a_1 | Bin 55810 -> 0 bytes .../ab708ee3acec9c95_0 | Bin 718 -> 0 bytes .../abad9c1308674449_0 | Bin 776 -> 0 bytes .../abd69387730cac5e_0 | Bin 870 -> 0 bytes .../ace3914ac249e337_0 | Bin 1002 -> 0 bytes .../ad238eecabb3bf9e_0 | Bin 2429 -> 0 bytes .../ad238eecabb3bf9e_1 | Bin 1057 -> 0 bytes .../ad4507d804dd9d6a_0 | Bin 6789 -> 0 bytes .../ad4507d804dd9d6a_1 | Bin 2316 -> 0 bytes .../ad71aedc7abf259d_0 | Bin 6949 -> 0 bytes .../ad71aedc7abf259d_1 | Bin 5573 -> 0 bytes .../ad8ee33bdd6932e5_0 | Bin 621 -> 0 bytes .../ae4c0910f21b0635_0 | Bin 5497 -> 0 bytes .../ae4e2426f4ff6183_0 | Bin 2377 -> 0 bytes .../ae4e2426f4ff6183_1 | Bin 1015 -> 0 bytes .../aeeb8cf5fb2a6de3_0 | Bin 1373 -> 0 bytes .../af86404fe46d3b28_0 | Bin 6868 -> 0 bytes .../af86404fe46d3b28_1 | Bin 2307 -> 0 bytes .../afada5d77309b0f7_0 | Bin 848 -> 0 bytes .../b08ad2c2ca8c7c22_0 | Bin 905 -> 0 bytes .../b093cea241af3a23_0 | Bin 641 -> 0 bytes .../b09c1c29efe07bef_0 | Bin 595 -> 0 bytes .../b0d9d01c8e9ea336_0 | Bin 573 -> 0 bytes .../b14b6bfce58d986e_0 | Bin 4836 -> 0 bytes .../b1c1b8d2a7fe4624_0 | Bin 629 -> 0 bytes .../b2175ae8b2676b59_0 | Bin 4316 -> 0 bytes .../b28ad861f89acf5d_0 | Bin 6020 -> 0 bytes .../b2928123f79d79a9_0 | Bin 1245 -> 0 bytes .../b2a7e28c77d9921e_0 | Bin 1273 -> 0 bytes .../b2c0372f4f8ccbe3_0 | Bin 708 -> 0 bytes .../b31e9ea1a7f93e08_0 | Bin 712 -> 0 bytes .../b371c8e190a1c497_0 | Bin 601 -> 0 bytes .../b39534f082d77d4d_0 | Bin 510 -> 0 bytes .../b3ed5a76dbb503ff_0 | Bin 739 -> 0 bytes .../b3ffdaf2a35c0288_0 | Bin 3413 -> 0 bytes .../b3ffdaf2a35c0288_1 | Bin 3425 -> 0 bytes .../b41b26d417e9cbe8_0 | Bin 3031 -> 0 bytes .../b44d93c6d7dfc00b_0 | Bin 1547 -> 0 bytes .../b4707dd484d20875_0 | Bin 1304 -> 0 bytes .../b49966835b1c1d10_0 | Bin 3355 -> 0 bytes .../b4a7d44531733e15_0 | Bin 652 -> 0 bytes .../b4ebd754b60370ee_0 | Bin 2140 -> 0 bytes .../b51071849e6ce9bf_0 | Bin 601 -> 0 bytes .../b569d319c182cfa9_0 | Bin 2318 -> 0 bytes .../b5864e4dd88ab1bb_0 | Bin 547 -> 0 bytes .../b586b18c91f9637e_0 | Bin 5522 -> 0 bytes .../b586b18c91f9637e_1 | Bin 2986 -> 0 bytes .../b61cdeb0d09598c4_0 | Bin 805 -> 0 bytes .../b64275ad4710baf7_0 | Bin 1299 -> 0 bytes .../b667f98695f2a81b_0 | Bin 14300 -> 0 bytes .../b667f98695f2a81b_1 | Bin 7535 -> 0 bytes .../b68164526abeb644_0 | Bin 7829 -> 0 bytes .../b6bae416e9e7cc5a_0 | Bin 5048 -> 0 bytes .../b6e64b9c3602659d_0 | Bin 1038 -> 0 bytes .../b6ffeb292da0819c_0 | Bin 12590 -> 0 bytes .../b701495e737e9569_0 | Bin 739 -> 0 bytes .../b7d4456629fdcc6c_0 | Bin 822 -> 0 bytes .../b87e3c445a1b27d1_0 | Bin 892 -> 0 bytes .../b87e7d58490ffeb5_0 | Bin 13450 -> 0 bytes .../b87e7d58490ffeb5_1 | Bin 3915 -> 0 bytes .../b88bba09665a0a87_0 | Bin 5468 -> 0 bytes .../b88bba09665a0a87_1 | Bin 3673 -> 0 bytes .../b902796a9df3342c_0 | Bin 885 -> 0 bytes .../b9ba26b7e74f289b_0 | Bin 771 -> 0 bytes .../b9be2485870a645c_0 | Bin 4153 -> 0 bytes .../b9eb742f7013bee9_0 | Bin 702 -> 0 bytes .../b9f49f5909830590_0 | Bin 2578 -> 0 bytes .../ba0913046658d355_0 | Bin 2501 -> 0 bytes .../ba38d09f50e0773a_0 | Bin 1608 -> 0 bytes .../ba38d09f50e0773a_1 | Bin 1230 -> 0 bytes .../ba769caf586e4f43_0 | Bin 7264 -> 0 bytes .../ba769caf586e4f43_1 | Bin 5321 -> 0 bytes .../ba85fab75db0fd07_0 | Bin 1451 -> 0 bytes .../bac73a815d2b934b_0 | Bin 609 -> 0 bytes .../bac98421ca1c2fbf_0 | Bin 4564 -> 0 bytes .../bac98421ca1c2fbf_1 | Bin 3443 -> 0 bytes .../bacbc6a543d12f63_0 | Bin 721 -> 0 bytes .../bad971a94d1bf3bc_0 | Bin 1775 -> 0 bytes .../bb11e1c80bdeec13_0 | Bin 636 -> 0 bytes .../bbe514bd9c538202_0 | Bin 3137 -> 0 bytes .../bbe514bd9c538202_1 | Bin 1808 -> 0 bytes .../bc1462f5835e20b6_0 | Bin 790 -> 0 bytes .../bc19c956cdc8e800_0 | Bin 1978 -> 0 bytes .../bc4de8bb2541b7a9_0 | Bin 636 -> 0 bytes .../bd308d48551b6777_0 | Bin 581 -> 0 bytes .../bd6cde1a88919e5b_0 | Bin 485 -> 0 bytes .../bdc7473cd990ab7c_0 | Bin 5271 -> 0 bytes .../be37396559ceaaa7_0 | Bin 3336 -> 0 bytes .../be43730dbb112d78_0 | Bin 1417 -> 0 bytes .../be87d844c2185ee8_0 | Bin 581 -> 0 bytes .../beb08b8b616b7350_0 | Bin 622 -> 0 bytes .../beee568cdf52d56a_0 | Bin 1889 -> 0 bytes .../bef523ee264e03a6_0 | Bin 859 -> 0 bytes .../bf219a7ca4e0e2db_0 | Bin 7648 -> 0 bytes .../bf219a7ca4e0e2db_1 | Bin 5492 -> 0 bytes .../bfb7c6494f596d9b_0 | Bin 612 -> 0 bytes .../c00520fa3d8342ea_0 | Bin 529 -> 0 bytes .../c0aa0869e28cef03_0 | Bin 1610 -> 0 bytes .../c0aa0869e28cef03_1 | Bin 946 -> 0 bytes .../c0c2523c2b3017cd_0 | Bin 730 -> 0 bytes .../c0ceb5ed324b6776_0 | Bin 28124 -> 0 bytes .../c0ceb5ed324b6776_1 | Bin 9774 -> 0 bytes .../c0ef5dd2efa3d2da_0 | Bin 17382 -> 0 bytes .../c0ef5dd2efa3d2da_1 | Bin 7553 -> 0 bytes .../c0efb48a0f36bdf1_0 | Bin 5238 -> 0 bytes .../c1bd60a45b969535_0 | Bin 1585 -> 0 bytes .../c1d389498d5bc95d_0 | Bin 715 -> 0 bytes .../c20571520725e922_0 | Bin 1423 -> 0 bytes .../c234dbc237cce573_0 | Bin 794 -> 0 bytes .../c24b50ddf3ec84ff_0 | Bin 1234 -> 0 bytes .../c2d910d9ca7c4ab1_0 | Bin 13270 -> 0 bytes .../c2d910d9ca7c4ab1_1 | Bin 3275 -> 0 bytes .../c3c96fce7d5d5ef9_0 | Bin 20168 -> 0 bytes .../c3dcbced2b346b1b_0 | Bin 4130 -> 0 bytes .../c4416666390b391b_0 | Bin 853 -> 0 bytes .../c4dee0122d776aa5_0 | Bin 667 -> 0 bytes .../c5b15f6e0914c805_0 | Bin 676 -> 0 bytes .../c5c6ad7dd2359d4f_0 | Bin 582 -> 0 bytes .../c5f96edcfce451c6_0 | Bin 5335 -> 0 bytes .../c7045a4ec00ab0b3_0 | Bin 1867 -> 0 bytes .../c7045a4ec00ab0b3_1 | Bin 857 -> 0 bytes .../c77197cb4bd026f5_0 | Bin 669 -> 0 bytes .../c827eb10d2414485_0 | Bin 3364 -> 0 bytes .../c8835d6c8deb1c6f_0 | Bin 600 -> 0 bytes .../c8a5b36a20bc2678_0 | Bin 1093 -> 0 bytes .../c8ab493167cdb6e5_0 | Bin 4822 -> 0 bytes .../c8ab493167cdb6e5_1 | Bin 2084 -> 0 bytes .../c8b84b7342bfebbc_0 | Bin 742 -> 0 bytes .../c8e635c5956b864f_0 | Bin 1163 -> 0 bytes .../c8f81912308f826b_0 | Bin 5073 -> 0 bytes .../ca1e309e702a76ed_0 | Bin 8249 -> 0 bytes .../ca1e309e702a76ed_1 | Bin 4448 -> 0 bytes .../ca46c2aa81ec7047_0 | Bin 926 -> 0 bytes .../ca8ed88bcbbbd3f2_0 | Bin 711 -> 0 bytes .../caf1cd3ed85eb74e_0 | Bin 597 -> 0 bytes .../cb0fab0ad9057d4e_0 | Bin 614 -> 0 bytes .../cb2c203e1e0f4c74_0 | Bin 4399 -> 0 bytes .../cb2c203e1e0f4c74_1 | Bin 3224 -> 0 bytes .../cb7fbe610da855b5_0 | Bin 739 -> 0 bytes .../cc180057d87fdd33_0 | Bin 2309 -> 0 bytes .../cc180057d87fdd33_1 | Bin 1003 -> 0 bytes .../ccd6c7a530b4f930_0 | Bin 5491 -> 0 bytes .../ccd6c7a530b4f930_1 | Bin 2325 -> 0 bytes .../cd47fc03a4aba6dc_0 | Bin 821 -> 0 bytes .../cd572a1b4f793097_0 | Bin 547 -> 0 bytes .../cd5739b39908fc4f_0 | Bin 1406 -> 0 bytes .../cd7e9fefbddf335a_0 | Bin 496 -> 0 bytes .../cd9d3e7c148babcf_0 | Bin 5877 -> 0 bytes .../cd9f5daeb246bdd6_0 | Bin 1210 -> 0 bytes .../ce31d51328e39851_0 | Bin 552 -> 0 bytes .../ce667784c6e68c0f_0 | Bin 1528 -> 0 bytes .../ce667784c6e68c0f_1 | Bin 627 -> 0 bytes .../cec8de2e6b5a7044_0 | Bin 618 -> 0 bytes .../cf3abbbd2916e44b_0 | Bin 811 -> 0 bytes .../cf3c017c582b5bc8_0 | Bin 1142 -> 0 bytes .../cf825e02b94abade_0 | Bin 1926 -> 0 bytes .../cf825e02b94abade_1 | Bin 796 -> 0 bytes .../cfbfc04797ccda7b_0 | Bin 3237 -> 0 bytes .../d04f03283780f57f_0 | Bin 1220 -> 0 bytes .../d074796fe909fa7b_0 | Bin 2164 -> 0 bytes .../d07a75c19ff93b9c_0 | Bin 2147 -> 0 bytes .../d07a75c19ff93b9c_1 | Bin 1212 -> 0 bytes .../d0859f7e4aff67db_0 | Bin 1174 -> 0 bytes .../d09cecc3c8d96293_0 | Bin 3946 -> 0 bytes .../d09cecc3c8d96293_1 | Bin 1543 -> 0 bytes .../d2832816719c1956_0 | Bin 872 -> 0 bytes .../d3199c592bd51ecf_0 | Bin 1508 -> 0 bytes .../d38dd104113092a3_0 | Bin 813 -> 0 bytes .../d39d60dc00b7c5cd_0 | Bin 6060 -> 0 bytes .../d3f03da5ec12b7ee_0 | Bin 782 -> 0 bytes .../d58347d203ad869f_0 | Bin 1908 -> 0 bytes .../d58347d203ad869f_1 | Bin 2238 -> 0 bytes .../d5a54fa9ee890493_0 | Bin 1297 -> 0 bytes .../d66a38fb3dc673ce_0 | Bin 4017 -> 0 bytes .../d6ce347541d9648d_0 | Bin 1151 -> 0 bytes .../d738c395227b6276_0 | Bin 922 -> 0 bytes .../d73c2f40205ade4d_0 | Bin 15086 -> 0 bytes .../d73c2f40205ade4d_1 | Bin 5743 -> 0 bytes .../d743c97f71a60d6f_0 | Bin 4714 -> 0 bytes .../d757866a00c875a7_0 | Bin 710 -> 0 bytes .../d7babbddb18c59cc_0 | Bin 2062 -> 0 bytes .../d7babbddb18c59cc_1 | Bin 1447 -> 0 bytes .../d7e73c042cbaf5db_0 | Bin 680 -> 0 bytes .../d84c547bba67527e_0 | Bin 754 -> 0 bytes .../d8ba5d53d0a2e9a7_0 | Bin 588 -> 0 bytes .../d948e8b78554f2a0_0 | Bin 4816 -> 0 bytes .../d948e8b78554f2a0_1 | Bin 5443 -> 0 bytes .../d9b8fb7c3bb0bb46_0 | Bin 3684 -> 0 bytes .../dac293fe9d3f4e47_0 | Bin 971 -> 0 bytes .../db50568326c9b20d_0 | Bin 2328 -> 0 bytes .../db69f92d871865d3_0 | Bin 1185 -> 0 bytes .../db88765cff0fd9c9_0 | Bin 1802 -> 0 bytes .../dbcfc53af8ef8430_0 | Bin 29308 -> 0 bytes .../dca106f822cbb7b2_0 | Bin 845 -> 0 bytes .../dcff88ee0ba2b6d5_0 | Bin 24251 -> 0 bytes .../dcff88ee0ba2b6d5_1 | Bin 8882 -> 0 bytes .../dd66d0d0fda63b26_0 | Bin 610 -> 0 bytes .../dd6ee0fe8c6d4523_0 | Bin 1086 -> 0 bytes .../dd9596d3d7fa6c3d_0 | Bin 2624 -> 0 bytes .../dd9596d3d7fa6c3d_1 | Bin 1115 -> 0 bytes .../ddd3e4f93af24594_0 | Bin 846 -> 0 bytes .../de7a26eda1e9d5ad_0 | Bin 3238 -> 0 bytes .../de899a798cb45de2_0 | Bin 864 -> 0 bytes .../df74a43c5002ed52_0 | Bin 2800 -> 0 bytes .../df74a43c5002ed52_1 | Bin 1742 -> 0 bytes .../df923205969c250a_0 | Bin 725 -> 0 bytes .../dfbf502831b5bb8f_0 | Bin 2293 -> 0 bytes .../dff8fc5eefd2b200_0 | Bin 522 -> 0 bytes .../dff939b9f7314e39_0 | Bin 14208 -> 0 bytes .../dfff84b1c37f02d1_0 | Bin 1641 -> 0 bytes .../dfff84b1c37f02d1_1 | Bin 1813 -> 0 bytes .../e00382d87e81461f_0 | Bin 932 -> 0 bytes .../e013830503d2824a_0 | Bin 5198 -> 0 bytes .../e02a34609fadb397_0 | Bin 617 -> 0 bytes .../e08da9266b7bc35e_0 | Bin 2803 -> 0 bytes .../e08da9266b7bc35e_1 | Bin 1373 -> 0 bytes .../e0b087468fdc45a7_0 | Bin 902 -> 0 bytes .../e0bc01e123c1b662_0 | Bin 641 -> 0 bytes .../e136fd1109282d13_0 | Bin 5187 -> 0 bytes .../e136fd1109282d13_1 | Bin 2921 -> 0 bytes .../e15c3ac0484a41b6_0 | Bin 580 -> 0 bytes .../e1809aa1dec51752_0 | Bin 2079 -> 0 bytes .../e19f9695351856c7_0 | Bin 3377 -> 0 bytes .../e20180a84a0ba2ed_0 | Bin 703 -> 0 bytes .../e253de74f4d7a3a8_0 | Bin 1227 -> 0 bytes .../e25646a452fb0490_0 | Bin 6699 -> 0 bytes .../e2829f64a4e61c11_0 | Bin 615 -> 0 bytes .../e28b460f9c8fdd4b_0 | Bin 1420 -> 0 bytes .../e2bc1d57f58eb681_0 | Bin 1648 -> 0 bytes .../e2bc1d57f58eb681_1 | Bin 894 -> 0 bytes .../e2c516ac01f37f95_0 | Bin 3007 -> 0 bytes .../e2c516ac01f37f95_1 | Bin 2486 -> 0 bytes .../e2cff40e1dbe997a_0 | Bin 859 -> 0 bytes .../e305d432d2ecf44d_0 | Bin 813 -> 0 bytes .../e38751bbd8f58290_0 | Bin 638 -> 0 bytes .../e4f75c3a735f86ff_0 | Bin 1687 -> 0 bytes .../e4f75c3a735f86ff_1 | Bin 1679 -> 0 bytes .../e4fbeec63fe67d63_0 | Bin 787 -> 0 bytes .../e50a02fe3f712667_0 | Bin 4207 -> 0 bytes .../e589ee0b286def25_0 | Bin 2256 -> 0 bytes .../e589ee0b286def25_1 | Bin 2526 -> 0 bytes .../e5a54e20943590c7_0 | Bin 767 -> 0 bytes .../e5b373e7782ab510_0 | Bin 5438 -> 0 bytes .../e5b373e7782ab510_1 | Bin 888 -> 0 bytes .../e5c9cf1989b76ba1_0 | Bin 3822 -> 0 bytes .../e5c9cf1989b76ba1_1 | Bin 1551 -> 0 bytes .../e6baf625a3662f25_0 | Bin 1676 -> 0 bytes .../e6baf625a3662f25_1 | Bin 1732 -> 0 bytes .../e6cbfef54305e176_0 | Bin 610 -> 0 bytes .../e738d572b32a90c4_0 | Bin 49480 -> 0 bytes .../e799ad5644bd82e1_0 | Bin 3628 -> 0 bytes .../e799ad5644bd82e1_1 | Bin 908 -> 0 bytes .../e7e1aab3476bac96_0 | Bin 743 -> 0 bytes .../e886411785d45641_0 | Bin 755 -> 0 bytes .../e88ea8e12f6198ee_0 | Bin 3764 -> 0 bytes .../e88ea8e12f6198ee_1 | Bin 1453 -> 0 bytes .../e8fb0d04fb040780_0 | Bin 4030 -> 0 bytes .../e93ff4514e5e7f99_0 | Bin 5321 -> 0 bytes .../e9670b1447330333_0 | Bin 12571 -> 0 bytes .../e9670b1447330333_1 | Bin 8819 -> 0 bytes .../e99d688924ac6e22_0 | Bin 662 -> 0 bytes .../e9b105d97e8f10be_0 | Bin 4395 -> 0 bytes .../e9b105d97e8f10be_1 | Bin 4271 -> 0 bytes .../e9b596c5ceaf029f_0 | Bin 1199 -> 0 bytes .../ea35697d605d717b_0 | Bin 692 -> 0 bytes .../ea6e9425677b81ad_0 | Bin 6711 -> 0 bytes .../ea6e9425677b81ad_1 | Bin 3215 -> 0 bytes .../eb15c24530086e0c_0 | Bin 2465 -> 0 bytes .../eb15c24530086e0c_1 | Bin 2575 -> 0 bytes .../eb78ce0f85d8c407_0 | Bin 1272 -> 0 bytes .../ec356c6f232412e8_0 | Bin 832 -> 0 bytes .../ec87d2213fdaa13f_0 | Bin 567 -> 0 bytes .../ec9e4bdd9347694b_0 | Bin 4231 -> 0 bytes .../ecda1ae0d600ab28_0 | Bin 5429 -> 0 bytes .../ecfb82875bcc777a_0 | Bin 999 -> 0 bytes .../ed270477f6d1ece8_0 | Bin 8427 -> 0 bytes .../ed270477f6d1ece8_1 | Bin 5427 -> 0 bytes .../ed783c04af39baae_0 | Bin 603 -> 0 bytes .../ee19d828b2eb1dd4_0 | Bin 690 -> 0 bytes .../ee71eabb5532d76d_0 | Bin 775 -> 0 bytes .../eea5b951f3509e76_0 | Bin 1716 -> 0 bytes .../ef5361bebb951fda_0 | Bin 32222 -> 0 bytes .../ef5361bebb951fda_1 | Bin 11142 -> 0 bytes .../ef5887180c77f64f_0 | Bin 2053 -> 0 bytes .../f0b76897b3d3a7ff_0 | Bin 600 -> 0 bytes .../f1105ef47eb0a55a_0 | Bin 15729 -> 0 bytes .../f1105ef47eb0a55a_1 | Bin 5978 -> 0 bytes .../f12c1892975670ae_0 | Bin 719 -> 0 bytes .../f2123455665e159e_0 | Bin 738 -> 0 bytes .../f23051e1b37a541e_0 | Bin 3405 -> 0 bytes .../f2b8a88f7c04a3d0_0 | Bin 3109 -> 0 bytes .../f2b8a88f7c04a3d0_1 | Bin 1370 -> 0 bytes .../f2cff1f7ecaa14bc_0 | Bin 1144 -> 0 bytes .../f3271d1e36c34e51_0 | Bin 5596 -> 0 bytes .../f38fee92a1651aca_0 | Bin 671 -> 0 bytes .../f3c82aea08a79b27_0 | Bin 6334 -> 0 bytes .../f3f2391f5ce23d1e_0 | Bin 630 -> 0 bytes .../f43ac036cb54ce28_0 | Bin 978 -> 0 bytes .../f47bc38722ee1c81_0 | Bin 2757 -> 0 bytes .../f47bc38722ee1c81_1 | Bin 2170 -> 0 bytes .../f4d991309c62b54c_0 | Bin 2730 -> 0 bytes .../f4d991309c62b54c_1 | Bin 1972 -> 0 bytes .../f4ea72050b4078a7_0 | Bin 2198 -> 0 bytes .../f575b1617f383aca_0 | Bin 718 -> 0 bytes .../f5af34b25a339b8c_0 | Bin 1880 -> 0 bytes .../f5af34b25a339b8c_1 | Bin 838 -> 0 bytes .../f623fc8d42740b21_0 | Bin 9499 -> 0 bytes .../f671d11c42caa3ff_0 | Bin 596 -> 0 bytes .../f685684bc3d209d6_0 | Bin 1906 -> 0 bytes .../f69e2d16749c5942_0 | Bin 27045 -> 0 bytes .../f69e2d16749c5942_1 | Bin 14504 -> 0 bytes .../f726abc9102029ac_0 | Bin 2427 -> 0 bytes .../f726abc9102029ac_1 | Bin 1390 -> 0 bytes .../f79744824b297c34_0 | Bin 53885 -> 0 bytes .../f80d833dc31a25f0_0 | Bin 1192 -> 0 bytes .../f825b87d5ca26b02_0 | Bin 1331 -> 0 bytes .../f88ab9fbc82b8218_0 | Bin 1162 -> 0 bytes .../f8c96fac3f694495_0 | Bin 1337 -> 0 bytes .../f8ce970ea55d9009_0 | Bin 762 -> 0 bytes .../f8db1d8ec293bdbe_0 | Bin 1491 -> 0 bytes .../f8db1d8ec293bdbe_1 | Bin 683 -> 0 bytes .../f96bfa4a84f6aedb_0 | Bin 637 -> 0 bytes .../f9b63a35f54e6cc8_0 | Bin 4278 -> 0 bytes .../f9b63a35f54e6cc8_1 | Bin 4859 -> 0 bytes .../fb179cc2a184cdf7_0 | Bin 908 -> 0 bytes .../fb50f1b52c8fd94b_0 | Bin 8537 -> 0 bytes .../fb70769c8399b633_0 | Bin 2183 -> 0 bytes .../fca46082b1b5ab14_0 | Bin 658 -> 0 bytes .../fd93add5705ab1fa_0 | Bin 2397 -> 0 bytes .../fd93add5705ab1fa_1 | Bin 1475 -> 0 bytes .../fdfb8499b73a50dc_0 | Bin 8967 -> 0 bytes .../fdfb8499b73a50dc_1 | Bin 1864 -> 0 bytes .../fe1d084e0d35cba2_0 | Bin 1116 -> 0 bytes .../fe9c2783fbbacb79_0 | Bin 8789 -> 0 bytes .../ff3e757a43f44f33_0 | Bin 1116 -> 0 bytes .../ff4b34175737767b_0 | Bin 1352 -> 0 bytes .../ed9c4292-8564-4985-872f-806e6cda6b1e/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 19512 -> 0 bytes .../index.txt | Bin 229 -> 0 bytes .../003e46dfa020b539_0 | Bin 1915 -> 0 bytes .../0c7647488b53391d_0 | Bin 1364 -> 0 bytes .../0fee90b3154d40dd_0 | Bin 669 -> 0 bytes .../119ed47a376f2651_0 | Bin 4021 -> 0 bytes .../12afb400e97448f9_0 | Bin 743 -> 0 bytes .../13699328ec436ec3_0 | Bin 1557 -> 0 bytes .../19780c06974eb96e_0 | Bin 3405 -> 0 bytes .../199da6d6a0c58d80_0 | Bin 2979 -> 0 bytes .../21089030b93822e5_0 | Bin 1455 -> 0 bytes .../236a3309f0f971ef_0 | Bin 2087 -> 0 bytes .../25c1936bf63a35e2_0 | Bin 17222 -> 0 bytes .../2694a384ac4cc33e_0 | Bin 1405 -> 0 bytes .../293c338c8bf853f1_0 | Bin 2842 -> 0 bytes .../294eb073b9e36aac_0 | Bin 5618 -> 0 bytes .../2c3b1663f8077631_0 | Bin 858 -> 0 bytes .../2cd404dad84a7922_0 | Bin 3945 -> 0 bytes .../32f71bb5ec2dfd99_0 | Bin 6199 -> 0 bytes .../3466720e09f2e20f_0 | Bin 2377 -> 0 bytes .../39e08aa58d9c7d7c_0 | Bin 1365 -> 0 bytes .../3b114891236fa3d9_0 | Bin 3747 -> 0 bytes .../3b114891236fa3d9_1 | Bin 10131 -> 0 bytes .../3df382128cef311b_0 | Bin 2242 -> 0 bytes .../3e6268b294412d61_0 | Bin 845 -> 0 bytes .../4222d76aef767290_0 | Bin 5144 -> 0 bytes .../439848e05d32573d_0 | Bin 1689 -> 0 bytes .../45118f9747c4892a_0 | Bin 2066 -> 0 bytes .../48eddf6b586c49b9_0 | Bin 3230 -> 0 bytes .../4bb5c1134bb09a25_0 | Bin 2060 -> 0 bytes .../5577af1e5aa23c4d_0 | Bin 10982 -> 0 bytes .../58172732236739b3_0 | Bin 1149 -> 0 bytes .../5cc53617e9805d93_0 | Bin 2510 -> 0 bytes .../5ef22106a5cbac93_0 | Bin 3820 -> 0 bytes .../67e08538bb1ea38c_0 | Bin 3341 -> 0 bytes .../6be50e6522c544ff_0 | Bin 865 -> 0 bytes .../7258704b683a1901_0 | Bin 6996 -> 0 bytes .../73da199e1b08c7b0_0 | Bin 908 -> 0 bytes .../75360191d8f453eb_0 | Bin 86645 -> 0 bytes .../77c768f386034b86_0 | Bin 1223 -> 0 bytes .../77c768f386034b86_1 | Bin 1346 -> 0 bytes .../82184a88fc250056_0 | Bin 1205 -> 0 bytes .../85a7fcc7a7cbd124_0 | Bin 781 -> 0 bytes .../87efe62f47145652_0 | Bin 797 -> 0 bytes .../87efe62f47145652_1 | Bin 828 -> 0 bytes .../892eeccba4b59f85_0 | Bin 7506 -> 0 bytes .../89af32d5ead849e2_0 | Bin 6766 -> 0 bytes .../8be08effbfba8e82_0 | Bin 6014 -> 0 bytes .../8be08effbfba8e82_1 | Bin 5708 -> 0 bytes .../8cd89069cda692fa_0 | Bin 4001 -> 0 bytes .../8ea4ca1ba0311bb4_0 | Bin 4796 -> 0 bytes .../91f5f98a82824752_0 | Bin 5353 -> 0 bytes .../928c2b25d52679e0_0 | Bin 741 -> 0 bytes .../93b19068f24a39eb_0 | Bin 916 -> 0 bytes .../994ce7ca59be49b5_0 | Bin 793 -> 0 bytes .../99e7f3c6d22b8a46_0 | Bin 8556 -> 0 bytes .../9b28781c6ee3f007_0 | Bin 935 -> 0 bytes .../a1c638fe9a98477f_0 | Bin 1519 -> 0 bytes .../a4fc085d7633f7f8_0 | Bin 1656 -> 0 bytes .../a56a3431222d973e_0 | Bin 13853 -> 0 bytes .../a56a3431222d973e_1 | Bin 41531 -> 0 bytes .../a9eb274094ab27d8_0 | Bin 14672 -> 0 bytes .../a9ec1dd51e9acf2b_0 | Bin 848 -> 0 bytes .../aca1a0ae1f0ed8af_0 | Bin 688 -> 0 bytes .../ad185eb55c0361b8_0 | Bin 1111 -> 0 bytes .../b6b41889d5ec8834_0 | Bin 1662 -> 0 bytes .../b9256146face4556_0 | Bin 3599 -> 0 bytes .../c1541e8df3abf73e_0 | Bin 6452 -> 0 bytes .../c1541e8df3abf73e_1 | Bin 15841 -> 0 bytes .../c2724c9f360aed77_0 | Bin 2660 -> 0 bytes .../c60bd809f05efb2d_0 | Bin 1487 -> 0 bytes .../ca27752d5234bd03_0 | Bin 1501 -> 0 bytes .../d1a1c0da3f7c2d50_0 | Bin 3015 -> 0 bytes .../d1a1c0da3f7c2d50_1 | Bin 5595 -> 0 bytes .../d8fb532cd3d79b9e_0 | Bin 2999 -> 0 bytes .../de344b189d5554a1_0 | Bin 6186 -> 0 bytes .../e090b6ab1241b621_0 | Bin 2302 -> 0 bytes .../e0c6a47d1292c33b_0 | Bin 1295725 -> 0 bytes .../e0c6a47d1292c33b_1 | Bin 1545710 -> 0 bytes .../e36af5d6edf1d44b_0 | Bin 2914 -> 0 bytes .../e88bb3bf086f15dd_0 | Bin 1781 -> 0 bytes .../ebff3f62aac2dcfd_0 | Bin 1423 -> 0 bytes .../f043a1e616999554_0 | Bin 1197 -> 0 bytes .../f043a1e616999554_1 | Bin 1361 -> 0 bytes .../f501f85093a60586_0 | Bin 1336 -> 0 bytes .../f7ebb963a3c873ef_0 | Bin 1823 -> 0 bytes .../f92ff1e61f7b6520_0 | Bin 1367 -> 0 bytes .../faf8e747d63a154c_0 | Bin 3069 -> 0 bytes .../fbae1f39235dc6fa_0 | Bin 1621 -> 0 bytes .../fed1ab16a3cca7be_0 | Bin 1573 -> 0 bytes .../ffbe24e1bc4c9e36_0 | Bin 1751 -> 0 bytes .../98af87df-2420-4aac-a03f-7fe038216441/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 1968 -> 0 bytes .../index.txt | Bin 232 -> 0 bytes .../00d49b4d2587980b_0 | Bin 13495 -> 0 bytes .../0691678d2aaae303_0 | Bin 85895 -> 0 bytes .../0def118dbfd34d66_0 | Bin 70750 -> 0 bytes .../11127f2fe7d5c20b_0 | Bin 23159 -> 0 bytes .../17458aa7431ea693_0 | Bin 2050 -> 0 bytes .../27e033c33c6c2d70_0 | Bin 11130 -> 0 bytes .../2c596d4dac203c3a_0 | Bin 62504 -> 0 bytes .../306ce19568bd5862_0 | Bin 55814 -> 0 bytes .../312e55c27d50500a_0 | Bin 11524 -> 0 bytes .../31f0026bc83eaa8b_0 | Bin 295170 -> 0 bytes .../3550787ee3393fe4_0 | Bin 380338 -> 0 bytes .../3fe1746c4c6e609c_0 | Bin 2050 -> 0 bytes .../403708932b391e16_0 | Bin 19571 -> 0 bytes .../52d983a50eb8360f_0 | Bin 13750 -> 0 bytes .../551ee88b37d6fe88_0 | Bin 252688 -> 0 bytes .../595f9fcdb423d2a0_0 | Bin 105361 -> 0 bytes .../5a0af9654c6eb91e_0 | Bin 27335 -> 0 bytes .../5ae24d424d2370ef_0 | Bin 64473 -> 0 bytes .../61010eea16ca8cc3_0 | Bin 1966 -> 0 bytes .../61f93fcbd25e4a1c_0 | Bin 91228 -> 0 bytes .../62f8e3beac831923_0 | Bin 74033 -> 0 bytes .../6429e2e913547ffb_0 | Bin 47960 -> 0 bytes .../6b1a17bf6ed294bc_0 | Bin 24979 -> 0 bytes .../71b5a1796330c157_0 | Bin 2179 -> 0 bytes .../721b6df1b6e9066f_0 | Bin 11794 -> 0 bytes .../7454ae9888c49958_0 | Bin 273983 -> 0 bytes .../766234bef285fb50_0 | Bin 1874 -> 0 bytes .../77f7a4868a83c225_0 | Bin 21930 -> 0 bytes .../7babc87337125856_0 | Bin 180510 -> 0 bytes .../7c53e3148d519dcb_0 | Bin 2515 -> 0 bytes .../7e3595566a97799e_0 | Bin 164332 -> 0 bytes .../824feeeeab1e0c29_0 | Bin 9743 -> 0 bytes .../84afcdbeb0258dba_0 | Bin 2856 -> 0 bytes .../8e5802d93b21c0de_0 | Bin 70216 -> 0 bytes .../91dea6e779d99b27_0 | Bin 41857 -> 0 bytes .../9516e32044704bbf_0 | Bin 166982 -> 0 bytes .../9c1489e370657f77_0 | Bin 113776 -> 0 bytes .../a7a544366fabe60f_0 | Bin 49971 -> 0 bytes .../ab1a380089186474_0 | Bin 6886 -> 0 bytes .../aecd1be9e56c2119_0 | Bin 83824 -> 0 bytes .../b0a430d4637fdccf_0 | Bin 145713 -> 0 bytes .../b6b7e241b2bfd040_0 | Bin 171533 -> 0 bytes .../b96f102821ba86d9_0 | Bin 50392 -> 0 bytes .../bc8cf2acdc2f9225_0 | Bin 177103 -> 0 bytes .../bd4df23e502d12a5_0 | Bin 2050 -> 0 bytes .../be9256367f8f9ee6_0 | Bin 307467 -> 0 bytes .../ce8704f1c44d9f88_0 | Bin 53854 -> 0 bytes .../d05580d6490888ac_0 | Bin 2177 -> 0 bytes .../d1546d22654a128f_0 | Bin 224198 -> 0 bytes .../d3356420e76bf5cb_0 | Bin 10087 -> 0 bytes .../dd79010cb0591772_0 | Bin 8106 -> 0 bytes .../ddd50199ea01f2fe_0 | Bin 2179 -> 0 bytes .../dfeebfabf371b18b_0 | Bin 15395 -> 0 bytes .../e71bda0f52ebdb1e_0 | Bin 133488 -> 0 bytes .../fc22692f46c328ab_0 | Bin 10918 -> 0 bytes .../250ab7d9-0d84-4bc7-8cb4-0d4634211a71/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 1368 -> 0 bytes .../031f48e0c36b9934_0 | Bin 135792 -> 0 bytes .../14860bebeafa40d1_0 | Bin 201179 -> 0 bytes .../26038abf687e8399_0 | Bin 154877 -> 0 bytes .../2afe578606b9339f_0 | Bin 3938 -> 0 bytes .../2d89c98debc14a6b_0 | Bin 294172 -> 0 bytes .../3917654c9f69b5b9_0 | Bin 32299 -> 0 bytes .../3adb0f728a11ebd5_0 | Bin 1842 -> 0 bytes .../447d923c5308216e_0 | Bin 173968 -> 0 bytes .../4d2d3ad5ecefae07_0 | Bin 60528 -> 0 bytes .../5d31591218d525c4_0 | Bin 2035 -> 0 bytes .../6232626923dea252_0 | Bin 5117 -> 0 bytes .../69ec0c209f5c0bfd_0 | Bin 39187 -> 0 bytes .../8f0f15f44625f6d9_0 | Bin 75475 -> 0 bytes .../92a8c13965c78dd0_0 | Bin 57122 -> 0 bytes .../932460eeef86b971_0 | Bin 3819 -> 0 bytes .../b36369ff7e371734_0 | Bin 198657 -> 0 bytes .../b3ade297ad8aebbd_0 | Bin 36377 -> 0 bytes .../be2ec7d709529a7d_0 | Bin 1906 -> 0 bytes .../dea45bcc02ee1249_0 | Bin 113773 -> 0 bytes .../eda3e39d4b0d1f86_0 | Bin 6416 -> 0 bytes .../f3b692f88bf245ea_0 | Bin 380334 -> 0 bytes .../2a666d8f-5250-47b0-b031-89b418a19cd5/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 552 -> 0 bytes .../0e8fbbc4c2a40488_0 | Bin 8435 -> 0 bytes .../0e8fc5098f719e20_0 | Bin 51618 -> 0 bytes .../365f0f766426ff59_0 | Bin 14711 -> 0 bytes .../365f0f766426ff59_1 | Bin 7362 -> 0 bytes .../43d9b2a540277cdb_0 | Bin 45313 -> 0 bytes .../43d9b2a540277cdb_1 | Bin 16718 -> 0 bytes .../59a5ef5a5cf2bd1e_0 | Bin 522371 -> 0 bytes .../5ef034abc1264e2b_0 | Bin 9503 -> 0 bytes .../6693c148429d6419_0 | Bin 87416 -> 0 bytes .../a7d03ee421eb3dbd_0 | Bin 81082 -> 0 bytes .../b045d9f800cf10a4_0 | Bin 132976 -> 0 bytes .../b045d9f800cf10a4_1 | Bin 76221 -> 0 bytes .../bac2607142395d46_0 | Bin 85640 -> 0 bytes .../d6cd6f5619d0e4cc_0 | Bin 192195 -> 0 bytes .../d6cd6f5619d0e4cc_1 | Bin 56448 -> 0 bytes .../defe50f574a959f9_0 | Bin 11876 -> 0 bytes .../defe50f574a959f9_1 | Bin 12557 -> 0 bytes .../ef58de15a8856b1d_0 | Bin 552938 -> 0 bytes .../4629c00e-5327-4f5d-85a3-9f4bf412f654/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 360 -> 0 bytes .../16b0914734cc3f9b_0 | Bin 6321 -> 0 bytes .../28d395390b4bef8e_0 | Bin 81657 -> 0 bytes .../2dba8e9bca54bd17_0 | Bin 2146 -> 0 bytes .../3867c8caf074e354_0 | Bin 43697 -> 0 bytes .../4203240924b11850_0 | Bin 71757 -> 0 bytes .../474683591fdad3c0_0 | Bin 5406986 -> 0 bytes .../5240b0b8ba9f46a7_0 | Bin 28328 -> 0 bytes .../529a6ee823e6cc5b_0 | Bin 380367 -> 0 bytes .../55ee7539ad979a66_0 | Bin 57390 -> 0 bytes .../63046f9727a836e1_0 | Bin 64722 -> 0 bytes .../649dfe80b869f136_0 | Bin 129443 -> 0 bytes .../661692201a84b692_0 | Bin 1890 -> 0 bytes .../69580f993d1ae8fb_0 | Bin 5699 -> 0 bytes .../6a1d47f6f150fa16_0 | Bin 2108 -> 0 bytes .../6fe717885e6a664a_0 | Bin 203259 -> 0 bytes .../7f0550dbf963f56b_0 | Bin 41663 -> 0 bytes .../7fec617899ac31b3_0 | Bin 5491 -> 0 bytes .../8f6b9e50046ca051_0 | Bin 166720 -> 0 bytes .../992556c964fe208b_0 | Bin 56879 -> 0 bytes .../9f34627a9fc4cb8e_0 | Bin 278218 -> 0 bytes .../a5f42fe1462b468d_0 | Bin 2270 -> 0 bytes .../a95d99aa9fa01c1b_0 | Bin 4665 -> 0 bytes .../aaa18642967f805b_0 | Bin 2178 -> 0 bytes .../ac1d2ecaa0e8d025_0 | Bin 129514 -> 0 bytes .../b6f363ff28e55219_0 | Bin 74261 -> 0 bytes .../babf317802428a63_0 | Bin 78461 -> 0 bytes .../c647507ef171d5d4_0 | Bin 164250 -> 0 bytes .../c8bf83be0b42493a_0 | Bin 124698 -> 0 bytes .../cc30867dd22dd55e_0 | Bin 1876 -> 0 bytes .../d62243b20640b1d2_0 | Bin 1934 -> 0 bytes .../db75fbd99b5ec8c8_0 | Bin 32539 -> 0 bytes .../e717dbc105c427c9_0 | Bin 215112 -> 0 bytes .../edff7b065b61b2d6_0 | Bin 113791 -> 0 bytes .../ef2334ffce031aae_0 | Bin 2081 -> 0 bytes .../f1c54b9b916b2c34_0 | Bin 457615 -> 0 bytes .../f95a7e4359d84de0_0 | Bin 11105 -> 0 bytes .../fa0c426140d219a6_0 | Bin 2303 -> 0 bytes .../606748f9-2def-4f33-9bf2-8c8b66d3ed12/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 936 -> 0 bytes .../01f05e5eb1facff3_0 | Bin 10913 -> 0 bytes .../0b79a63456a1f811_0 | Bin 5673 -> 0 bytes .../1122af755e69c4c1_0 | Bin 24803 -> 0 bytes .../1f316d52f9d28644_0 | Bin 106666 -> 0 bytes .../34a86980a4dff60a_0 | Bin 16582 -> 0 bytes .../38f7ad1abc54bc06_0 | Bin 2285 -> 0 bytes .../468a6bd6dceb7784_0 | Bin 77304 -> 0 bytes .../5c363957aa88306a_0 | Bin 20001 -> 0 bytes .../5e1fe47bc2525c44_0 | Bin 189556 -> 0 bytes .../5ff1885ac233d554_0 | Bin 24956 -> 0 bytes .../66bc15050307eb3c_0 | Bin 152409 -> 0 bytes .../697b8cf8494c0f42_0 | Bin 31331 -> 0 bytes .../726185e5d82cc0e5_0 | Bin 5336 -> 0 bytes .../728054c067bfc372_0 | Bin 203156 -> 0 bytes .../72d259c506352de7_0 | Bin 51525 -> 0 bytes .../73571fb0028ab5ad_0 | Bin 2181 -> 0 bytes .../74be11ee2c6f4258_0 | Bin 20954 -> 0 bytes .../7509bff218b720b7_0 | Bin 2384 -> 0 bytes .../8666901963a78a4c_0 | Bin 10894 -> 0 bytes .../8d8b420db8dc117e_0 | Bin 107384 -> 0 bytes .../8e5272d35cf7f036_0 | Bin 91782 -> 0 bytes .../8fcb07737378dda6_0 | Bin 1895 -> 0 bytes .../933884e1185761e7_0 | Bin 141539 -> 0 bytes .../9475da2150d7cbe1_0 | Bin 27155 -> 0 bytes .../a224e0618f6bfe72_0 | Bin 307462 -> 0 bytes .../a6f0e8ef732b13c5_0 | Bin 113771 -> 0 bytes .../ac93898d279f19d7_0 | Bin 46064 -> 0 bytes .../c0015271b88adf13_0 | Bin 164040 -> 0 bytes .../c30938258fd10626_0 | Bin 147377 -> 0 bytes .../d20cfe171755615a_0 | Bin 8669 -> 0 bytes .../d72935c57c6a9125_0 | Bin 7740 -> 0 bytes .../d744fd56259648eb_0 | Bin 2255 -> 0 bytes .../e27ce15f3c17d0d9_0 | Bin 77705 -> 0 bytes .../e377758ed04bce0e_0 | Bin 11075 -> 0 bytes .../f9cd58d24d232cc6_0 | Bin 12584 -> 0 bytes .../ff48b3d550aff865_0 | Bin 25586 -> 0 bytes .../90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 912 -> 0 bytes .../index.txt | Bin 1373 -> 0 bytes .../81f7e3e642548ca2_0 | Bin 351 -> 0 bytes .../424b3664-a6e4-404b-8cb1-6104cc670c6f/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 72 -> 0 bytes .../index.txt | Bin 149 -> 0 bytes .../0fd96541ed099c97_0 | Bin 3520 -> 0 bytes .../0fd96541ed099c97_1 | Bin 7158 -> 0 bytes .../148ff62ef6e46ac2_0 | Bin 3953 -> 0 bytes .../148ff62ef6e46ac2_1 | Bin 4541 -> 0 bytes .../160cc6f20086b761_0 | Bin 3718 -> 0 bytes .../160cc6f20086b761_1 | Bin 4163 -> 0 bytes .../1c4824e0e654dabe_0 | Bin 1188171 -> 0 bytes .../203cb2053817cde5_0 | Bin 9356 -> 0 bytes .../203cb2053817cde5_1 | Bin 18826 -> 0 bytes .../3850996bebfb334c_0 | Bin 1234881 -> 0 bytes .../3850996bebfb334c_1 | Bin 1096245 -> 0 bytes .../3f715975503efc3a_0 | Bin 587999 -> 0 bytes .../3f715975503efc3a_1 | Bin 380517 -> 0 bytes .../44e9dc3025d793bc_0 | Bin 1434 -> 0 bytes .../485d544f4ff940ee_0 | Bin 2410 -> 0 bytes .../57402cbee8bf669c_0 | Bin 3162 -> 0 bytes .../63c86809628e4c21_0 | Bin 2476 -> 0 bytes .../63c86809628e4c21_1 | Bin 3154 -> 0 bytes .../75610e1557b27e82_0 | Bin 8414 -> 0 bytes .../801d3fe0de0d9b7b_0 | Bin 1275 -> 0 bytes .../8df682c653624fb5_0 | Bin 42507 -> 0 bytes .../8df682c653624fb5_1 | Bin 20141 -> 0 bytes .../9ed43819643dbfe2_0 | Bin 10152 -> 0 bytes .../aad15b9514d6acb6_0 | Bin 43378 -> 0 bytes .../ae780574eb3244ac_0 | Bin 7888 -> 0 bytes .../bd32dbbffcdebcd9_0 | Bin 29186 -> 0 bytes .../bdf0310b5fb9cb2c_0 | Bin 2510 -> 0 bytes .../d6f2aa8232324352_0 | Bin 1789 -> 0 bytes .../d7c2f178a3d8b5b5_0 | Bin 798267 -> 0 bytes .../d7c2f178a3d8b5b5_1 | Bin 590085 -> 0 bytes .../e2723294d8494736_0 | Bin 3601 -> 0 bytes .../f1a3746ef87aff81_0 | Bin 1181 -> 0 bytes .../f1a3746ef87aff81_1 | Bin 811 -> 0 bytes .../f78638f0e397944c_0 | Bin 1283 -> 0 bytes .../ef31a427-5db1-48ef-9cad-6588a5d84fde/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 624 -> 0 bytes .../index.txt | Bin 227 -> 0 bytes .../0125450e1910eabc_0 | Bin 97332 -> 0 bytes .../0125450e1910eabc_1 | Bin 213698 -> 0 bytes .../01a2cce3dbf47a2d_0 | Bin 13973 -> 0 bytes .../02dc4a04d32539f7_0 | Bin 12924 -> 0 bytes .../03977ed293e4f244_0 | Bin 5591 -> 0 bytes .../03977ed293e4f244_1 | Bin 7693 -> 0 bytes .../040adbb193a1dd60_0 | Bin 34705 -> 0 bytes .../0546c7c63078d2d8_0 | Bin 64763 -> 0 bytes .../08b5d0ecdabcb20a_0 | Bin 19839 -> 0 bytes .../0a18bac32825a1d4_0 | Bin 220661 -> 0 bytes .../0a18bac32825a1d4_1 | Bin 622461 -> 0 bytes .../0b38ccfd0ec58227_0 | Bin 109648 -> 0 bytes .../0b38ccfd0ec58227_1 | Bin 283674 -> 0 bytes .../0edf76bd97e2b326_0 | Bin 113780 -> 0 bytes .../0edf76bd97e2b326_1 | Bin 300147 -> 0 bytes .../0f34d0ac4e01e170_0 | Bin 190946 -> 0 bytes .../0f34d0ac4e01e170_1 | Bin 325691 -> 0 bytes .../1402c0aabf09b6f0_0 | Bin 1804 -> 0 bytes .../1402c0aabf09b6f0_1 | Bin 2718 -> 0 bytes .../146cac7468eec933_0 | Bin 14311 -> 0 bytes .../17495c48da92b708_0 | Bin 26335 -> 0 bytes .../17e5dedcf6594252_0 | Bin 28697 -> 0 bytes .../18c18ffeb4113cdd_0 | Bin 94205 -> 0 bytes .../19466472951ab4fa_0 | Bin 8816 -> 0 bytes .../21e0dc7475920014_0 | Bin 11493 -> 0 bytes .../22dd3ebaf358bbff_0 | Bin 20715 -> 0 bytes .../22ed513d6a58054a_0 | Bin 23497 -> 0 bytes .../26f85a4dff718a8e_0 | Bin 240278 -> 0 bytes .../26f85a4dff718a8e_1 | Bin 588285 -> 0 bytes .../2813ef72e9650411_0 | Bin 14314 -> 0 bytes .../28b7eb6396fa4d6b_0 | Bin 14677 -> 0 bytes .../323cb44cb141b382_0 | Bin 7310 -> 0 bytes .../33d209fc507915fe_0 | Bin 1390 -> 0 bytes .../33d209fc507915fe_1 | Bin 1622 -> 0 bytes .../347dd6f38918ee04_0 | Bin 13505 -> 0 bytes .../3b6a9b9fd8e05f5c_0 | Bin 17789 -> 0 bytes .../3e6a00ff74ae9386_0 | Bin 6030 -> 0 bytes .../3f10a7efafddf14a_0 | Bin 1182454 -> 0 bytes .../3f10a7efafddf14a_1 | Bin 3200548 -> 0 bytes .../46d8ecb9987be4ce_0 | Bin 4718 -> 0 bytes .../481fa0c66ddec0b6_0 | Bin 8762 -> 0 bytes .../4c13bc11b8dbc101_0 | Bin 54713 -> 0 bytes .../4cc95acafe709be0_0 | Bin 241349 -> 0 bytes .../4cc95acafe709be0_1 | Bin 529994 -> 0 bytes .../4f172c3817a405dd_0 | Bin 6994 -> 0 bytes .../52c3a24bca405061_0 | Bin 1756 -> 0 bytes .../52c3a24bca405061_1 | Bin 2210 -> 0 bytes .../52e66d2b26a5f7dc_0 | Bin 86600 -> 0 bytes .../52ef80e11eb81c6c_0 | Bin 17539 -> 0 bytes .../55017344e7129e4f_0 | Bin 5181 -> 0 bytes .../55017344e7129e4f_1 | Bin 12697 -> 0 bytes .../583f36819ffe89d1_0 | Bin 31871 -> 0 bytes .../586b1b9d1a48c172_0 | Bin 1006242 -> 0 bytes .../586b1b9d1a48c172_1 | Bin 1780245 -> 0 bytes .../5a0a0f8e2f0a861c_0 | Bin 12447 -> 0 bytes .../5af21f46648da1ea_0 | Bin 15815 -> 0 bytes .../5e86944d7f1bb0e6_0 | Bin 5518 -> 0 bytes .../5f1675a86b62f9be_0 | Bin 13485 -> 0 bytes .../60449a8802448aef_0 | Bin 8020 -> 0 bytes .../615a77b72e968c89_0 | Bin 135536 -> 0 bytes .../615a77b72e968c89_1 | Bin 335574 -> 0 bytes .../6226d0dec43b599e_0 | Bin 17645 -> 0 bytes .../62d732e3f2717494_0 | Bin 1345473 -> 0 bytes .../62d732e3f2717494_1 | Bin 2450594 -> 0 bytes .../637522b941f01ebd_0 | Bin 34605 -> 0 bytes .../63a4c4e392ef79db_0 | Bin 16718 -> 0 bytes .../63a4c4e392ef79db_1 | Bin 40397 -> 0 bytes .../67bd9d03c0d05736_0 | Bin 13141 -> 0 bytes .../6eb90b3d58e5cfdb_0 | Bin 32325 -> 0 bytes .../70ca72818c980cb2_0 | Bin 11445 -> 0 bytes .../71564d5e50d67b7d_0 | Bin 10746 -> 0 bytes .../71da7f1782a5d72c_0 | Bin 316729 -> 0 bytes .../71da7f1782a5d72c_1 | Bin 648154 -> 0 bytes .../740ff11a684e162c_0 | Bin 15517 -> 0 bytes .../75c48dc4dda00eef_0 | Bin 17135 -> 0 bytes .../764c317f4113f80b_0 | Bin 1593 -> 0 bytes .../764c317f4113f80b_1 | Bin 1981 -> 0 bytes .../7a313c2d449c0976_0 | Bin 8919 -> 0 bytes .../7a313c2d449c0976_1 | Bin 8733 -> 0 bytes .../7ade3d42fb4302e2_0 | Bin 180673 -> 0 bytes .../7ade3d42fb4302e2_1 | Bin 396925 -> 0 bytes .../7b8986097a1886ab_0 | Bin 3869 -> 0 bytes .../7b8986097a1886ab_1 | Bin 6085 -> 0 bytes .../7c97795cbe1df3c1_0 | Bin 13361 -> 0 bytes .../7e399464258b3907_0 | Bin 8358 -> 0 bytes .../7eb276821699eaa7_0 | Bin 9066 -> 0 bytes .../7f659f57fef8475a_0 | Bin 326624 -> 0 bytes .../7f659f57fef8475a_1 | Bin 599050 -> 0 bytes .../80964424468d386e_0 | Bin 8721 -> 0 bytes .../81239d884ff0198c_0 | Bin 12637 -> 0 bytes .../82c172ad62fcff12_0 | Bin 13319 -> 0 bytes .../82cd4906ebd5eda2_0 | Bin 1467 -> 0 bytes .../82cd4906ebd5eda2_1 | Bin 1493 -> 0 bytes .../85afbe1d3465d2b6_0 | Bin 18079 -> 0 bytes .../87905c5b9ee6aea7_0 | Bin 14391 -> 0 bytes .../8903773b5330f7f4_0 | Bin 94199 -> 0 bytes .../89fdf6af2ee22665_0 | Bin 264985 -> 0 bytes .../89fdf6af2ee22665_1 | Bin 498794 -> 0 bytes .../8f8d5ea1a6537911_0 | Bin 19771 -> 0 bytes .../92fbdd92777f6b03_0 | Bin 25635 -> 0 bytes .../9ccc0d4c8548277a_0 | Bin 253727 -> 0 bytes .../9ccc0d4c8548277a_1 | Bin 478898 -> 0 bytes .../9de6a296704ffb84_0 | Bin 20713 -> 0 bytes .../a06fd660d3686847_0 | Bin 16001 -> 0 bytes .../a1f408b6e9cc2afe_0 | Bin 45038 -> 0 bytes .../a1f408b6e9cc2afe_1 | Bin 105565 -> 0 bytes .../a38476965a399589_0 | Bin 71272 -> 0 bytes .../a3eb2d13577642c0_0 | Bin 1242 -> 0 bytes .../a3eb2d13577642c0_1 | Bin 845 -> 0 bytes .../a47ba425ba4a9207_0 | Bin 27371 -> 0 bytes .../a8e751993ee89590_0 | Bin 24213 -> 0 bytes .../a95ded1ccf36dcef_0 | Bin 86662 -> 0 bytes .../a95ded1ccf36dcef_1 | Bin 193930 -> 0 bytes .../a99e87a1d8278b61_0 | Bin 9590 -> 0 bytes .../a99e87a1d8278b61_1 | Bin 24412 -> 0 bytes .../a9da1b65d3925796_0 | Bin 1346 -> 0 bytes .../a9da1b65d3925796_1 | Bin 1336 -> 0 bytes .../aba95e10ccf24d9c_0 | Bin 3846 -> 0 bytes .../aba95e10ccf24d9c_1 | Bin 7149 -> 0 bytes .../acdcb6b786a00cef_0 | Bin 1267 -> 0 bytes .../acdcb6b786a00cef_1 | Bin 676 -> 0 bytes .../ad7c8a325829963d_0 | Bin 1312 -> 0 bytes .../ad7c8a325829963d_1 | Bin 1306 -> 0 bytes .../ae7b24b5d89bf5d0_0 | Bin 1407 -> 0 bytes .../ae7b24b5d89bf5d0_1 | Bin 1788 -> 0 bytes .../b40d800f05cc7a96_0 | Bin 3952 -> 0 bytes .../b40d800f05cc7a96_1 | Bin 8286 -> 0 bytes .../b64d9747bc383caf_0 | Bin 10245 -> 0 bytes .../b64d9747bc383caf_1 | Bin 8830 -> 0 bytes .../b8cee710e3f6e98c_0 | Bin 7286 -> 0 bytes .../bad2f2a7534db05c_0 | Bin 20569 -> 0 bytes .../bc481626a1ef2420_0 | Bin 30399 -> 0 bytes .../bd210b1797761354_0 | Bin 13071 -> 0 bytes .../bd210b1797761354_1 | Bin 27669 -> 0 bytes .../be387f44b985c952_0 | Bin 17499 -> 0 bytes .../c0018e5fd591a1e0_0 | Bin 174203 -> 0 bytes .../c0018e5fd591a1e0_1 | Bin 290354 -> 0 bytes .../c2c13505b0b61977_0 | Bin 34103 -> 0 bytes .../c8ea23886d8cd93e_0 | Bin 15221 -> 0 bytes .../c955de13c32587de_0 | Bin 7078 -> 0 bytes .../ca131608b6e3d556_0 | Bin 32439 -> 0 bytes .../cb14199d558149cb_0 | Bin 17887 -> 0 bytes .../cb3a9b39482f3e6f_0 | Bin 1226 -> 0 bytes .../cb3a9b39482f3e6f_1 | Bin 845 -> 0 bytes .../cec40fe06223ffd3_0 | Bin 20775 -> 0 bytes .../d19b2a59c701a3a2_0 | Bin 29167 -> 0 bytes .../d45d23271b9fde02_0 | Bin 109844 -> 0 bytes .../d45d23271b9fde02_1 | Bin 196933 -> 0 bytes .../d4f2d77b98baddfb_0 | Bin 13425 -> 0 bytes .../d9a194d076f4af72_0 | Bin 11965 -> 0 bytes .../e17034bf986fe4a3_0 | Bin 52461 -> 0 bytes .../e1910354c99b1c01_0 | Bin 11683 -> 0 bytes .../e2cac9081a306121_0 | Bin 8828 -> 0 bytes .../e47d3c110a9907d5_0 | Bin 12423 -> 0 bytes .../e89271bd968c1b47_0 | Bin 6566 -> 0 bytes .../e9f22c100d18f5b6_0 | Bin 7588 -> 0 bytes .../ed9590e449ea0c3e_0 | Bin 26419 -> 0 bytes .../f1a95df9104e907b_0 | Bin 20511 -> 0 bytes .../f337c1ecab661205_0 | Bin 126770 -> 0 bytes .../f337c1ecab661205_1 | Bin 356954 -> 0 bytes .../f349693c28b74bea_0 | Bin 6302 -> 0 bytes .../f59a421f9c227f1f_0 | Bin 44825 -> 0 bytes .../f59a421f9c227f1f_1 | Bin 127365 -> 0 bytes .../f8366850a5a94fb3_0 | Bin 376991 -> 0 bytes .../f8366850a5a94fb3_1 | Bin 989130 -> 0 bytes .../f8e776ad01429482_0 | Bin 8022 -> 0 bytes .../f9e9a4904919eda8_0 | Bin 30997 -> 0 bytes .../c805c447-65eb-4963-b76b-7f9f51d54ba8/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 3000 -> 0 bytes .../2bf5aec11725b9a2_0 | Bin 12535 -> 0 bytes .../d7b2c210-d890-4eb6-8b3b-d7292b78600b/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 72 -> 0 bytes .../index.txt | Bin 325 -> 0 bytes .../Default/Service Worker/Database/000007.log | Bin 294611 -> 0 bytes .../Default/Service Worker/Database/000009.ldb | Bin 24166 -> 0 bytes .../Default/Service Worker/Database/CURRENT | 1 - .../Default/Service Worker/Database/LOCK | 0 .../Default/Service Worker/Database/LOG | 3 - .../Default/Service Worker/Database/LOG.old | 3 - .../Service Worker/Database/MANIFEST-000001 | Bin 281 -> 0 bytes .../Service Worker/ScriptCache/013888a1cda32b90_0 | Bin 33249 -> 0 bytes .../Service Worker/ScriptCache/013888a1cda32b90_1 | Bin 35793 -> 0 bytes .../Service Worker/ScriptCache/013c368bb699d56f_0 | Bin 1813 -> 0 bytes .../Service Worker/ScriptCache/044af04d79c148c3_0 | Bin 9615 -> 0 bytes .../Service Worker/ScriptCache/058316883d2f7b71_0 | Bin 106502 -> 0 bytes .../Service Worker/ScriptCache/058316883d2f7b71_1 | Bin 280243 -> 0 bytes .../Service Worker/ScriptCache/06940ca2418e5f06_0 | Bin 2964 -> 0 bytes .../Service Worker/ScriptCache/06940ca2418e5f06_1 | Bin 4891 -> 0 bytes .../Service Worker/ScriptCache/08b99d499107ba17_0 | Bin 6218 -> 0 bytes .../Service Worker/ScriptCache/08b99d499107ba17_1 | Bin 6906 -> 0 bytes .../Service Worker/ScriptCache/0ae129c33e7a30bd_0 | Bin 11263 -> 0 bytes .../Service Worker/ScriptCache/0ae129c33e7a30bd_1 | Bin 18482 -> 0 bytes .../Service Worker/ScriptCache/0c44624093b66f53_0 | Bin 15621 -> 0 bytes .../Service Worker/ScriptCache/0c44624093b66f53_1 | Bin 47723 -> 0 bytes .../Service Worker/ScriptCache/0caade6fa2d8bf23_0 | Bin 33252 -> 0 bytes .../Service Worker/ScriptCache/0caade6fa2d8bf23_1 | Bin 35796 -> 0 bytes .../Service Worker/ScriptCache/0cf3f179800b4457_0 | Bin 2124 -> 0 bytes .../Service Worker/ScriptCache/0da13b1c038160d5_0 | Bin 4241 -> 0 bytes .../Service Worker/ScriptCache/0da13b1c038160d5_1 | Bin 4956 -> 0 bytes .../Service Worker/ScriptCache/102500d27cb32586_0 | Bin 1847 -> 0 bytes .../Service Worker/ScriptCache/1182effa8ada5d43_0 | Bin 1600 -> 0 bytes .../Service Worker/ScriptCache/1306f5f30c73c0b3_0 | Bin 5852 -> 0 bytes .../Service Worker/ScriptCache/1306f5f30c73c0b3_1 | Bin 8531 -> 0 bytes .../Service Worker/ScriptCache/133ea22e2bddfb76_0 | Bin 1344 -> 0 bytes .../Service Worker/ScriptCache/135d7a5f7d09ad8d_0 | Bin 966 -> 0 bytes .../Service Worker/ScriptCache/1519277bde6e6fcc_0 | Bin 4981 -> 0 bytes .../Service Worker/ScriptCache/156dd7d6254da5d0_0 | Bin 16824 -> 0 bytes .../Service Worker/ScriptCache/156dd7d6254da5d0_1 | Bin 11956 -> 0 bytes .../Service Worker/ScriptCache/1837eff123ca8ac2_0 | Bin 1787 -> 0 bytes .../Service Worker/ScriptCache/18a1561446ac93fd_0 | Bin 8528 -> 0 bytes .../Service Worker/ScriptCache/18a1561446ac93fd_1 | Bin 5988 -> 0 bytes .../Service Worker/ScriptCache/18f9d5c11737329d_0 | Bin 3142 -> 0 bytes .../Service Worker/ScriptCache/1b02c078a626147f_0 | Bin 1409 -> 0 bytes .../Service Worker/ScriptCache/1b7188623db21aac_0 | Bin 917 -> 0 bytes .../Service Worker/ScriptCache/1cd36d092513b214_0 | Bin 17572 -> 0 bytes .../Service Worker/ScriptCache/1cd36d092513b214_1 | Bin 14988 -> 0 bytes .../Service Worker/ScriptCache/1e16eb87c66b3350_0 | Bin 5990 -> 0 bytes .../Service Worker/ScriptCache/1e16eb87c66b3350_1 | Bin 13395 -> 0 bytes .../Service Worker/ScriptCache/1eb3a60cf0b1da7e_0 | Bin 4790 -> 0 bytes .../Service Worker/ScriptCache/218b8a4c9ede14e1_0 | Bin 3464 -> 0 bytes .../Service Worker/ScriptCache/23469ac906fcc612_0 | Bin 15620 -> 0 bytes .../Service Worker/ScriptCache/23469ac906fcc612_1 | Bin 47722 -> 0 bytes .../Service Worker/ScriptCache/2379a50f1c0e50dd_0 | Bin 6559 -> 0 bytes .../Service Worker/ScriptCache/24c9909851fc5926_0 | Bin 8465 -> 0 bytes .../Service Worker/ScriptCache/251821f6166076c1_0 | Bin 1377 -> 0 bytes .../Service Worker/ScriptCache/251821f6166076c1_1 | Bin 1692 -> 0 bytes .../Service Worker/ScriptCache/262d13b3e17ceba1_0 | Bin 745 -> 0 bytes .../Service Worker/ScriptCache/26668990994d0f6b_0 | Bin 18214 -> 0 bytes .../Service Worker/ScriptCache/2853a1a255877bcc_0 | Bin 2233 -> 0 bytes .../Service Worker/ScriptCache/297ecea5cebb5dfe_0 | Bin 4238 -> 0 bytes .../Service Worker/ScriptCache/297ecea5cebb5dfe_1 | Bin 4953 -> 0 bytes .../Service Worker/ScriptCache/2a069ed0a4ed1071_0 | Bin 5695 -> 0 bytes .../Service Worker/ScriptCache/2a0afd649b00527b_0 | Bin 15265 -> 0 bytes .../Service Worker/ScriptCache/2a0afd649b00527b_1 | Bin 20274 -> 0 bytes .../Service Worker/ScriptCache/2a517dc2cdf7e28c_0 | Bin 8596 -> 0 bytes .../Service Worker/ScriptCache/2a9ed1164ac67a36_0 | Bin 5059 -> 0 bytes .../Service Worker/ScriptCache/2b8d5c4c22ca4073_0 | Bin 1073 -> 0 bytes .../Service Worker/ScriptCache/2cc80dabc69f58b6_0 | Bin 2287 -> 0 bytes .../Service Worker/ScriptCache/2ddf14d3ae0c5805_0 | Bin 29134 -> 0 bytes .../Service Worker/ScriptCache/2ed4c1475f68895f_0 | Bin 15597 -> 0 bytes .../Service Worker/ScriptCache/2ed4c1475f68895f_1 | Bin 21684 -> 0 bytes .../Service Worker/ScriptCache/3141fac51b5d083a_0 | Bin 4957 -> 0 bytes .../Service Worker/ScriptCache/3304de7a95b9153f_0 | Bin 720 -> 0 bytes .../Service Worker/ScriptCache/3382c1aeee847b7c_0 | Bin 1327 -> 0 bytes .../Service Worker/ScriptCache/36178b75a421e259_0 | Bin 2555 -> 0 bytes .../Service Worker/ScriptCache/37ba206b0e1633f3_0 | Bin 528261 -> 0 bytes .../Service Worker/ScriptCache/37ba206b0e1633f3_1 | Bin 715395 -> 0 bytes .../Service Worker/ScriptCache/3833d80714f52830_0 | Bin 877 -> 0 bytes .../Service Worker/ScriptCache/385b1e42bf04aac1_0 | Bin 7697 -> 0 bytes .../Service Worker/ScriptCache/385b1e42bf04aac1_1 | Bin 5355 -> 0 bytes .../Service Worker/ScriptCache/38ec7f73738fd2c6_0 | Bin 115894 -> 0 bytes .../Service Worker/ScriptCache/38ec7f73738fd2c6_1 | Bin 282932 -> 0 bytes .../Service Worker/ScriptCache/3993e359829516e8_0 | Bin 862 -> 0 bytes .../Service Worker/ScriptCache/3bc9470215d17382_0 | Bin 923 -> 0 bytes .../Service Worker/ScriptCache/3c6f2beab5d0ce26_0 | Bin 2904 -> 0 bytes .../Service Worker/ScriptCache/3c927e1978087ebb_0 | Bin 23593 -> 0 bytes .../Service Worker/ScriptCache/3c927e1978087ebb_1 | Bin 73660 -> 0 bytes .../Service Worker/ScriptCache/3e125fa608da7bad_0 | Bin 2671 -> 0 bytes .../Service Worker/ScriptCache/3e3f9622d382869d_0 | Bin 1730 -> 0 bytes .../Service Worker/ScriptCache/41e788d966e1d2b1_0 | Bin 8649 -> 0 bytes .../Service Worker/ScriptCache/41e8252939530d43_0 | Bin 5022 -> 0 bytes .../Service Worker/ScriptCache/41f6befdd9fcc98c_0 | Bin 1051 -> 0 bytes .../Service Worker/ScriptCache/4370832a070f5278_0 | Bin 6610 -> 0 bytes .../Service Worker/ScriptCache/4370832a070f5278_1 | Bin 6988 -> 0 bytes .../Service Worker/ScriptCache/4380d6a2dda10611_0 | Bin 3916 -> 0 bytes .../Service Worker/ScriptCache/4380d6a2dda10611_1 | Bin 4651 -> 0 bytes .../Service Worker/ScriptCache/442d051c77d2449e_0 | Bin 28022 -> 0 bytes .../Service Worker/ScriptCache/442d051c77d2449e_1 | Bin 60435 -> 0 bytes .../Service Worker/ScriptCache/44432df713ea1c72_0 | Bin 1640 -> 0 bytes .../Service Worker/ScriptCache/44aed90cfbcd8d61_0 | Bin 2575 -> 0 bytes .../Service Worker/ScriptCache/4577271cd6fb65a1_0 | Bin 266104 -> 0 bytes .../Service Worker/ScriptCache/4577271cd6fb65a1_1 | Bin 277523 -> 0 bytes .../Service Worker/ScriptCache/45b6179ac51ed29f_0 | Bin 739 -> 0 bytes .../Service Worker/ScriptCache/45c2f2fcb9072b47_0 | Bin 5851 -> 0 bytes .../Service Worker/ScriptCache/45c2f2fcb9072b47_1 | Bin 8578 -> 0 bytes .../Service Worker/ScriptCache/4698ecea4d4dad56_0 | Bin 343694 -> 0 bytes .../Service Worker/ScriptCache/4698ecea4d4dad56_1 | Bin 708059 -> 0 bytes .../Service Worker/ScriptCache/47a019969919f990_0 | Bin 852 -> 0 bytes .../Service Worker/ScriptCache/48aa8aea80d750f3_0 | Bin 2489 -> 0 bytes .../Service Worker/ScriptCache/48c4922ed6998d89_0 | Bin 9690 -> 0 bytes .../Service Worker/ScriptCache/48ce8f1371d5128c_0 | Bin 5300 -> 0 bytes .../Service Worker/ScriptCache/48ce8f1371d5128c_1 | Bin 5780 -> 0 bytes .../Service Worker/ScriptCache/49c299409541c61c_0 | Bin 7112 -> 0 bytes .../Service Worker/ScriptCache/49c299409541c61c_1 | Bin 16235 -> 0 bytes .../Service Worker/ScriptCache/49cfac9a80742bc0_0 | Bin 6060 -> 0 bytes .../Service Worker/ScriptCache/49cfac9a80742bc0_1 | Bin 4507 -> 0 bytes .../Service Worker/ScriptCache/4b8a113942c539ab_0 | Bin 10653 -> 0 bytes .../Service Worker/ScriptCache/4b8a113942c539ab_1 | Bin 19524 -> 0 bytes .../Service Worker/ScriptCache/4cb013792b196a35_0 | Bin 10462 -> 0 bytes .../Service Worker/ScriptCache/4cb013792b196a35_1 | Bin 20417 -> 0 bytes .../Service Worker/ScriptCache/4dfa3ff2fb787575_0 | Bin 1880 -> 0 bytes .../Service Worker/ScriptCache/50ea35dd219cf76e_0 | Bin 706 -> 0 bytes .../Service Worker/ScriptCache/5219fc78e566a322_0 | Bin 1389 -> 0 bytes .../Service Worker/ScriptCache/5225b9a2d2e15e1b_0 | Bin 1301 -> 0 bytes .../Service Worker/ScriptCache/57991272965254a5_0 | Bin 3483 -> 0 bytes .../Service Worker/ScriptCache/57991272965254a5_1 | Bin 4524 -> 0 bytes .../Service Worker/ScriptCache/59075d360e8ed9ea_0 | Bin 7019 -> 0 bytes .../Service Worker/ScriptCache/59075d360e8ed9ea_1 | Bin 9292 -> 0 bytes .../Service Worker/ScriptCache/5bc80cbabea43230_0 | Bin 14852 -> 0 bytes .../Service Worker/ScriptCache/5eb8846211eed115_0 | Bin 1797 -> 0 bytes .../Service Worker/ScriptCache/5ff352a104083529_0 | Bin 876 -> 0 bytes .../Service Worker/ScriptCache/60208d9987ff8fb0_0 | Bin 10465 -> 0 bytes .../Service Worker/ScriptCache/60208d9987ff8fb0_1 | Bin 20420 -> 0 bytes .../Service Worker/ScriptCache/61776f09435f6376_0 | Bin 1838 -> 0 bytes .../Service Worker/ScriptCache/618cf8002a861737_0 | Bin 7917 -> 0 bytes .../Service Worker/ScriptCache/61a7051dfbbcebbe_0 | Bin 782 -> 0 bytes .../Service Worker/ScriptCache/61f9776f3858baff_0 | Bin 196896 -> 0 bytes .../Service Worker/ScriptCache/61f9776f3858baff_1 | Bin 509132 -> 0 bytes .../Service Worker/ScriptCache/637002b0fd0607b7_0 | Bin 13100 -> 0 bytes .../Service Worker/ScriptCache/639d390b781e80ba_0 | Bin 1230 -> 0 bytes .../Service Worker/ScriptCache/63a0df86fcaca4f0_0 | Bin 1307 -> 0 bytes .../Service Worker/ScriptCache/65490edda5ace1d4_0 | Bin 8106 -> 0 bytes .../Service Worker/ScriptCache/65f57298359ce817_0 | Bin 1326 -> 0 bytes .../Service Worker/ScriptCache/665a1c6935535837_0 | Bin 3862 -> 0 bytes .../Service Worker/ScriptCache/665a1c6935535837_1 | Bin 6380 -> 0 bytes .../Service Worker/ScriptCache/66e98b5df3810dc6_0 | Bin 1477 -> 0 bytes .../Service Worker/ScriptCache/67a473248953641b_0 | Bin 18805 -> 0 bytes .../Service Worker/ScriptCache/67a473248953641b_1 | Bin 39081 -> 0 bytes .../Service Worker/ScriptCache/6c038e3570d6abf1_0 | Bin 5851 -> 0 bytes .../Service Worker/ScriptCache/6c038e3570d6abf1_1 | Bin 8578 -> 0 bytes .../Service Worker/ScriptCache/6f14b1eea746d0f6_0 | Bin 5528 -> 0 bytes .../Service Worker/ScriptCache/6f8ac775dbbd7415_0 | Bin 15620 -> 0 bytes .../Service Worker/ScriptCache/6f8ac775dbbd7415_1 | Bin 47906 -> 0 bytes .../Service Worker/ScriptCache/6f95edaef805d54f_0 | Bin 1519 -> 0 bytes .../Service Worker/ScriptCache/707c04bd94e53f60_0 | Bin 920 -> 0 bytes .../Service Worker/ScriptCache/7279dabb794b7bae_0 | Bin 14252 -> 0 bytes .../Service Worker/ScriptCache/7279dabb794b7bae_1 | Bin 33595 -> 0 bytes .../Service Worker/ScriptCache/736704c0a29ba0bd_0 | Bin 8816 -> 0 bytes .../Service Worker/ScriptCache/736704c0a29ba0bd_1 | Bin 2460 -> 0 bytes .../Service Worker/ScriptCache/75e158edced18ccc_0 | Bin 2179 -> 0 bytes .../Service Worker/ScriptCache/7786daf1823b575f_0 | Bin 512 -> 0 bytes .../Service Worker/ScriptCache/77d633a988788881_0 | Bin 3732 -> 0 bytes .../Service Worker/ScriptCache/77d633a988788881_1 | Bin 8140 -> 0 bytes .../Service Worker/ScriptCache/7911bddc8bea7af4_0 | Bin 1715 -> 0 bytes .../Service Worker/ScriptCache/7aa3cc8cc182ec3a_0 | Bin 115898 -> 0 bytes .../Service Worker/ScriptCache/7aa3cc8cc182ec3a_1 | Bin 282948 -> 0 bytes .../Service Worker/ScriptCache/7b4fd8111178d5b1_0 | Bin 3481 -> 0 bytes .../Service Worker/ScriptCache/7b4fd8111178d5b1_1 | Bin 4522 -> 0 bytes .../Service Worker/ScriptCache/800dc39137124ad7_0 | Bin 831 -> 0 bytes .../Service Worker/ScriptCache/8028206cd4382304_0 | Bin 2734 -> 0 bytes .../Service Worker/ScriptCache/80a7e74d1ee47371_0 | Bin 2925 -> 0 bytes .../Service Worker/ScriptCache/82d24e583257c1c5_0 | Bin 2507 -> 0 bytes .../Service Worker/ScriptCache/8459336f6f977b26_0 | Bin 34831 -> 0 bytes .../Service Worker/ScriptCache/846b510cc1d358ab_0 | Bin 16288 -> 0 bytes .../Service Worker/ScriptCache/846b510cc1d358ab_1 | Bin 14100 -> 0 bytes .../Service Worker/ScriptCache/847183a1bce65cbf_0 | Bin 12784 -> 0 bytes .../Service Worker/ScriptCache/861d3746da596b9a_0 | Bin 646 -> 0 bytes .../Service Worker/ScriptCache/865231c3208b5685_0 | Bin 18693 -> 0 bytes .../Service Worker/ScriptCache/865231c3208b5685_1 | Bin 9604 -> 0 bytes .../Service Worker/ScriptCache/873e9f02dffd15b6_0 | Bin 3376 -> 0 bytes .../Service Worker/ScriptCache/88982711b7d82f98_0 | Bin 2964 -> 0 bytes .../Service Worker/ScriptCache/88982711b7d82f98_1 | Bin 4891 -> 0 bytes .../Service Worker/ScriptCache/8971dc0438cf7b2a_0 | Bin 16296 -> 0 bytes .../Service Worker/ScriptCache/8971dc0438cf7b2a_1 | Bin 19468 -> 0 bytes .../Service Worker/ScriptCache/8b239658a7e04d63_0 | Bin 1061 -> 0 bytes .../Service Worker/ScriptCache/8b30f5d03f19b568_0 | Bin 127144 -> 0 bytes .../Service Worker/ScriptCache/8b30f5d03f19b568_1 | Bin 159667 -> 0 bytes .../Service Worker/ScriptCache/8f26a0435b41626a_0 | Bin 2138 -> 0 bytes .../Service Worker/ScriptCache/937b79c00dbacc65_0 | Bin 12147 -> 0 bytes .../Service Worker/ScriptCache/937b79c00dbacc65_1 | Bin 10380 -> 0 bytes .../Service Worker/ScriptCache/93b5bc142742612c_0 | Bin 820 -> 0 bytes .../Service Worker/ScriptCache/93e5ba12e112ee93_0 | Bin 1698 -> 0 bytes .../Service Worker/ScriptCache/93e5ba12e112ee93_1 | Bin 3420 -> 0 bytes .../Service Worker/ScriptCache/968ee480c8880ee9_0 | Bin 22321 -> 0 bytes .../Service Worker/ScriptCache/968ee480c8880ee9_1 | Bin 69460 -> 0 bytes .../Service Worker/ScriptCache/97cb728504835ecb_0 | Bin 2808 -> 0 bytes .../Service Worker/ScriptCache/98e1039cb5a6108c_0 | Bin 486 -> 0 bytes .../Service Worker/ScriptCache/9a167328c6f2005d_0 | Bin 6967 -> 0 bytes .../Service Worker/ScriptCache/9a167328c6f2005d_1 | Bin 12923 -> 0 bytes .../Service Worker/ScriptCache/9cedebd2aa2a8bfe_0 | Bin 754 -> 0 bytes .../Service Worker/ScriptCache/9cfaf0ec6926b991_0 | Bin 1299 -> 0 bytes .../Service Worker/ScriptCache/a0650cda674494c6_0 | Bin 641 -> 0 bytes .../Service Worker/ScriptCache/a2c521dd01eb7b29_0 | Bin 927 -> 0 bytes .../Service Worker/ScriptCache/a2e0dddeb7e07def_0 | Bin 6967 -> 0 bytes .../Service Worker/ScriptCache/a2e0dddeb7e07def_1 | Bin 12923 -> 0 bytes .../Service Worker/ScriptCache/a488f7c1117c460d_0 | Bin 918 -> 0 bytes .../Service Worker/ScriptCache/a8d410c09eb9cf3f_0 | Bin 4522 -> 0 bytes .../Service Worker/ScriptCache/a8d410c09eb9cf3f_1 | Bin 11395 -> 0 bytes .../Service Worker/ScriptCache/a9654014163cf1c9_0 | Bin 512 -> 0 bytes .../Service Worker/ScriptCache/a9b253918c822073_0 | Bin 4017 -> 0 bytes .../Service Worker/ScriptCache/a9b253918c822073_1 | Bin 10427 -> 0 bytes .../Service Worker/ScriptCache/ad2345239280bb7d_0 | Bin 2630 -> 0 bytes .../Service Worker/ScriptCache/ad2345239280bb7d_1 | Bin 2500 -> 0 bytes .../Service Worker/ScriptCache/af55a8299c730493_0 | Bin 1538 -> 0 bytes .../Service Worker/ScriptCache/b09a5c3ec15d02fe_0 | Bin 1514 -> 0 bytes .../Service Worker/ScriptCache/b09b50d0915775fa_0 | Bin 2504 -> 0 bytes .../Service Worker/ScriptCache/b09b50d0915775fa_1 | Bin 3651 -> 0 bytes .../Service Worker/ScriptCache/b0d982546e6fd609_0 | Bin 878 -> 0 bytes .../Service Worker/ScriptCache/b30f9f370e7094d0_0 | Bin 22237 -> 0 bytes .../Service Worker/ScriptCache/b30f9f370e7094d0_1 | Bin 31643 -> 0 bytes .../Service Worker/ScriptCache/b3bd0d67f800d222_0 | Bin 16513 -> 0 bytes .../Service Worker/ScriptCache/b3bd0d67f800d222_1 | Bin 11298 -> 0 bytes .../Service Worker/ScriptCache/b3e65c650ab5942a_0 | Bin 3507 -> 0 bytes .../Service Worker/ScriptCache/b6c28cea6ed9dfc1_0 | Bin 16293 -> 0 bytes .../Service Worker/ScriptCache/b6c28cea6ed9dfc1_1 | Bin 19465 -> 0 bytes .../Service Worker/ScriptCache/b93974c97934366d_0 | Bin 599 -> 0 bytes .../Service Worker/ScriptCache/ba23d8ecda68de77_0 | Bin 12144 -> 0 bytes .../Service Worker/ScriptCache/ba23d8ecda68de77_1 | Bin 10377 -> 0 bytes .../Service Worker/ScriptCache/bdbe39f12b00f185_0 | Bin 6227 -> 0 bytes .../Service Worker/ScriptCache/be27c224b9670b51_0 | Bin 4675 -> 0 bytes .../Service Worker/ScriptCache/be27c224b9670b51_1 | Bin 7220 -> 0 bytes .../Service Worker/ScriptCache/c13416c921dc154c_0 | Bin 242324 -> 0 bytes .../Service Worker/ScriptCache/c1ab05be02305eff_0 | Bin 9679 -> 0 bytes .../Service Worker/ScriptCache/c1ab05be02305eff_1 | Bin 10028 -> 0 bytes .../Service Worker/ScriptCache/c2492db79fbf160c_0 | Bin 11265 -> 0 bytes .../Service Worker/ScriptCache/c2492db79fbf160c_1 | Bin 18484 -> 0 bytes .../Service Worker/ScriptCache/c3f9ec8c3e713cc5_0 | Bin 17750 -> 0 bytes .../Service Worker/ScriptCache/c3f9ec8c3e713cc5_1 | Bin 13372 -> 0 bytes .../Service Worker/ScriptCache/c5a4cfa87c7c50b5_0 | Bin 1849 -> 0 bytes .../Service Worker/ScriptCache/c5d06df2762160e6_0 | Bin 979 -> 0 bytes .../Service Worker/ScriptCache/c60ff07b0bc639c4_0 | Bin 3916 -> 0 bytes .../Service Worker/ScriptCache/c60ff07b0bc639c4_1 | Bin 4651 -> 0 bytes .../Service Worker/ScriptCache/c973a21200a54441_0 | Bin 15267 -> 0 bytes .../Service Worker/ScriptCache/c973a21200a54441_1 | Bin 20276 -> 0 bytes .../Service Worker/ScriptCache/c97f65652744cac9_0 | Bin 7006 -> 0 bytes .../Service Worker/ScriptCache/c97f65652744cac9_1 | Bin 23787 -> 0 bytes .../Service Worker/ScriptCache/cea5e6b4823220b0_0 | Bin 1336 -> 0 bytes .../Service Worker/ScriptCache/d0757ff92c7cde0a_0 | Bin 1374 -> 0 bytes .../Service Worker/ScriptCache/d0757ff92c7cde0a_1 | Bin 1689 -> 0 bytes .../Service Worker/ScriptCache/d1c5a6f87b5d4042_0 | Bin 8969 -> 0 bytes .../Service Worker/ScriptCache/d1c5a6f87b5d4042_1 | Bin 1675 -> 0 bytes .../Service Worker/ScriptCache/d2198e059a41357f_0 | Bin 11087 -> 0 bytes .../Service Worker/ScriptCache/d36fc470bdd7f429_0 | Bin 1189 -> 0 bytes .../Service Worker/ScriptCache/d65585c00d45a9d6_0 | Bin 2059 -> 0 bytes .../Service Worker/ScriptCache/d6b591bec2d594eb_0 | Bin 3916 -> 0 bytes .../Service Worker/ScriptCache/d6b591bec2d594eb_1 | Bin 4651 -> 0 bytes .../Service Worker/ScriptCache/da27569d3d1a7cdd_0 | Bin 6967 -> 0 bytes .../Service Worker/ScriptCache/da27569d3d1a7cdd_1 | Bin 12923 -> 0 bytes .../Service Worker/ScriptCache/da87291b30ec3507_0 | Bin 2128 -> 0 bytes .../Service Worker/ScriptCache/daadf5d778c3fc98_0 | Bin 180618 -> 0 bytes .../Service Worker/ScriptCache/daadf5d778c3fc98_1 | Bin 320491 -> 0 bytes .../Service Worker/ScriptCache/dc8bb2c9e691ca89_0 | Bin 7082 -> 0 bytes .../Service Worker/ScriptCache/dc94ed7d050cb174_0 | Bin 2242 -> 0 bytes .../Service Worker/ScriptCache/dcfd308173202e57_0 | Bin 16999 -> 0 bytes .../Service Worker/ScriptCache/dcfd308173202e57_1 | Bin 24019 -> 0 bytes .../Service Worker/ScriptCache/deb216933b22f3a2_0 | Bin 2055 -> 0 bytes .../Service Worker/ScriptCache/df442983f76b6c89_0 | Bin 2742 -> 0 bytes .../Service Worker/ScriptCache/df442983f76b6c89_1 | Bin 3244 -> 0 bytes .../Service Worker/ScriptCache/e0d37c7e54672663_0 | Bin 196463 -> 0 bytes .../Service Worker/ScriptCache/e0d37c7e54672663_1 | Bin 507530 -> 0 bytes .../Service Worker/ScriptCache/e15adf968423321d_0 | Bin 843 -> 0 bytes .../Service Worker/ScriptCache/e37b8c477f6fe7a9_0 | Bin 721 -> 0 bytes .../Service Worker/ScriptCache/e3979a9d78d5c89b_0 | Bin 8711 -> 0 bytes .../Service Worker/ScriptCache/e3979a9d78d5c89b_1 | Bin 14796 -> 0 bytes .../Service Worker/ScriptCache/e460f9049ee39b22_0 | Bin 1127 -> 0 bytes .../Service Worker/ScriptCache/e6f09094666ade67_0 | Bin 1126 -> 0 bytes .../Service Worker/ScriptCache/e77053106e8f6f41_0 | Bin 853 -> 0 bytes .../Service Worker/ScriptCache/e7726bec88acbf74_0 | Bin 721 -> 0 bytes .../Service Worker/ScriptCache/e7ba459eae573b73_0 | Bin 2964 -> 0 bytes .../Service Worker/ScriptCache/e7ba459eae573b73_1 | Bin 4891 -> 0 bytes .../Service Worker/ScriptCache/e873ff2e7f852ba0_0 | Bin 6006 -> 0 bytes .../Service Worker/ScriptCache/e91a0f790c9df598_0 | Bin 1759 -> 0 bytes .../Service Worker/ScriptCache/e99eef6b57f9df36_0 | Bin 784 -> 0 bytes .../Service Worker/ScriptCache/ed17bb8e4740c3e9_0 | Bin 1558 -> 0 bytes .../Service Worker/ScriptCache/ed17bb8e4740c3e9_1 | Bin 3764 -> 0 bytes .../Service Worker/ScriptCache/f0fcc6432fd8ca09_0 | Bin 8482 -> 0 bytes .../Service Worker/ScriptCache/f116add86d0557b9_0 | Bin 511 -> 0 bytes .../Service Worker/ScriptCache/f1216cf7d8c3ccde_0 | Bin 6220 -> 0 bytes .../Service Worker/ScriptCache/f1216cf7d8c3ccde_1 | Bin 6908 -> 0 bytes .../Service Worker/ScriptCache/f1cdccba37924bda_0 | Bin 7016 -> 0 bytes .../Service Worker/ScriptCache/f1cdccba37924bda_1 | Bin 9289 -> 0 bytes .../Service Worker/ScriptCache/f214e160a00f6106_0 | Bin 754 -> 0 bytes .../Service Worker/ScriptCache/f272a321bf472b2a_0 | Bin 5374 -> 0 bytes .../Service Worker/ScriptCache/f272a321bf472b2a_1 | Bin 14731 -> 0 bytes .../Service Worker/ScriptCache/f3ab1e1292e135fa_0 | Bin 4673 -> 0 bytes .../Service Worker/ScriptCache/f3ab1e1292e135fa_1 | Bin 7218 -> 0 bytes .../Service Worker/ScriptCache/f54ae869079af26d_0 | Bin 1000 -> 0 bytes .../Service Worker/ScriptCache/f8306af1c2f7efd3_0 | Bin 3127 -> 0 bytes .../Service Worker/ScriptCache/f8849e5234771dfc_0 | Bin 18808 -> 0 bytes .../Service Worker/ScriptCache/f8849e5234771dfc_1 | Bin 39084 -> 0 bytes .../Service Worker/ScriptCache/f8f4f7ce6eb8619a_0 | Bin 512 -> 0 bytes .../Service Worker/ScriptCache/fa813c9ad67834ac_0 | Bin 1695 -> 0 bytes .../Service Worker/ScriptCache/fa813c9ad67834ac_1 | Bin 3417 -> 0 bytes .../Service Worker/ScriptCache/fd04e5d80307ab5a_0 | Bin 9504 -> 0 bytes .../Default/Service Worker/ScriptCache/index | Bin 24 -> 0 bytes .../ScriptCache/index-dir/the-real-index | Bin 4992 -> 0 bytes .../Default/Session Storage/000013.ldb | Bin 7898 -> 0 bytes .../Default/Session Storage/000014.log | Bin 21665 -> 0 bytes .../Default/Session Storage/000015.ldb | Bin 567948 -> 0 bytes .../Default/Session Storage/CURRENT | 1 - .../net.imput.helium/Default/Session Storage/LOCK | 0 .../net.imput.helium/Default/Session Storage/LOG | 3 - .../Default/Session Storage/LOG.old | 17 - .../Default/Session Storage/MANIFEST-000001 | Bin 527 -> 0 bytes .../Default/Sessions/Apps_13429354763444062 | Bin 40375 -> 0 bytes .../Default/Sessions/Session_13429447592291549 | Bin 320947 -> 0 bytes .../Default/Sessions/Session_13429451449494174 | Bin 348417 -> 0 bytes .../Default/Sessions/Session_13429451931588978 | Bin 306500 -> 0 bytes .../Default/Sessions/Tabs_13429437726762262 | Bin 586742 -> 0 bytes .../Default/Sessions/Tabs_13429450809425290 | Bin 455094 -> 0 bytes .../Default/Shared Dictionary/cache/index | Bin 24 -> 0 bytes .../cache/index-dir/the-real-index | Bin 48 -> 0 bytes .../net.imput.helium/Default/Shared Dictionary/db | Bin 45056 -> 0 bytes .../Default/Shared Dictionary/db-journal | 0 .../.config/net.imput.helium/Default/SharedStorage | Bin 4096 -> 0 bytes .../net.imput.helium/Default/SharedStorage-wal | 0 .../.config/net.imput.helium/Default/Shortcuts | Bin 110592 -> 0 bytes .../net.imput.helium/Default/Shortcuts-journal | 0 .../Site Characteristics Database/000003.log | Bin 84918 -> 0 bytes .../Default/Site Characteristics Database/CURRENT | 1 - .../Default/Site Characteristics Database/LOCK | 0 .../Default/Site Characteristics Database/LOG | 3 - .../Default/Site Characteristics Database/LOG.old | 3 - .../Site Characteristics Database/MANIFEST-000001 | Bin 41 -> 0 bytes .../Default/Sync Data/LevelDB/000003.log | Bin 83123 -> 0 bytes .../Default/Sync Data/LevelDB/CURRENT | 1 - .../Default/Sync Data/LevelDB/LOCK | 0 .../net.imput.helium/Default/Sync Data/LevelDB/LOG | 3 - .../Default/Sync Data/LevelDB/LOG.old | 3 - .../Default/Sync Data/LevelDB/MANIFEST-000001 | Bin 41 -> 0 bytes .../dbepggeogbaibhgnhhndojpepiihcmeb/000003.log | Bin 188 -> 0 bytes .../dbepggeogbaibhgnhhndojpepiihcmeb/CURRENT | 1 - .../dbepggeogbaibhgnhhndojpepiihcmeb/LOCK | 0 .../dbepggeogbaibhgnhhndojpepiihcmeb/LOG | 3 - .../dbepggeogbaibhgnhhndojpepiihcmeb/LOG.old | 3 - .../MANIFEST-000001 | Bin 41 -> 0 bytes .../eimadpbcbfnmbkopoojfekhnkhdbieeh/000003.log | Bin 6287 -> 0 bytes .../eimadpbcbfnmbkopoojfekhnkhdbieeh/CURRENT | 1 - .../eimadpbcbfnmbkopoojfekhnkhdbieeh/LOCK | 0 .../eimadpbcbfnmbkopoojfekhnkhdbieeh/LOG | 3 - .../eimadpbcbfnmbkopoojfekhnkhdbieeh/LOG.old | 3 - .../MANIFEST-000001 | Bin 41 -> 0 bytes .../flphhdfbcpebbehnmphjoaoffhgcjafi/000003.log | 0 .../flphhdfbcpebbehnmphjoaoffhgcjafi/CURRENT | 1 - .../flphhdfbcpebbehnmphjoaoffhgcjafi/LOCK | 0 .../flphhdfbcpebbehnmphjoaoffhgcjafi/LOG | 3 - .../flphhdfbcpebbehnmphjoaoffhgcjafi/LOG.old | 3 - .../MANIFEST-000001 | Bin 41 -> 0 bytes .../iadbdpnoknmbdeolbapdackdcogdmjpe/000003.log | Bin 1726 -> 0 bytes .../iadbdpnoknmbdeolbapdackdcogdmjpe/CURRENT | 1 - .../iadbdpnoknmbdeolbapdackdcogdmjpe/LOCK | 0 .../iadbdpnoknmbdeolbapdackdcogdmjpe/LOG | 3 - .../iadbdpnoknmbdeolbapdackdcogdmjpe/LOG.old | 3 - .../MANIFEST-000001 | Bin 41 -> 0 bytes .../nljkibfhlpcnanjgbnlnbjecgicbjkge/000003.log | 0 .../nljkibfhlpcnanjgbnlnbjecgicbjkge/CURRENT | 1 - .../nljkibfhlpcnanjgbnlnbjecgicbjkge/LOCK | 0 .../nljkibfhlpcnanjgbnlnbjecgicbjkge/LOG | 3 - .../nljkibfhlpcnanjgbnlnbjecgicbjkge/LOG.old | 3 - .../MANIFEST-000001 | Bin 41 -> 0 bytes .../oladmjdebphlnjjcnomfhhbfdldiimaf/000003.log | 0 .../oladmjdebphlnjjcnomfhhbfdldiimaf/CURRENT | 1 - .../oladmjdebphlnjjcnomfhhbfdldiimaf/LOCK | 0 .../oladmjdebphlnjjcnomfhhbfdldiimaf/LOG | 2 - .../MANIFEST-000001 | Bin 41 -> 0 bytes .../oldceeleldhonbafppcapldpdifcinji/000003.log | Bin 19139 -> 0 bytes .../oldceeleldhonbafppcapldpdifcinji/CURRENT | 1 - .../oldceeleldhonbafppcapldpdifcinji/LOCK | 0 .../oldceeleldhonbafppcapldpdifcinji/LOG | 3 - .../oldceeleldhonbafppcapldpdifcinji/LOG.old | 3 - .../MANIFEST-000001 | Bin 41 -> 0 bytes .../.config/net.imput.helium/Default/Top Sites | Bin 20480 -> 0 bytes .../net.imput.helium/Default/Top Sites-journal | 0 .../net.imput.helium/Default/TransportSecurity | 1 - .../.config/net.imput.helium/Default/Trust Tokens | Bin 36864 -> 0 bytes .../net.imput.helium/Default/Trust Tokens-journal | 0 .../net.imput.helium/Default/VideoDecodeStats/LOCK | 0 .../net.imput.helium/Default/VideoDecodeStats/LOG | 0 .../Default/VideoDecodeStats/LOG.old | 0 .../Icons Maskable/512.png | Bin 32354 -> 0 bytes .../lfpcbmodcmbhlakniingcipjmnmiefil/Icons/128.png | Bin 10369 -> 0 bytes .../lfpcbmodcmbhlakniingcipjmnmiefil/Icons/192.png | Bin 7100 -> 0 bytes .../lfpcbmodcmbhlakniingcipjmnmiefil/Icons/256.png | Bin 21946 -> 0 bytes .../lfpcbmodcmbhlakniingcipjmnmiefil/Icons/32.png | Bin 1553 -> 0 bytes .../lfpcbmodcmbhlakniingcipjmnmiefil/Icons/48.png | Bin 2703 -> 0 bytes .../lfpcbmodcmbhlakniingcipjmnmiefil/Icons/512.png | Bin 32354 -> 0 bytes .../lfpcbmodcmbhlakniingcipjmnmiefil/Icons/64.png | Bin 3824 -> 0 bytes .../lfpcbmodcmbhlakniingcipjmnmiefil/Icons/96.png | Bin 6677 -> 0 bytes .../Trusted Icons/Icons/128.png | Bin 8309 -> 0 bytes .../Trusted Icons/Icons/256.png | Bin 21946 -> 0 bytes .../Trusted Icons/Icons/32.png | Bin 1395 -> 0 bytes .../Trusted Icons/Icons/48.png | Bin 2417 -> 0 bytes .../Trusted Icons/Icons/512.png | Bin 32354 -> 0 bytes .../Trusted Icons/Icons/64.png | Bin 3432 -> 0 bytes .../Trusted Icons/Icons/96.png | Bin 5504 -> 0 bytes .../.config/net.imput.helium/Default/Web Data | Bin 163840 -> 0 bytes .../net.imput.helium/Default/Web Data-journal | 0 .../Default/WebStorage/11/FileSystem/t/.usage | Bin 24 -> 0 bytes .../Default/WebStorage/11/FileSystem/t/00/00000000 | Bin 1 -> 0 bytes .../WebStorage/11/FileSystem/t/Paths/000003.log | Bin 278 -> 0 bytes .../WebStorage/11/FileSystem/t/Paths/CURRENT | 1 - .../Default/WebStorage/11/FileSystem/t/Paths/LOCK | 0 .../Default/WebStorage/11/FileSystem/t/Paths/LOG | 2 - .../11/FileSystem/t/Paths/MANIFEST-000001 | Bin 41 -> 0 bytes .../2/IndexedDB/indexeddb.leveldb/000004.log | 0 .../2/IndexedDB/indexeddb.leveldb/000005.ldb | Bin 9402 -> 0 bytes .../2/IndexedDB/indexeddb.leveldb/CURRENT | 1 - .../WebStorage/2/IndexedDB/indexeddb.leveldb/LOCK | 0 .../WebStorage/2/IndexedDB/indexeddb.leveldb/LOG | 6 - .../2/IndexedDB/indexeddb.leveldb/MANIFEST-000001 | Bin 109 -> 0 bytes .../Default/WebStorage/32/FileSystem/t/.usage | Bin 24 -> 0 bytes .../Default/WebStorage/32/FileSystem/t/00/00000000 | Bin 1 -> 0 bytes .../Default/WebStorage/32/FileSystem/t/00/00000001 | Bin 1 -> 0 bytes .../WebStorage/32/FileSystem/t/Paths/000003.log | Bin 471 -> 0 bytes .../WebStorage/32/FileSystem/t/Paths/CURRENT | 1 - .../Default/WebStorage/32/FileSystem/t/Paths/LOCK | 0 .../Default/WebStorage/32/FileSystem/t/Paths/LOG | 3 - .../WebStorage/32/FileSystem/t/Paths/LOG.old | 3 - .../32/FileSystem/t/Paths/MANIFEST-000001 | Bin 41 -> 0 bytes .../Default/WebStorage/37/FileSystem/t/.usage | Bin 24 -> 0 bytes .../Default/WebStorage/37/FileSystem/t/00/00000000 | Bin 1 -> 0 bytes .../WebStorage/37/FileSystem/t/Paths/000003.log | Bin 278 -> 0 bytes .../WebStorage/37/FileSystem/t/Paths/CURRENT | 1 - .../Default/WebStorage/37/FileSystem/t/Paths/LOCK | 0 .../Default/WebStorage/37/FileSystem/t/Paths/LOG | 2 - .../37/FileSystem/t/Paths/MANIFEST-000001 | Bin 41 -> 0 bytes .../Default/WebStorage/51/FileSystem/t/.usage | Bin 24 -> 0 bytes .../Default/WebStorage/51/FileSystem/t/00/00000000 | Bin 1 -> 0 bytes .../WebStorage/51/FileSystem/t/Paths/000003.log | Bin 278 -> 0 bytes .../WebStorage/51/FileSystem/t/Paths/CURRENT | 1 - .../Default/WebStorage/51/FileSystem/t/Paths/LOCK | 0 .../Default/WebStorage/51/FileSystem/t/Paths/LOG | 3 - .../WebStorage/51/FileSystem/t/Paths/LOG.old | 3 - .../51/FileSystem/t/Paths/MANIFEST-000001 | Bin 41 -> 0 bytes .../Default/WebStorage/54/FileSystem/t/.usage | Bin 24 -> 0 bytes .../Default/WebStorage/54/FileSystem/t/00/00000000 | Bin 1 -> 0 bytes .../WebStorage/54/FileSystem/t/Paths/000003.log | Bin 278 -> 0 bytes .../WebStorage/54/FileSystem/t/Paths/CURRENT | 1 - .../Default/WebStorage/54/FileSystem/t/Paths/LOCK | 0 .../Default/WebStorage/54/FileSystem/t/Paths/LOG | 2 - .../54/FileSystem/t/Paths/MANIFEST-000001 | Bin 41 -> 0 bytes .../3e700e71-e588-4a9c-9dbb-a1632224fc25/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 48 -> 0 bytes .../b3146faa8b8f5a8d_0 | Bin 16777557 -> 0 bytes .../be498be2-199d-466d-a5c5-80b81a82dadd/index | Bin 24 -> 0 bytes .../index-dir/the-real-index | Bin 72 -> 0 bytes .../Default/WebStorage/56/CacheStorage/index.txt | Bin 325 -> 0 bytes .../WebStorage/56/IndexedDB/indexeddb.blob/1/00/2 | Bin 10799305 -> 0 bytes .../56/IndexedDB/indexeddb.leveldb/000003.log | Bin 3284 -> 0 bytes .../56/IndexedDB/indexeddb.leveldb/CURRENT | 1 - .../WebStorage/56/IndexedDB/indexeddb.leveldb/LOCK | 0 .../WebStorage/56/IndexedDB/indexeddb.leveldb/LOG | 2 - .../56/IndexedDB/indexeddb.leveldb/MANIFEST-000001 | Bin 23 -> 0 bytes .../Default/WebStorage/66/CacheStorage/index.txt | 1 - .../Default/WebStorage/67/FileSystem/t/.usage | Bin 24 -> 0 bytes .../Default/WebStorage/67/FileSystem/t/00/00000000 | Bin 1 -> 0 bytes .../WebStorage/67/FileSystem/t/Paths/000003.log | Bin 278 -> 0 bytes .../WebStorage/67/FileSystem/t/Paths/CURRENT | 1 - .../Default/WebStorage/67/FileSystem/t/Paths/LOCK | 0 .../Default/WebStorage/67/FileSystem/t/Paths/LOG | 2 - .../67/FileSystem/t/Paths/MANIFEST-000001 | Bin 41 -> 0 bytes .../Default/WebStorage/72/CacheStorage/index.txt | 1 - .../80/IndexedDB/indexeddb.leveldb/000003.log | Bin 6053 -> 0 bytes .../80/IndexedDB/indexeddb.leveldb/CURRENT | 1 - .../WebStorage/80/IndexedDB/indexeddb.leveldb/LOCK | 0 .../WebStorage/80/IndexedDB/indexeddb.leveldb/LOG | 2 - .../80/IndexedDB/indexeddb.leveldb/MANIFEST-000001 | Bin 23 -> 0 bytes .../81/IndexedDB/indexeddb.leveldb/000004.log | 0 .../81/IndexedDB/indexeddb.leveldb/000005.ldb | Bin 2524 -> 0 bytes .../81/IndexedDB/indexeddb.leveldb/CURRENT | 1 - .../WebStorage/81/IndexedDB/indexeddb.leveldb/LOCK | 0 .../WebStorage/81/IndexedDB/indexeddb.leveldb/LOG | 6 - .../81/IndexedDB/indexeddb.leveldb/MANIFEST-000001 | Bin 83 -> 0 bytes .../Default/WebStorage/QuotaManager | Bin 49152 -> 0 bytes .../Default/WebStorage/QuotaManager-journal | Bin 8720 -> 0 bytes .../net.imput.helium/Default/chrome_cart_db/LOCK | 0 .../net.imput.helium/Default/chrome_cart_db/LOG | 0 .../Default/chrome_cart_db/LOG.old | 0 .../Default/commerce_subscription_db/LOCK | 0 .../Default/commerce_subscription_db/LOG | 0 .../Default/commerce_subscription_db/LOG.old | 0 .../Default/discount_infos_db/LOCK | 0 .../net.imput.helium/Default/discount_infos_db/LOG | 0 .../Default/discount_infos_db/LOG.old | 0 .../net.imput.helium/Default/discounts_db/LOCK | 0 .../net.imput.helium/Default/discounts_db/LOG | 0 .../net.imput.helium/Default/discounts_db/LOG.old | 0 .../net.imput.helium/Default/engine_allowlist.bf | Bin 360 -> 0 bytes .../Default/heavy_ad_intervention_opt_out.db | Bin 16384 -> 0 bytes .../heavy_ad_intervention_opt_out.db-journal | 0 .../optimization_guide_hint_cache_store/LOCK | 0 .../optimization_guide_hint_cache_store/LOG | 0 .../optimization_guide_hint_cache_store/LOG.old | 0 .../Default/parcel_tracking_db/LOCK | 0 .../Default/parcel_tracking_db/LOG | 0 .../Default/parcel_tracking_db/LOG.old | 0 .../Default/shared_proto_db/000005.ldb | Bin 88721 -> 0 bytes .../Default/shared_proto_db/000015.log | Bin 83199 -> 0 bytes .../Default/shared_proto_db/000017.ldb | Bin 53284 -> 0 bytes .../Default/shared_proto_db/CURRENT | 1 - .../net.imput.helium/Default/shared_proto_db/LOCK | 0 .../net.imput.helium/Default/shared_proto_db/LOG | 4 - .../Default/shared_proto_db/LOG.old | 6 - .../Default/shared_proto_db/MANIFEST-000001 | Bin 609 -> 0 bytes .../Default/shared_proto_db/metadata/000003.log | Bin 5698 -> 0 bytes .../Default/shared_proto_db/metadata/CURRENT | 1 - .../Default/shared_proto_db/metadata/LOCK | 0 .../Default/shared_proto_db/metadata/LOG | 3 - .../Default/shared_proto_db/metadata/LOG.old | 3 - .../shared_proto_db/metadata/MANIFEST-000001 | Bin 41 -> 0 bytes 5328 files changed, 371624 deletions(-) delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/.org.chromium.Chromium.1F1JI3 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/.org.chromium.Chromium.EEq65z delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/.org.chromium.Chromium.L5b1Sq delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/.org.chromium.Chromium.UCYqcY delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Account Web Data delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Account Web Data-journal delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Affiliation Database delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Affiliation Database-journal delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/AutofillAiModelCache/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/AutofillAiModelCache/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/AutofillAiModelCache/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/AutofillStrikeDatabase/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/AutofillStrikeDatabase/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/AutofillStrikeDatabase/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/BookmarkMergedSurfaceOrdering delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Bookmarks delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Bookmarks.bak delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/BudgetDatabase/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/BudgetDatabase/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/BudgetDatabase/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/ClientCertificates/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/ClientCertificates/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/ClientCertificates/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Cookies delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Cookies-journal delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/DIPS delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/DIPS-wal delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/DNR Extension Rules/fgmjlmbojbkmdpofahffgcpkhkngfpef/rules.fbs delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/DNR Extension Rules/fgmjlmbojbkmdpofahffgcpkhkngfpef/rules.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/DawnGraphiteCache/data_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/DawnGraphiteCache/data_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/DawnGraphiteCache/data_2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/DawnGraphiteCache/data_3 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/DawnGraphiteCache/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/DawnWebGPUCache/data_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/DawnWebGPUCache/data_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/DawnWebGPUCache/data_2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/DawnWebGPUCache/data_3 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/DawnWebGPUCache/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension Cookies delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension Cookies-journal delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension Rules/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension Rules/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension Rules/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension Rules/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension Rules/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension Rules/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension State/000005.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension State/000020.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension State/000023.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension State/000026.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension State/000028.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension State/000029.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension State/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension State/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension State/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension State/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extension State/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/@types/index.d.ts delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/_metadata/verified_contents.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/background.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/background.mjs delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/donation.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/iconfont/MaterialIconsOutlined.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/iconfont/material-icons.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/bmc-logo.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/icon128.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/icon16.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/icon32.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/icon48.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/paypal-logo.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/manifest.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/modules/cookie_format.mjs delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/modules/get_all_cookies.mjs delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/modules/save_to_file.mjs delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/popup-options.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/popup.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/popup.dark.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/popup.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/popup.mjs delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/table-nowrap.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/_metadata/verified_contents.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/all_commands.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/bg_utils.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/commands.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/completion/completers.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/completion/ranking.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/completion/search_engines.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/completion/search_wrapper.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/exclusions.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/main.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/marks.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/tab_operations.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/tab_recency.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/user_search_engines.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/file_urls.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/hud.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/link_hints.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/marks.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/mode.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/mode_find.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/mode_insert.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/mode_key_handler.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/mode_normal.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/mode_visual.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/scroller.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/ui_component.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/vimium.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/vimium_frontend.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/vomnibar.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/icons/action_disabled.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/icons/action_disabled_16.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/icons/action_disabled_32.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/icons/action_enabled.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/icons/action_enabled_16.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/icons/action_enabled_32.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/icons/action_partial.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/icons/action_partial_16.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/icons/action_partial_32.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/icons/icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/icons/icon128.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/icons/icon16.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/icons/icon48.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/lib/chrome_api_stubs.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/lib/dom_utils.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/lib/find_mode_history.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/lib/handler_stack.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/lib/keyboard_utils.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/lib/rect.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/lib/settings.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/lib/types.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/lib/url_utils.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/lib/utils.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/manifest.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/action.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/action.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/action.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/all_content_scripts.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/command_listing.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/command_listing.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/command_listing.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/doc.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/doc_search_completion.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/doc_search_completion.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/exclusion_rules_editor.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/help_dialog_page.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/help_dialog_page.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/help_dialog_page.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/hud_page.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/hud_page.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/hud_page.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/key_mappings.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/options.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/options.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/options.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/ui_component_messenger.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/vomnibar_page.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/vomnibar_page.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/pages/vomnibar_page.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/resources/tlds.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/fgmjlmbojbkmdpofahffgcpkhkngfpef/3.0.8_0/README.md delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/fgmjlmbojbkmdpofahffgcpkhkngfpef/3.0.8_0/_locales/de/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/fgmjlmbojbkmdpofahffgcpkhkngfpef/3.0.8_0/_locales/en/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/fgmjlmbojbkmdpofahffgcpkhkngfpef/3.0.8_0/_metadata/generated_indexed_rulesets/_ruleset1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/fgmjlmbojbkmdpofahffgcpkhkngfpef/3.0.8_0/_metadata/verified_contents.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/fgmjlmbojbkmdpofahffgcpkhkngfpef/3.0.8_0/background/healthcheck.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/fgmjlmbojbkmdpofahffgcpkhkngfpef/3.0.8_0/background/main.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/fgmjlmbojbkmdpofahffgcpkhkngfpef/3.0.8_0/background/settings.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/fgmjlmbojbkmdpofahffgcpkhkngfpef/3.0.8_0/css/content.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/fgmjlmbojbkmdpofahffgcpkhkngfpef/3.0.8_0/icons/sp_icon_128.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/fgmjlmbojbkmdpofahffgcpkhkngfpef/3.0.8_0/icons/sp_icon_16.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/fgmjlmbojbkmdpofahffgcpkhkngfpef/3.0.8_0/icons/sp_icon_48.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/fgmjlmbojbkmdpofahffgcpkhkngfpef/3.0.8_0/js/content.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/fgmjlmbojbkmdpofahffgcpkhkngfpef/3.0.8_0/manifest.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/fgmjlmbojbkmdpofahffgcpkhkngfpef/3.0.8_0/rules_1.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/fgmjlmbojbkmdpofahffgcpkhkngfpef/3.0.8_0/service_worker.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/flphhdfbcpebbehnmphjoaoffhgcjafi/1.0.3_0/_metadata/verified_contents.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/flphhdfbcpebbehnmphjoaoffhgcjafi/1.0.3_0/content-scripts/initialize.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/flphhdfbcpebbehnmphjoaoffhgcjafi/1.0.3_0/images/logo.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/flphhdfbcpebbehnmphjoaoffhgcjafi/1.0.3_0/images/logo128.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/flphhdfbcpebbehnmphjoaoffhgcjafi/1.0.3_0/images/logo16.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/flphhdfbcpebbehnmphjoaoffhgcjafi/1.0.3_0/images/logo48.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/flphhdfbcpebbehnmphjoaoffhgcjafi/1.0.3_0/images/slider-steps.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/flphhdfbcpebbehnmphjoaoffhgcjafi/1.0.3_0/manifest.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/flphhdfbcpebbehnmphjoaoffhgcjafi/1.0.3_0/popups/main/main.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/flphhdfbcpebbehnmphjoaoffhgcjafi/1.0.3_0/popups/main/main.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/flphhdfbcpebbehnmphjoaoffhgcjafi/1.0.3_0/popups/main/main.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/bg/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/ca/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/cs/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/da/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/de/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/el/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/en/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/en_GB/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/es/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/et/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/fi/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/fr/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/he/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/hu/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/id/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/it/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/ja/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/ko/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/la/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/lt/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/my/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/nb/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/nl/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/pl/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/pt/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/pt_BR/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/pt_PT/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/ro/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/ru/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/sl/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/sv/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/tr/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/uk/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/vi/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/zh_CN/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_locales/zh_TW/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/_metadata/verified_contents.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/background/background_service.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/background/browserAction.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/background/client.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/background/event.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/background/httpauth.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/background/init.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/background/keepass.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/background/nacl-util.min.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/background/nacl.min.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/background/offscreen.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/background/page.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/background/tabs.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/bootstrap/bootstrap.min.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/bootstrap/bootstrap.min.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/common/browser-polyfill.min.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/common/global.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/common/global_ui.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/common/sites.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/common/translate.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/content/autocomplete.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/content/banner.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/content/credential-autocomplete.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/content/custom-fields-banner.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/content/fields.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/content/fill.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/content/form.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/content/icon-handler.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/content/icon.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/content/keepassxc-browser.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/content/observer-helper.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/content/passkeys-inject.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/content/passkeys-utils.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/content/passkeys.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/content/pwgen.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/content/totp-autocomplete.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/content/totp-field.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/content/ui.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/content/username-field.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/css/autocomplete.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/css/banner.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/css/button.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/css/colors.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/css/define.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/css/notification.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/css/pwgen.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/css/totp.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/css/username.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/fonts/fork-awesome.min.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/fonts/forkawesome-webfont.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/custom_login_fields.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/disconnected.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/help.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/keepassxc-dark_128x128.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/keepassxc-dark_16x16.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/keepassxc-dark_18x18.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/keepassxc-dark_19x19.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/keepassxc-dark_32x32.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/keepassxc-dark_36x36.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/keepassxc-dark_38x38.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/keepassxc-dark_48x48.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/keepassxc-dark_64x64.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/keepassxc.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/keepassxc_128x128.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/keepassxc_16x16.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/keepassxc_18x18.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/keepassxc_19x19.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/keepassxc_32x32.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/keepassxc_36x36.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/keepassxc_38x38.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/keepassxc_48x48.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/keepassxc_64x64.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/keepassxc_96x96.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/key.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/locked.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/otp.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/colored/icon_bang.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/colored/icon_bang.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/colored/icon_cross.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/colored/icon_cross.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/colored/icon_dark.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/colored/icon_dark.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/colored/icon_locked.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/colored/icon_locked.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/colored/icon_new_bang.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/colored/icon_new_bang.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/colored/icon_new_cross.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/colored/icon_new_cross.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/colored/icon_new_locked.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/colored/icon_new_locked.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/colored/icon_new_normal.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/colored/icon_new_normal.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/colored/icon_normal.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/colored/icon_normal.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/dark/icon_bang.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/dark/icon_bang.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/dark/icon_cross.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/dark/icon_cross.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/dark/icon_dark.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/dark/icon_dark.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/dark/icon_locked.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/dark/icon_locked.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/dark/icon_new_bang.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/dark/icon_new_bang.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/dark/icon_new_cross.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/dark/icon_new_cross.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/dark/icon_new_locked.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/dark/icon_new_locked.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/dark/icon_new_normal.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/dark/icon_new_normal.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/dark/icon_normal.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/dark/icon_normal.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/light/icon_bang.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/light/icon_bang.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/light/icon_cross.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/light/icon_cross.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/light/icon_dark.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/light/icon_dark.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/light/icon_locked.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/light/icon_locked.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/light/icon_new_bang.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/light/icon_new_bang.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/light/icon_new_cross.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/light/icon_new_cross.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/light/icon_new_locked.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/light/icon_new_locked.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/light/icon_new_normal.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/light/icon_new_normal.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/light/icon_normal.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/icons/toolbar/light/icon_normal.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/managed_storage.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/manifest.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/offscreen/offscreen.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/offscreen/offscreen.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/options/getting_started.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/options/getting_started.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/options/getting_started.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/options/http-auth-dialog.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/options/options.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/options/options.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/options/options.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/options/shortcuts.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/options/shortcuts.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/options/shortcuts.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/popups/popup.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/popups/popup.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/popups/popup.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/popups/popup_functions.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/popups/popup_httpauth.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/popups/popup_httpauth.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/popups/popup_login.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oboonakemofpalcgghocfoadofidjkkk/1.10.3_0/popups/popup_login.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/LICENSE.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/am/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/ar/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/bg/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/bn/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/ca/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/cs/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/da/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/de/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/el/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/en/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/eo/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/es/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/et/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/fa/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/fi/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/fil/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/fr/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/gu/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/he/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/hi/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/hr/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/hu/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/id/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/it/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/ja/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/kn/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/ko/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/lt/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/lv/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/ml/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/mr/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/ms/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/nb/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/nl/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/no/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/pl/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/pt_BR/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/pt_PT/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/ro/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/ru/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/sk/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/sl/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/sr/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/sv/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/sw/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/ta/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/te/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/th/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/tr/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/uk/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/vi/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/zh_CN/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_locales/zh_TW/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/_metadata/verified_contents.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/about.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/asset-viewer.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/assets/assets.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/assets/thirdparties/mirror1.malwaredomains.com/files/README.md delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/assets/thirdparties/mirror1.malwaredomains.com/files/justdomains delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/assets/thirdparties/pgl.yoyo.org/as/README.md delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/assets/thirdparties/pgl.yoyo.org/as/serverlist delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/assets/thirdparties/someonewhocares.org/hosts/hosts.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/assets/thirdparties/winhelp2002.mvps.org/hosts.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/assets/thirdparties/www.malwaredomainlist.com/hostslist/README.md delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/assets/thirdparties/www.malwaredomainlist.com/hostslist/hosts.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/assets/umatrix/recipes_en.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/background.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/cloud-ui.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/css/cloud-ui.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/css/codemirror.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/css/common.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/css/dashboard-common.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/css/dashboard.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/css/fa-icons.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/css/fonts/Roboto_Condensed/LICENSE.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/css/fonts/Roboto_Condensed/RobotoCondensed-Light.ttf delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/css/fonts/Roboto_Condensed/RobotoCondensed-Regular.ttf delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/css/hosts-files.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/css/logger-ui.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/css/main-blocked.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/css/popup.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/css/raw-settings.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/css/scope-selector.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/css/user-rules.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/dashboard.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/hosts-files.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-0.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-1.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-10.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-11.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-12.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-13.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-14.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-15.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-16.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-17.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-18.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-19.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-2.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-3.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-4.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-5.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-6.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-7.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-8.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-9.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-off.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon38-off.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/cloud.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/fontawesome/LICENSE.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/fontawesome/fontawesome-defs.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/icon_128.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/icon_16.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/icon_64.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/matrix-group-hide.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/matrix-group-hline.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/matrix-group-show.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/permanent-black-small-cb.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/permanent-black-small.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/permanent-white-small-cb.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/permanent-white-small.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/about.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/asset-viewer.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/assets.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/background.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/browsercache.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/cloud-ui.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/contentscript-no-inline-script.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/contentscript-no-workers.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/contentscript-start.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/contentscript.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/cookies.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/dashboard-common.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/dashboard.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/fa-icons.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/hosts-files.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/httpsb.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/i18n.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/liquid-dict.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/logger-ui.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/logger.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/main-blocked.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/matrix.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/messaging.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/pagestats.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/popup.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/raw-settings.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/recipe-manager.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/scope-selector.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/settings.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/start.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/storage.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/tab.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/traffic.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/udom.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/uritools.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/user-rules.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/usersettings.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/utils.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/vapi-background.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/vapi-client.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/vapi-common.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/vapi-webrequest.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/LICENSE delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/README.md delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/addon/merge/merge.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/addon/merge/merge.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/addon/selection/active-line.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/lib/codemirror.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/lib/codemirror.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/diff/README.md delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/diff/swatinem_diff.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/publicsuffixlist.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/punycode.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/logger-ui.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/main-blocked.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/manifest.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/popup.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/raw-settings.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/settings.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/user-rules.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ar/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/bn/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/bs/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/cs/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/de/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/delete.py delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/en/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/eo/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/es/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/fa/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/fi/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/fil/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/filter.py delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/fr/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/gl/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/hi/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/hr/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/hu/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/id/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/it/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ja/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/jv/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ko/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/lv/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/nb_NO/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/nl/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/pl/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/pt/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/pt_BR/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ro/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ru/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/sr/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ta/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/tr/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/uk/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/vi/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/zh_Hans/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/zh_Hant/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/about-icon-light.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/about-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/baiduTieba-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/bandcamp-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/bilibili-icon-light.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/bilibili-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/bluesky-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/chatGpt-icon-light.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/chatGpt-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/chefkoch-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/coub-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/deviantArt-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/fandom-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/geeksForGeeks-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/general-icon-light.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/general-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/genius-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/github-icon-light.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/github-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/gitlab-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/goodreads-icon-light.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/goodreads-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/ifunny-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/imdb-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/imgur-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/instagram-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/instructables-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/knowyourmeme-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-128.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-16.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-32.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-48.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-64.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-96.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/maps-icon-light.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/maps-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/medium-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/meet-icon-light.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/meet-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/mozhi-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/office-icon-light.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/office-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/pastebin-icon-light.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/pastebin-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/peertube-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/pinterest-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/pixiv-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/quora-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/reddit-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/reuters-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/search-icon-light.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/search-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/sendFiles-icon-light.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/sendFiles-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/snopes-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/soundcloud-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/stackOverflow-icon-light.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/stackOverflow-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/tekstowo-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/tenor-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/textStorage-icon-light.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/textStorage-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/threads-icon-light.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/threads-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/tiktok-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/translate-icon-light.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/translate-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/tumblr-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/twitch-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/twitter-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/ultimateGuitar-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/urbanDictionary-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/waybackMachine-icon-light.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/waybackMachine-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/wikipedia-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/wolframAlpha-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/youtube-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/youtubeMusic-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/javascripts/services.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/javascripts/utils.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/config.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/manifest.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/background/background.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/background/background.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Button.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Checkbox.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Input.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Label.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Row.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Select.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/fonts/Inter-VariableFont_slnt,wght.ttf delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/fonts/Vazirmatn-VariableFont_wght.ttf delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/fonts/styles.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/AboutIcon.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/AddIcon.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/AutoPickIcon.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/CloseIcon.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/CopyIcon.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/ExportIcon.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/GeneralIcon.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/ImportIcon.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/PingIcon.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/RedirectIcon.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/RedirectToOriginalIcon.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/ResetIcon.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/ServicesIcon.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/SettingsIcon.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/SwitchInstanceIcon.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/messages/build/bundle.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/messages/build/bundle.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/messages/build/bundle.js.map delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/messages/index.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/messages_src/App.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/messages_src/main.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/messages_src/stores.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/options/build/bundle.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/options/build/bundle.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/options/build/bundle.js.map delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/options/index.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/options_src/App.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/options_src/General/Exceptions.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/options_src/General/General.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/options_src/General/SettingsButtons.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/options_src/Services/FrontendIcon.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/options_src/Services/Instances.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/options_src/Services/RedirectType.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/options_src/Services/ServiceIcon.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/options_src/Services/Services.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/options_src/Sidebar.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/options_src/main.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/options_src/stores.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/options_src/url.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/popup/build/bundle.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/popup/build/bundle.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/popup/build/bundle.js.map delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/popup/index.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/popup_src/App.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/popup_src/Buttons.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/popup_src/components/Row.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/popup_src/components/ServiceIcon.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/popup_src/components/Switch.svelte delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/popup_src/main.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/popup_src/stores.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/updates/updates.xml delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/_locales/ca/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/_locales/de/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/_locales/en/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/_locales/es/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/_locales/fr/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/_locales/it/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/_locales/nl/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/_locales/pl/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/_locales/pt_BR/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/_locales/pt_PT/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/_locales/ru/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/_locales/uk/messages.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/_metadata/verified_contents.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/emojibase-data/emojis/de/data.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/emojibase-data/emojis/en/data.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/emojibase-data/emojis/es/data.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/emojibase-data/emojis/fr/data.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/emojibase-data/emojis/it/data.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/emojibase-data/emojis/nl/data.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/emojibase-data/emojis/pl/data.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/emojibase-data/emojis/pt/data.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/emojibase-data/emojis/ru/data.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/emojibase-data/emojis/uk/data.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/emojibase-data/keywords/de/data.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/emojibase-data/keywords/en/data.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/emojibase-data/keywords/es/data.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/emojibase-data/keywords/fr/data.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/emojibase-data/keywords/it/data.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/emojibase-data/keywords/nl/data.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/emojibase-data/keywords/pl/data.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/emojibase-data/keywords/pt/data.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/emojibase-data/keywords/ru/data.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/emojibase-data/keywords/uk/data.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Roboto-Mono-latin-bold.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-cycrillic-bold-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-cycrillic-bold-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-cycrillic-ext-bold-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-cycrillic-ext-bold-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-cycrillic-ext-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-cycrillic-ext-semi-bold-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-cycrillic-ext-semi-bold-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-cycrillic-ext-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-cycrillic-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-cycrillic-semi-bold-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-cycrillic-semi-bold-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-cycrillic-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-greek-bold-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-greek-bold-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-greek-ext-bold-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-greek-ext-bold-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-greek-ext-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-greek-ext-semi-bold-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-greek-ext-semi-bold-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-greek-ext-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-greek-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-greek-semi-bold-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-greek-semi-bold-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-greek-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-latin-bold-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-latin-bold-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-latin-ext-bold-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-latin-ext-bold-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-latin-ext-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-latin-ext-semi-bold-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-latin-ext-semi-bold-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-latin-ext-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-latin-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-latin-semi-bold-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-latin-semi-bold-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-latin-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-vietnamese-bold-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-vietnamese-bold-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-vietnamese-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-vietnamese-semi-bold-mac.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-vietnamese-semi-bold-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/fonts/Source-Sans-Pro-vietnamese-win.woff2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/16/black/add_on_icon_16_ai.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/16/black/add_on_icon_16_black_logo.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/16/black/add_on_icon_16_missing.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/16/black/add_on_icon_16_scissors.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/16/special/add_on_icon_16_ai.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/16/special/add_on_icon_16_blue_picky.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/16/special/add_on_icon_16_premium.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/16/special/add_on_icon_16_special_switch_active.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/16/special/add_on_icon_16_special_switch_inactive.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/16/white/add_on_icon_16_white_logo.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/16/white/add_on_icon_16_white_switch_active.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/16/white/add_on_icon_16_white_switch_inactive.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_add.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_add_circle.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_ai_tools.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_arrow_left.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_arrow_right.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_basic_error.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_blocked.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_bookmark.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_check.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_check_circle.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_chevron_down.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_chevron_right.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_chevron_up.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_close_circle.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_close_filled.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_close_small.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_dictionary.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_disable.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_disable_circle.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_disabled_website.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_experimental_settings.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_feedback.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_gear.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_glasses.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_globe.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_help.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_info.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_kebab_menu.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_loading.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_locked.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_lollipop.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_lollipop.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_magic_toolbox.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_new_window.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_pause.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_privacy.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_reload.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_save.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_synonyms.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_trash.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_uppercase_ignore.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_user_statistics.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_view_default.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_view_left.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_view_right.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/black/add_on_icon_20_black_view_scroll.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/special/add_on_icon_20_blue_arrow_down.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/special/add_on_icon_20_blue_arrow_left.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/special/add_on_icon_20_blue_arrow_right.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/special/add_on_icon_20_blue_check.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/special/add_on_icon_20_blue_chevron_down.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/special/add_on_icon_20_blue_expand.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/special/add_on_icon_20_blue_insert.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/special/add_on_icon_20_blue_narrow_down.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/special/add_on_icon_20_color_logo.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/special/add_on_icon_20_orange_check.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/special/add_on_icon_20_premium.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_add.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_add_circle.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_ai_tools.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_ai_tools_2.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_arrow_left.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_arrow_right.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_basic_error.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_blocked.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_bookmark.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_check.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_check_circle.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_chevron_down.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_chevron_up.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_close_circle.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_close_filled.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_close_small.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_dictionary.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_disable.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_disable_circle.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_disabled_website.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_expand.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_experimental_settings.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_feedback.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_gear.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_glasses.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_globe.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_help.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_info.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_kebab_menu.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_loading.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_locked.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_lollipop.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_lollipop.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_lt.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_magic_toolbox.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_narrow_down.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_new_window.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_pause.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_premium.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_privacy.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_reload.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_rephrasing.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_save.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_synonyms.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_trash.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_uppercase_ignore.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_user_statistics.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_view_default.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_view_left.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_view_right.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_view_scroll-to.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/20/white/add_on_icon_20_white_view_scroll.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/backgrounds/background-skeleton-loading-dark-mode.webp delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/backgrounds/background-skeleton-loading.webp delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/backgrounds/elements.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/card-drag-handle.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/favicon.ico delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/ar.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/ast-es.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/be-by.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/br-fr.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/ca-es-valencia.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/ca-es.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/crh-ua.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/da-dk.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/de-at.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/de-ch.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/de-de.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/el-gr.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/en-au.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/en-ca.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/en-gb.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/en-nz.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/en-us.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/en-za.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/eo.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/es.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/eu.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/fa.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/fr.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/ga-ie.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/gl-es.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/globe_dark.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/globe_white.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/it.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/ja-jp.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/km-kh.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/nl.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/no.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/not_found.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/oc.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/pl-pl.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/pt-ao.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/pt-br.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/pt-mz.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/pt-pt.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/ro-ro.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/ru-ru.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/sk-sk.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/sl-si.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/sv.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/ta-in.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/tl-ph.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/uk-ua.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/flags/zh-cn.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/hint-arrow.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/icons/drag.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/icons/icon128.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/icons/icon128_white.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/icons/icon16.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/icons/icon16_white.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/icons/icon32.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/icons/icon32_white.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/icons/icon48.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/icons/icon48_white.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/icons/icon64.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/icons/icon64_white.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/color_dialog_disabled.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/color_dialog_errors.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/color_dialog_language_not_supported.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/color_dialog_no_errors.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/color_dialog_scroll_hint.gif delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/color_dialog_text_too_long.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/color_dialog_text_too_short.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/color_dialog_update.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/desktop_app_teaser_illustration_mac.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/desktop_app_teaser_illustration_windows.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/google_docs_teaser.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/google_slides_teaser.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/mascot-2x.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/mascot-error-2x.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/mascot-error.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/mascot-happy-2x.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/mascot-happy.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/mascot-sad-2x.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/mascot-sad.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/mascot-weeping-2x.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/mascot-weeping.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/mascot.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/overleaf_teaser.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/rephrasing_illustration-2x.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/rephrasing_illustration.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/rephrasing_illustration_de-2x.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/rephrasing_illustration_de.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/rephrasing_illustration_es-2x.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/rephrasing_illustration_es.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/rephrasing_illustration_fr-2x.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/rephrasing_illustration_fr.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/rephrasing_illustration_pt-2x.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/rephrasing_illustration_pt.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/color/undo-button.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/white/white_add.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/white/white_dialog_disabled.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/white/white_dialog_errors.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/white/white_dialog_language_not_supported.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/white/white_dialog_no_errors.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/white/white_dialog_text_too_long.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/white/white_dialog_text_too_short.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/white/white_dialog_update.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/white/white_failure.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/white/white_no_errors.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/illustrations/white/white_premium.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/logos/logo_color_circle.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/logos/logo_color_with_background.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/lt-favicon-color.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/lt-favicon-color_notification.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/lt-favicon-white.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/lt-favicon-white_notification.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/lt-logo_gdocs_selected.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/lt-logo_gdocs_unselected.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/messages/message_turn_on.gif delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/messages/message_turn_on_safari.gif delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/ratings/thumpsdown.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/ratings/thumpsup.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/stores/chrome_store.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/stores/edge_store.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/stores/firefox_store.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/stores/opera_store.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/stores/safari_store.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/toolbarStates/done.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/toolbarStates/error_counts_white.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/toolbarStates/loading.webp delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/toolbarStates/progress.gif delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/toolbarStates/progress_2x.gif delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/toolbarStates/text_too_long.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/toolbarStates/toolbar_failed.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/toolbarStates/toolbar_language_not_supported.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/toolbarStates/toolbar_permission_required.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/toolbarStates/turnoff.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/toolbarStates/wave.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/toolbox/contextual-cursor-icon-dark.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/toolbox/contextual-cursor-icon-light.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/toolbox/lollipop-icon-gdocs.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/toolbox/lollipop-icon.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/toolbox/lollipop-onboarding-lt.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/images/toolbox/lollipop-onboarding-lt.webp delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/libs/segment.srx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/assets/toolbox/keywords/en/keywords.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/background.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/changelog.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/changelog.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/changelog.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/big/changelog-big-illustration_ai.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/big/changelog-big-illustration_desktop_mac.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/big/changelog-big-illustration_desktop_windows.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/big/changelog-big-illustration_french_version.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/big/changelog-big-illustration_statistics.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/big/changelog-big-illustration_user_mgmt_de.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/big/changelog-big-illustration_user_mgmt_en.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/big/changelog-big-illustration_user_mgmt_es.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/big/changelog-big-illustration_user_mgmt_fr.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/big/changelog-big-illustration_user_mgmt_nl.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/big/changelog-big-illustration_user_mgmt_pt.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/big/changelog-big-illustration_writing_goals_de.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/big/changelog-big-illustration_writing_goals_en.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/big/changelog-big-illustration_writing_goals_es.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/big/changelog-big-illustration_writing_goals_fr.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/big/changelog-big-illustration_writing_goals_nl.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/big/changelog-big-illustration_writing_goals_pt.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/small/changelog-illustration_ai.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/small/changelog-illustration_desktop_mac.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/small/changelog-illustration_desktop_windows.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/small/changelog-illustration_french_version.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/small/changelog-illustration_statistics.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/small/changelog-illustration_user_mgmt.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/small/changelog-illustration_word.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/2023/small/changelog-illustration_writing_goals.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/ai_sparks.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/button_ios.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/button_mac.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/button_windows.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-background_confetti.jpg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-background_services.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_business_de.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_business_en.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_business_es.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_business_fr.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_business_nl.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_business_pt.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_desktop_mac_de.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_desktop_mac_en.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_desktop_mac_es.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_desktop_mac_fr.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_desktop_mac_nl.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_desktop_mac_pt.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_desktop_windows.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_desktop_windows_de.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_desktop_windows_en.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_libreoffice_en.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_mobile_de.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_mobile_en.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_overleaf.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_paraphrasing_de.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_paraphrasing_en.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_paraphrasing_es.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_paraphrasing_fr.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_paraphrasing_nl.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_paraphrasing_pt.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_slides.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_style_guide_de.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_style_guide_en.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_style_guide_es.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_style_guide_fr.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_style_guide_nl.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_style_guide_pt.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_team.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_thunderbird.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-big-illustration_word.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-illustration_app.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-illustration_editor.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-illustration_french.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-illustration_libreoffice.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-illustration_macos_app.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-illustration_mobile.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-illustration_overleaf.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-illustration_paraphrasing.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-illustration_slides.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-illustration_spanish.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-illustration_style.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-illustration_style_guide.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-illustration_team.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-illustration_thunderbird.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-illustration_translate.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-illustration_word.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-logo.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog-logo_no-claim.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog_2021_style_de.mp4 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog_2021_style_en.mp4 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog_2021_style_es.mp4 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog_2021_style_fr.mp4 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/changelog_icon_lt.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/eu_flag.svg delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/changelog/images/spanish-premium-video.mp4 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/chunks/116.8b7e94.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/chunks/275.f1d017.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/chunks/282.788b18.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/chunks/315.3883be.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/chunks/962.b5d5fd.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/common/base.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/common/fonts.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/common/loadFonts.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/common/smoothscroll.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/content.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/content/editors/google/gdocs-content.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/content/editors/google/gslides-content.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/content/executor.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/content/languagetool/injector.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/content/outlook/content.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/content/safari/injector.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/content/styles/lollipop.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/content/styles/shadow.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/content/styles/styles.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/content/thunderbird/content.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/core/TextFieldV2/ARCHITECTURE.md delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/core/language-detection/language-router.md delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/core/models/segment.xml delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/extension-loader.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/feedbackForm/feedbackForm.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/feedbackForm/feedbackForm.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/feedbackForm/feedbackForm.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/libs/segment.srx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/lollipop/demo.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/lollipop/test_cases.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/managed_settings.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/manifest.json delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/options/options.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/options/options.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/options/options.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/popup/popup.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/popup/popup.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/popup/popup.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/additional-error-suggestion/additional-error-suggestion.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/card-base/card-base.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/card-base/custom-card-base.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/card-base/drag-handle.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/card-content/card-content.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/countdown/countdown.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/diff/diff.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/editor-card/custom-editor-card.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/editor-card/editor-card.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/error-boundary/error-boundary.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/error-content/error-content.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/fix-sentence-content/fix-sentence-content.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/icon/icon.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/keyboard-navigation-hint/keyboard-navigation-hint.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/keyboard-navigation/keyboard-navigation.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/loading-content/loading-content.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/mascot-says/mascot-says.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/menu/menu.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/paraphrasing-content/paraphrasing-content.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/rephrase-content/rephrase-content.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/rephrasing-teaser/rephrasing-teaser.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/scrollable-area/scrollable-area.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/sentence-splitting-content/sentence-splitting-content.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/synonyms-content/synonyms-content.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/components/toolbox-content/toolbox-content.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/views/editor-card/editor-card.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/views/icon/icon.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/react/views/menu/menu.tsx delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/toolbox/toolbox.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/toolbox/toolbox.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/toolbox/toolbox.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/trial/trial.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/validator/loadValidator.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/validator/validator.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/validator/validator.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/validator/validator.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/welcome/loginRedirectUri.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/welcome/loginRedirectUri.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/welcome/managedLoginRedirectUri.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/welcome/managedLoginRedirectUri.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/welcome/templates/index.html delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/welcome/welcome.css delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Extensions/oldceeleldhonbafppcapldpdifcinji/11.1.0_0/welcome/welcome.js delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Favicons delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Favicons-journal delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Feature Engagement Tracker/AvailabilityDB/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Feature Engagement Tracker/AvailabilityDB/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Feature Engagement Tracker/AvailabilityDB/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Feature Engagement Tracker/EventDB/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Feature Engagement Tracker/EventDB/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Feature Engagement Tracker/EventDB/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/000/t/.usage delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/000/t/Paths/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/000/t/Paths/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/000/t/Paths/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/000/t/Paths/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/000/t/Paths/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/001/t/.usage delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/001/t/02/00000263 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/001/t/Paths/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/001/t/Paths/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/001/t/Paths/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/001/t/Paths/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/001/t/Paths/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/001/t/Paths/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/002/t/.usage delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/002/t/Paths/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/002/t/Paths/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/002/t/Paths/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/002/t/Paths/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/002/t/Paths/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/002/t/Paths/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/003/t/.usage delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/003/t/Paths/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/003/t/Paths/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/003/t/Paths/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/003/t/Paths/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/003/t/Paths/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/004/t/.usage delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/004/t/Paths/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/004/t/Paths/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/004/t/Paths/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/004/t/Paths/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/004/t/Paths/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/Origins/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/Origins/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/Origins/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/Origins/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/Origins/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/File System/Origins/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/GCM Store/Encryption/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/GCM Store/Encryption/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/GCM Store/Encryption/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/GCM Store/Encryption/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/GCM Store/Encryption/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/GCM Store/Encryption/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/GPUCache/data_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/GPUCache/data_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/GPUCache/data_2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/GPUCache/data_3 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/GPUCache/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/History delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/History-journal delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/00/10 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/00/11 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/00/12 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/00/13 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/00/14 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/00/15 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/00/16 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/00/17 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/00/18 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/00/19 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/00/1a delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/00/1b delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/00/1c delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/00/1d delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/00/4 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/00/a8 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/00/c delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/00/d delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/00/e delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/00/f delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/140 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/162 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/174 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/18a delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/18b delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/18c delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/18d delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/18e delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/18f delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/190 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/191 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/192 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/193 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/194 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/195 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/1a1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/1aa delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/1ad delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/1ae delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/1af delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/1b0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.blob/1/01/1b1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.leveldb/000030.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.leveldb/000033.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_blockjmkbacgjkknlgpkjjiijinjdanf_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_nljkibfhlpcnanjgbnlnbjecgicbjkge_0.indexeddb.leveldb/000011.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_nljkibfhlpcnanjgbnlnbjecgicbjkge_0.indexeddb.leveldb/000013.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_nljkibfhlpcnanjgbnlnbjecgicbjkge_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_nljkibfhlpcnanjgbnlnbjecgicbjkge_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_nljkibfhlpcnanjgbnlnbjecgicbjkge_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_nljkibfhlpcnanjgbnlnbjecgicbjkge_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/chrome-extension_nljkibfhlpcnanjgbnlnbjecgicbjkge_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_account.proton.me_0.indexeddb.blob/2/00/b delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_account.proton.me_0.indexeddb.leveldb/000004.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_account.proton.me_0.indexeddb.leveldb/000005.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_account.proton.me_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_account.proton.me_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_account.proton.me_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_account.proton.me_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_account.proton.me_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_age-verification.privateid.com_0.indexeddb.blob/1/00/2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_age-verification.privateid.com_0.indexeddb.leveldb/000004.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_age-verification.privateid.com_0.indexeddb.leveldb/000005.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_age-verification.privateid.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_age-verification.privateid.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_age-verification.privateid.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_age-verification.privateid.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_app.tuta.com_0.indexeddb.blob/3/00/3 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_app.tuta.com_0.indexeddb.leveldb/000014.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_app.tuta.com_0.indexeddb.leveldb/000016.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_app.tuta.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_app.tuta.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_app.tuta.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_app.tuta.com_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_app.tuta.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_calendar.google.com_0.indexeddb.leveldb/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_calendar.google.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_calendar.google.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_calendar.google.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_calendar.google.com_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_calendar.google.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_calendar.proton.me_0.indexeddb.blob/1/00/b delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_calendar.proton.me_0.indexeddb.leveldb/000004.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_calendar.proton.me_0.indexeddb.leveldb/000005.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_calendar.proton.me_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_calendar.proton.me_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_calendar.proton.me_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_calendar.proton.me_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_calendar.proton.me_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_chat.routstr.com_0.indexeddb.leveldb/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_chat.routstr.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_chat.routstr.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_chat.routstr.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_chat.routstr.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_claude.ai_0.indexeddb.leveldb/000004.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_claude.ai_0.indexeddb.leveldb/000005.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_claude.ai_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_claude.ai_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_claude.ai_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_claude.ai_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_claude.ai_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_docs.google.com_0.indexeddb.leveldb/000004.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_docs.google.com_0.indexeddb.leveldb/000005.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_docs.google.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_docs.google.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_docs.google.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_docs.google.com_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_docs.google.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_drive.google.com_0.indexeddb.blob/1/00/8 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_drive.google.com_0.indexeddb.blob/1/00/9 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_drive.google.com_0.indexeddb.leveldb/000004.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_drive.google.com_0.indexeddb.leveldb/000005.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_drive.google.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_drive.google.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_drive.google.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_drive.google.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_duck.ai_0.indexeddb.blob/1/00/2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_duck.ai_0.indexeddb.blob/1/00/3 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_duck.ai_0.indexeddb.blob/1/00/4 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_duck.ai_0.indexeddb.blob/1/00/5 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_duck.ai_0.indexeddb.blob/1/00/6 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_duck.ai_0.indexeddb.leveldb/000011.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_duck.ai_0.indexeddb.leveldb/000013.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_duck.ai_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_duck.ai_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_duck.ai_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_duck.ai_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_duck.ai_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_github.com_0.indexeddb.leveldb/000007.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_github.com_0.indexeddb.leveldb/000009.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_github.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_github.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_github.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_github.com_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_github.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_grainrad.com_0.indexeddb.leveldb/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_grainrad.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_grainrad.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_grainrad.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_grainrad.com_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_grainrad.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_habr.com_0.indexeddb.leveldb/000007.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_habr.com_0.indexeddb.leveldb/000009.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_habr.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_habr.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_habr.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_habr.com_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_habr.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lethal-company.fandom.com_0.indexeddb.leveldb/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lethal-company.fandom.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lethal-company.fandom.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lethal-company.fandom.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lethal-company.fandom.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/1/03/304 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/11 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/13 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/15 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/17 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/19 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/1b delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/1d delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/1f delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/21 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/23 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/25 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/27 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/29 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/2b delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/2d delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/2f delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/3 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/31 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/33 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/35 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/5 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/7 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/9 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/b delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/d delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/f delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/00/ff delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/02/28f delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/07/73c delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/08/8ce delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.blob/3/09/996 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.leveldb/000862.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.leveldb/000864.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.leveldb/000865.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_lumo.proton.me_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mail.google.com_0.indexeddb.leveldb/000004.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mail.google.com_0.indexeddb.leveldb/000005.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mail.google.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mail.google.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mail.google.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mail.google.com_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mail.google.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mail.proton.me_0.indexeddb.blob/1/00/17 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mail.proton.me_0.indexeddb.leveldb/000012.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mail.proton.me_0.indexeddb.leveldb/000044.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mail.proton.me_0.indexeddb.leveldb/000046.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mail.proton.me_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mail.proton.me_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mail.proton.me_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mail.proton.me_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mail.proton.me_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mynixos.com_0.indexeddb.blob/4/00/2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mynixos.com_0.indexeddb.leveldb/000004.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mynixos.com_0.indexeddb.leveldb/000005.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mynixos.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mynixos.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mynixos.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_mynixos.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_novelai.net_0.indexeddb.leveldb/000004.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_novelai.net_0.indexeddb.leveldb/000005.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_novelai.net_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_novelai.net_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_novelai.net_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_novelai.net_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_novelai.net_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_openrouter.ai_0.indexeddb.leveldb/000004.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_openrouter.ai_0.indexeddb.leveldb/000005.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_openrouter.ai_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_openrouter.ai_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_openrouter.ai_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_openrouter.ai_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_payments.coinbase.com_0.indexeddb.leveldb/000004.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_payments.coinbase.com_0.indexeddb.leveldb/000005.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_payments.coinbase.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_payments.coinbase.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_payments.coinbase.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_payments.coinbase.com_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_payments.coinbase.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_speed.cloudflare.com_0.indexeddb.leveldb/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_speed.cloudflare.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_speed.cloudflare.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_speed.cloudflare.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_speed.cloudflare.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_spotubedl.com_0.indexeddb.blob/1/00/2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_spotubedl.com_0.indexeddb.leveldb/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_spotubedl.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_spotubedl.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_spotubedl.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_spotubedl.com_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_spotubedl.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/1/00/cf delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/10 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/11 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/12 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/13 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/14 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/15 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/16 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/17 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/18 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/19 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/1a delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/1b delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/1c delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/1d delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/1e delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/1f delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/20 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/21 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/22 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/23 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/24 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/25 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/26 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/27 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/28 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/29 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/2a delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/2b delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/2c delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/2d delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/2e delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/2f delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/3 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/30 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/31 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/32 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/33 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/34 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/35 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/36 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/37 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/38 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/39 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/3a delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/3b delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/3c delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/3d delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/3e delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/3f delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/4 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/40 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/41 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/42 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/43 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/44 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/45 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/46 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/47 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/48 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/49 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/4a delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/4b delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/4c delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/4d delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/4e delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/4f delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/5 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/50 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/51 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/52 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/53 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/54 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/55 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/56 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/57 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/58 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/59 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/5a delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/5b delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/5c delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/5d delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/5e delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/5f delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/6 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/60 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/61 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/62 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/63 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/64 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/66 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/67 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/68 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/69 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/6a delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/6b delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/6c delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/6d delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/6e delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/6f delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/7 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/70 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/71 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/72 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/73 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/74 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/75 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/76 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/77 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/78 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/79 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/7a delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/7b delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/7c delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/7d delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/7e delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/7f delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/8 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/80 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/81 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/82 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/83 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/84 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/85 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/86 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/87 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/88 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/89 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/8a delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/8b delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/8c delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/8d delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/8e delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/8f delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/9 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/90 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/91 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/92 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/93 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/94 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/95 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/96 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/97 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/98 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/9a delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/9b delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/9c delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/9d delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/9e delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/a delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/b delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/c delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/d delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/e delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.blob/2/00/f delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.leveldb/000004.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.leveldb/000005.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_windows93.net_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.avito.ru_0.indexeddb.leveldb/000006.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.avito.ru_0.indexeddb.leveldb/000008.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.avito.ru_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.avito.ru_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.avito.ru_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.avito.ru_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.cosmopolitan.com_0.indexeddb.leveldb/000004.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.cosmopolitan.com_0.indexeddb.leveldb/000005.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.cosmopolitan.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.cosmopolitan.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.cosmopolitan.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.cosmopolitan.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.fandom.com_0.indexeddb.leveldb/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.fandom.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.fandom.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.fandom.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.fandom.com_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.fandom.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.kimi.com_0.indexeddb.leveldb/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.kimi.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.kimi.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.kimi.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.kimi.com_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.kimi.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.kucoin.com_0.indexeddb.blob/2/00/3 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.kucoin.com_0.indexeddb.blob/2/00/5 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.kucoin.com_0.indexeddb.leveldb/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.kucoin.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.kucoin.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.kucoin.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.kucoin.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.ozon.ru_0.indexeddb.leveldb/000018.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.ozon.ru_0.indexeddb.leveldb/000020.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.ozon.ru_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.ozon.ru_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.ozon.ru_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.ozon.ru_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.ozon.ru_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.pinterest.com_0.indexeddb.leveldb/000055.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.pinterest.com_0.indexeddb.leveldb/000057.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.pinterest.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.pinterest.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.pinterest.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.pinterest.com_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.pinterest.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.speedtest.net_0.indexeddb.leveldb/000056.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.speedtest.net_0.indexeddb.leveldb/000059.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.speedtest.net_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.speedtest.net_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.speedtest.net_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.speedtest.net_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.youtube.com_0.indexeddb.blob/16/00/10 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.youtube.com_0.indexeddb.leveldb/000137.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.youtube.com_0.indexeddb.leveldb/000138.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.youtube.com_0.indexeddb.leveldb/000139.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.youtube.com_0.indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.youtube.com_0.indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.youtube.com_0.indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.youtube.com_0.indexeddb.leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/IndexedDB/https_www.youtube.com_0.indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/001261.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/001262.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/001263.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/001264.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/001265.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/001266.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/001267.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/001268.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/001269.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/001271.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/001272.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/001273.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/001274.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/eimadpbcbfnmbkopoojfekhnkhdbieeh/000005.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/eimadpbcbfnmbkopoojfekhnkhdbieeh/000027.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/eimadpbcbfnmbkopoojfekhnkhdbieeh/000028.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/eimadpbcbfnmbkopoojfekhnkhdbieeh/000029.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/eimadpbcbfnmbkopoojfekhnkhdbieeh/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/eimadpbcbfnmbkopoojfekhnkhdbieeh/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/eimadpbcbfnmbkopoojfekhnkhdbieeh/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/eimadpbcbfnmbkopoojfekhnkhdbieeh/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/eimadpbcbfnmbkopoojfekhnkhdbieeh/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/fgmjlmbojbkmdpofahffgcpkhkngfpef/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/fgmjlmbojbkmdpofahffgcpkhkngfpef/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/fgmjlmbojbkmdpofahffgcpkhkngfpef/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/fgmjlmbojbkmdpofahffgcpkhkngfpef/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/fgmjlmbojbkmdpofahffgcpkhkngfpef/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/fgmjlmbojbkmdpofahffgcpkhkngfpef/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/fhkphphbadjkepgfljndicmgdlndmoke/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/fhkphphbadjkepgfljndicmgdlndmoke/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/fhkphphbadjkepgfljndicmgdlndmoke/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/fhkphphbadjkepgfljndicmgdlndmoke/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/fhkphphbadjkepgfljndicmgdlndmoke/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/fhkphphbadjkepgfljndicmgdlndmoke/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/fjkmabmdepjfammlpliljpnbhleegehm/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/fjkmabmdepjfammlpliljpnbhleegehm/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/fjkmabmdepjfammlpliljpnbhleegehm/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/fjkmabmdepjfammlpliljpnbhleegehm/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/fjkmabmdepjfammlpliljpnbhleegehm/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/fjkmabmdepjfammlpliljpnbhleegehm/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/ghmbeldphafepmbegfdlkpapadhbakde/000005.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/ghmbeldphafepmbegfdlkpapadhbakde/000272.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/ghmbeldphafepmbegfdlkpapadhbakde/000274.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/ghmbeldphafepmbegfdlkpapadhbakde/000275.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/ghmbeldphafepmbegfdlkpapadhbakde/000276.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/ghmbeldphafepmbegfdlkpapadhbakde/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/ghmbeldphafepmbegfdlkpapadhbakde/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/ghmbeldphafepmbegfdlkpapadhbakde/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/ghmbeldphafepmbegfdlkpapadhbakde/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/ghmbeldphafepmbegfdlkpapadhbakde/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/lanfdkkpgfjfdikkncbnojekcppdebfp/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/lanfdkkpgfjfdikkncbnojekcppdebfp/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/lanfdkkpgfjfdikkncbnojekcppdebfp/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/lanfdkkpgfjfdikkncbnojekcppdebfp/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/lanfdkkpgfjfdikkncbnojekcppdebfp/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/lanfdkkpgfjfdikkncbnojekcppdebfp/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/nljkibfhlpcnanjgbnlnbjecgicbjkge/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/nljkibfhlpcnanjgbnlnbjecgicbjkge/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/nljkibfhlpcnanjgbnlnbjecgicbjkge/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/nljkibfhlpcnanjgbnlnbjecgicbjkge/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/nljkibfhlpcnanjgbnlnbjecgicbjkge/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/nljkibfhlpcnanjgbnlnbjecgicbjkge/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/oboonakemofpalcgghocfoadofidjkkk/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/oboonakemofpalcgghocfoadofidjkkk/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/oboonakemofpalcgghocfoadofidjkkk/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/oboonakemofpalcgghocfoadofidjkkk/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/oboonakemofpalcgghocfoadofidjkkk/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/oboonakemofpalcgghocfoadofidjkkk/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/ogfcmafjalglgifnmanfmnieipoejdcf/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/ogfcmafjalglgifnmanfmnieipoejdcf/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/ogfcmafjalglgifnmanfmnieipoejdcf/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/ogfcmafjalglgifnmanfmnieipoejdcf/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/ogfcmafjalglgifnmanfmnieipoejdcf/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/ogfcmafjalglgifnmanfmnieipoejdcf/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/oladmjdebphlnjjcnomfhhbfdldiimaf/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/oladmjdebphlnjjcnomfhhbfdldiimaf/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/oladmjdebphlnjjcnomfhhbfdldiimaf/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/oladmjdebphlnjjcnomfhhbfdldiimaf/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/oladmjdebphlnjjcnomfhhbfdldiimaf/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/oladmjdebphlnjjcnomfhhbfdldiimaf/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/oldceeleldhonbafppcapldpdifcinji/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/oldceeleldhonbafppcapldpdifcinji/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/oldceeleldhonbafppcapldpdifcinji/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/oldceeleldhonbafppcapldpdifcinji/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/oldceeleldhonbafppcapldpdifcinji/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/oldceeleldhonbafppcapldpdifcinji/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/olnbjpaejebpnokblkepbphhembdicik/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/olnbjpaejebpnokblkepbphhembdicik/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/olnbjpaejebpnokblkepbphhembdicik/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/olnbjpaejebpnokblkepbphhembdicik/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/olnbjpaejebpnokblkepbphhembdicik/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Extension Settings/olnbjpaejebpnokblkepbphhembdicik/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Storage/leveldb/000005.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Storage/leveldb/001192.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Storage/leveldb/001193.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Storage/leveldb/001195.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Storage/leveldb/001197.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Storage/leveldb/001199.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Storage/leveldb/001200.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Storage/leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Storage/leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Storage/leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Storage/leveldb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Local Storage/leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Login Data delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Login Data For Account delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Login Data For Account-journal delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Login Data-journal delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Managed Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Managed Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Managed Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Managed Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Managed Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Managed Extension Settings/blockjmkbacgjkknlgpkjjiijinjdanf/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Managed Extension Settings/oboonakemofpalcgghocfoadofidjkkk/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Managed Extension Settings/oboonakemofpalcgghocfoadofidjkkk/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Managed Extension Settings/oboonakemofpalcgghocfoadofidjkkk/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Managed Extension Settings/oboonakemofpalcgghocfoadofidjkkk/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Managed Extension Settings/oboonakemofpalcgghocfoadofidjkkk/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Managed Extension Settings/oboonakemofpalcgghocfoadofidjkkk/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Managed Extension Settings/oldceeleldhonbafppcapldpdifcinji/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Managed Extension Settings/oldceeleldhonbafppcapldpdifcinji/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Managed Extension Settings/oldceeleldhonbafppcapldpdifcinji/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Managed Extension Settings/oldceeleldhonbafppcapldpdifcinji/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Managed Extension Settings/oldceeleldhonbafppcapldpdifcinji/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Managed Extension Settings/oldceeleldhonbafppcapldpdifcinji/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/MediaDeviceSalts delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/MediaDeviceSalts-journal delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Network Action Predictor delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Network Action Predictor-journal delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Network Persistent State delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/PersistentOriginTrials/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/PersistentOriginTrials/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/PersistentOriginTrials/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Platform Notifications/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Platform Notifications/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Platform Notifications/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Platform Notifications/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Platform Notifications/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Platform Notifications/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Preferences delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/PreferredApps delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/README delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/SCT Auditing Pending Reports delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Secure Preferences delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Segmentation Platform/SegmentInfoDB/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Segmentation Platform/SegmentInfoDB/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Segmentation Platform/SegmentInfoDB/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Segmentation Platform/SignalDB/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Segmentation Platform/SignalDB/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Segmentation Platform/SignalDB/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Segmentation Platform/SignalStorageConfigDB/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Segmentation Platform/SignalStorageConfigDB/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Segmentation Platform/SignalStorageConfigDB/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/ServerCertificate delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/ServerCertificate-journal delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/1a75bb76ea611cabb3ee208f76ac29ed92da7628/167ac202-830b-4cc9-823a-c0eef551d304/5d38329751e8525d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/1a75bb76ea611cabb3ee208f76ac29ed92da7628/167ac202-830b-4cc9-823a-c0eef551d304/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/1a75bb76ea611cabb3ee208f76ac29ed92da7628/167ac202-830b-4cc9-823a-c0eef551d304/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/1a75bb76ea611cabb3ee208f76ac29ed92da7628/index.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/307036ff5f5516e69dade2dcde70907db17381a0/ca2b8576-224d-4751-85f1-ceb55d54a591/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/307036ff5f5516e69dade2dcde70907db17381a0/ca2b8576-224d-4751-85f1-ceb55d54a591/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/307036ff5f5516e69dade2dcde70907db17381a0/index.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/70c13bf7-078b-4e9c-ba3b-5f9bf375ae96/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/70c13bf7-078b-4e9c-ba3b-5f9bf375ae96/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/075aeca7e556c651_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/075aeca7e556c651_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/0a41c5226f4ea45c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/0fc09f38b2295ac0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/0fc09f38b2295ac0_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/1f3240a2dd73eca6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/1f3240a2dd73eca6_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/2932e1153c64eb30_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/35dcfa5da122dc3f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/35dcfa5da122dc3f_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/44acd6df7b0f6c29_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/48234e7037907372_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/48234e7037907372_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/61bbe64726f600d2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/61bbe64726f600d2_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/6be34d05411f8a58_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/6be34d05411f8a58_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/80dca37114654a65_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/80dca37114654a65_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/8300925a06792860_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/8300925a06792860_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/846f31c2d5d83610_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/846f31c2d5d83610_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/a23df982d61b6504_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/a23df982d61b6504_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/a9e53d396796cb16_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/c037cc6d848ee571_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/c548304d03e754fa_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/c548304d03e754fa_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/c6b55a8840308240_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/c6b55a8840308240_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/cf370ffc2f4673ee_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/cf370ffc2f4673ee_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/da12145b12f3c5e5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/de9318660da488d9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/de9318660da488d9_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/e293b17b64b4e482_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/754e3171-62ad-49e1-9eb1-5b252d428161/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/00ba5fc263b59bcc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/0222ffa3c71a476b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/027c813f28eb3d53_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/02ce44654c978c4c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/04babee2bfa8b48c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/06c49d2fa0ad4bcd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/08000439b4130129_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/0b3bd81b114681fa_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/0b8c705721509f10_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/0db7075bc130b313_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/0dbec196046ed063_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/0e68ef3e3bc686b2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/0f1e03ffbe4a08f3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/10d52c8541d8e931_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/1410946c5e325198_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/16559ac9c884651f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/166a5b768db2d6dc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/179872ac4492afa0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/1ada7ade10cca105_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/21d60d8d92bf19bf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/22063dd5403b833c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/2532623a88776236_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/2e2413a06637b0ec_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/3107558eea9ba321_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/364b223b1bc79872_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/366f560b67a386ee_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/375db0c2ac836167_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/3761f940ae901389_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/383152c2a19b4e8f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/3865648767564005_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/38720ab1369ba567_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/3900fd29baef0480_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/3941d9264340cece_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/3dd738a47abc8dee_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/40a9bd45a75375db_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/422d408262aa1cbc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/445287d025921e6f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/44fdad3a201128f8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/4816386a87d7566c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/482a0b7ae2b00776_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/4b32244f47a52aa1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/4bfb0fd95edd59d2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/4c4800b635ae2098_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/4c9a3bb214971f6c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/4eceab7d2e5e75bd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/50aef4afc8eb2221_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/50ec495042a41f6d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/5399a0cd57faade2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/54920af5f79603ff_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/551f311ce70a041a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/55248bf5cdb1f722_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/577dbf0b91a4fd20_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/57976939f24b399a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/598bb08c9f41a7b9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/63650b2efa24c917_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/6635a01024910e7c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/6b991611054a2e9f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/6e7ceb2d0629c0d2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/766415f99b4c6b7d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/76d092187417e324_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/7a80e0d12aa14c6c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/7e048a4ec5b9e1d4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/7e9e9637312f4527_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/7f4dd8a89067dd14_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/8059ab2dc6262984_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/8383e54a78e96fc0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/83c00149b31ccab3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/842bceedb8c09930_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/87b78db93ca06597_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/88a5e52ddb6d6d2c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/88c1d03bb90903c8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/8ab4bfc157c68e03_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/8b74f42ca7f9d4ce_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/8ba42d1959e21094_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/8ba930f6d3763aad_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/8df5c0290e6e7d6b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/901cda61dbe1c72b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/91bffe440af90184_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/92f3fbe0cc645cda_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/94dd7ef9d668d39f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/9527542be48ffabc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/95db89fc6a02f451_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/963ed8c33def50bf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/96aec6e9ae26248e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/97de5abfe883dbcf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/986d0106ec1842ce_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/98a16392447e67ac_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/9e14eade795efe8c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/9f4ad6f7051df145_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/9fd5f62bf71b3d75_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/a10e102536afddc3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/a14b1d1ba3ffefc8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/a1962e8c0da37551_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/a6b7c04cc881aa8f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/a6f27ff03ba78ebe_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/a85adbefb300ab4e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/a8861e49fb8957aa_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/a9b4668151d3b918_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/aa2af9656088cce5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/aab204e4e2e6cad8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/ac4be60b26fb5511_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/afbf989a8c95bf2e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/b2141b088ee5e98c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/b3f87b55d8dbfa47_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/b5f29d0312456036_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/bc145685a6573d8d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/bca21f99472447f3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/bcefea0b5feaa3e6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/be519e977a6323d2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/be581dea90cddde7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/bfcfe1973eae70a6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/c09d11a05755e8de_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/c30f776ad1595b83_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/c3d986f17b5dc565_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/c50c2efcca9c8010_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/c7348c3f4f98c4ab_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/c82aed60a977e45b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/c8b473e0f9374235_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/c8f84126e8a205d3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/c9adc58020b2b3de_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/ca5a67fda3466f4d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/cb47929bcd785350_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/cd85acb1c0e5f8f6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/cde968a267e2506f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/ce5fdc792b67fd6e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/d3d3117da1954c11_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/d48cca5b61f158fe_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/d57fe2c6b1537486_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/d949b6a948217766_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/db4b978e1d037149_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/db529ccd665da8b5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/dc1d8d198ab144a4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/dc1f0d705c07825e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/dd15da64bd340266_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/dec87465aca36c9e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/e00a14b7237f316a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/e0679885439abda2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/e31f7a7e623b4b27_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/e8b90ca167b6e771_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/e8c610db15382c0d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/e8f209bb953d0431_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/e939b9c74705d0f2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/e9cc87730829e287_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/ea8caa098b6387ff_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/eaffc3a9ed933df4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/ecf4f84b241d1325_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/ee0df4a02bea74ec_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/f355a1c9fc9dac63_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/f549ece535126cd0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/f587f3bec747896f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/f6f13d7893cf7781_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/f7d87e9c65f44131_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/f9bc7061061e4803_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/fad7b2239e784870_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/fc496558f77f6d37_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/fdd89d27c13f85e5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/ff7d190261fb21f8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/fff368752d794b37_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/df02438d-ec97-49fc-befe-d7f04c7c0bc6/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/379f1cbab5b08b6fc9e08681e42d8be311441c88/index.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/006a538dedf500bb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/0175f3f40ba8dbde_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/1721bd4f8fb2cadc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/17b8036994926313_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/25dc4c03e53ce621_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/335c73116c925d69_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/35479c8993a56980_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/3ae70dcea11c2fbe_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/3b5be9cfbf996496_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/3bafac095fd25cbd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/4569c647f3e546ae_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/4d67962a65e63981_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/586a022384e46803_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/5dae2ab319d8aac9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/5de9374d0d33bce6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/61660244c8309188_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/6ea1cb40f0aee2a6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/713851498c4150dc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/802e042d69cb5b9f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/8cec4c83eb238125_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/90064f6e62ae2b4c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/938f804276fb35f1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/93df658616c97d06_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/a9699016563b8209_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/ac7ba52fac0e95e1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/b3393d462f0043ad_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/c1599dde8bade953_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/d588d824228ac415_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/d75edc2286fae9b7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/ea578ddc3dc3c687_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/ec116a03a65112e6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/ecac73213fcefcdf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/fcddaeca4ec70adb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/5e478eeb-1820-4299-b857-8a957d5454ff/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/3b5eb7fa61a672d23016e9041564312055b27854/index.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/4b1338a979a263608054c918e9b2dabd45116e5c/2b37bdcb-00c6-4891-9af4-00f62af17426/dbaaafcc074f9ed9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/4b1338a979a263608054c918e9b2dabd45116e5c/2b37bdcb-00c6-4891-9af4-00f62af17426/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/4b1338a979a263608054c918e9b2dabd45116e5c/2b37bdcb-00c6-4891-9af4-00f62af17426/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/4b1338a979a263608054c918e9b2dabd45116e5c/index.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/07f8e196a7727a3f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/0cb5dd327b96a31b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/0fc5bdde6f53153f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/14b6e0546d8edd38_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/1568eaad9cefb057_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/1568eaad9cefb057_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/1a84c0fdb8f29ecd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/29e34f22d379c8ec_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/312b41ec91efbbbb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/3190d25e17d196d1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/3af3cabdea0ce2f3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/43dd297a4824c424_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/5445d97c0ba39932_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/5b520f29f907e97a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/5b70ab48f346dff6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/5be730099e2d1e3e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/5c160c98f6b0e2e8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/5f232009d9ee7634_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/60e679941208711d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/6ac2a5ce1f87808c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/762f62de057c0fc9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/7e575746073c75ed_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/88a307d09a45768c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/8c92e2fa07a9121e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/8c92e2fa07a9121e_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/90ec518fba35891f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/90ec518fba35891f_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/9119b3cc47548319_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/9460a6ba2daa3295_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/9460a6ba2daa3295_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/a2b53de7eaf727e9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/a5d6bcce35bc7475_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/b03dced0dcd88b1e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/b6165d9548afde92_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/b7e105217bc9c5e5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/c392b1e5fb08c126_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/d7946d00f2e1376a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/d85b5e5c4acd813e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/d9d8fbf977dedb59_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/de28351e2ea658a2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/df7ab6ba53ea4e7a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/e6eb93dca5412515_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/e7e2abc4e5a3e0aa_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/fbd95b051be10bd6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/fc9eb799ae313e7f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/2f157599-d077-4b86-81b0-ce3863b5f858/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/50fdf5b3-4e70-4cf9-baf9-7249bbf80c0a/29213d2ab33b53bc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/50fdf5b3-4e70-4cf9-baf9-7249bbf80c0a/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/50fdf5b3-4e70-4cf9-baf9-7249bbf80c0a/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/59a16354-cfa0-42ed-a44b-cc3b49e17c5a/6bd2b74669b9987c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/59a16354-cfa0-42ed-a44b-cc3b49e17c5a/6bd2b74669b9987c_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/59a16354-cfa0-42ed-a44b-cc3b49e17c5a/7f8a0389b51446e6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/59a16354-cfa0-42ed-a44b-cc3b49e17c5a/7f8a0389b51446e6_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/59a16354-cfa0-42ed-a44b-cc3b49e17c5a/8c05ecc7896ae8de_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/59a16354-cfa0-42ed-a44b-cc3b49e17c5a/8c05ecc7896ae8de_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/59a16354-cfa0-42ed-a44b-cc3b49e17c5a/b076fcad9d02efd1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/59a16354-cfa0-42ed-a44b-cc3b49e17c5a/b076fcad9d02efd1_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/59a16354-cfa0-42ed-a44b-cc3b49e17c5a/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/59a16354-cfa0-42ed-a44b-cc3b49e17c5a/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/861a2246-b5c6-4feb-a8e6-64f0f16a2064/054440bf2c331c43_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/861a2246-b5c6-4feb-a8e6-64f0f16a2064/44569690086fd740_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/861a2246-b5c6-4feb-a8e6-64f0f16a2064/e00244a1c1d66cf5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/861a2246-b5c6-4feb-a8e6-64f0f16a2064/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/861a2246-b5c6-4feb-a8e6-64f0f16a2064/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/010090a4715f7982_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/0178ed80ba166694_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/01d1bd9d3481613b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/028a34c713cffa8e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/029acfe340af5384_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/0325bbbffc847ef9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/03bc795eaff9b5cd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/03de6d80e67b0c21_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/03e814ec520f66f0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/0566c36e9d66c629_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/05adfe7bf452189e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/06693067e337341a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/06b37557aa4cd1fd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/07274db1f47b1bb4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/077a9cbf6788c7d1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/07df800e6fd2e4b5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/0809a6f55fed9f3d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/08621f8de27fc09d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/08c00414b0740128_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/08ff00bec6ec0013_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/097055410aa8a2ba_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/0a8fb9475f3b996b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/0ab70eadeaf07b89_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/0ac6ce1f2227e805_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/0ac92cfcd164c6aa_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/0b0f1db4427bcd14_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/0b6b46031efba167_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/0b6c9873335e9d78_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/0b78ec7f18bf27f8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/0c1f9942b5049920_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/0d5b342f3c27ae46_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/0d706a3735b5c179_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/0dd991f1c793b330_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/0ed0588b1aeed822_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/10a6de262188cabc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/11ff41e2c72c2a0b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/1326682a85b8839c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/13e636b6c483e1b5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/164a06b5da754d80_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/1651158d19b17e1a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/16a55b1b63681512_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/1797898dbf9abe3d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/1848b8431f464bbc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/18d0a3e4115b15f9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/18ecd22745dd139f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/197548d334d866a6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/1b75cec76c4aed75_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/1b90a8d8469ff377_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/1bf9b16217d3cd8e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/1cdf58bab8d09377_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/1d8d40c8bd53afc0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/1f64274428bc3ad0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/1fb712b8196b1476_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/1ff0767ed2f79efa_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/2162042b78dab24e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/226d42dee542a505_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/2291a5b924b9e143_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/244ff8db75afbcee_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/24692dc296675274_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/261fb8495be0de84_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/26e40f14db914a7d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/27ae31930a5f4c88_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/27feded4fc28f7b1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/283a01c1fd5fcc90_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/28a1a4eb95900cc5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/28aeb8e6927f88bf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/29bf4019111fdf9e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/2a47eea8f2be94d4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/2a515c4601a460b5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/2b944482863d9787_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/2cdeeba0c8388ef1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/2dc85643336d7c98_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/2dda1e0469cf29d5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/2e5fdb2b74aabf38_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/2ea26e623c043319_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/2ea68d59259117ae_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/2ec697a6a7916a4b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/2f20eeb0f78a12cb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/2f7904bd5ff48aa4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/2fb23db919cbac4f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/2fc8d15c7838f3d1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/2ff2dc5711b5b44b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/300c4a7acfaae0e6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/30c3f5d24b89073e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/3146046935712b98_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/316a18f2391b96b6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/323c59764f29d1a6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/32c00850e582741e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/3375bf704893c9df_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/34d132cebace4bb8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/35b1864f8dca267e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/35c50d72a0d9abe2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/35d5ee3785bf2d41_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/36b306a09b9baa69_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/374ef6e0c7130fbc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/37b299fcd53f078a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/3a45eb408a7d9681_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/3a707dfcd239013f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/3a7363b2769e7ce9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/3ba354e4df139a39_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/3c150c2dd87fd6e8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/3c6a323d9eaf2d02_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/3cbf65811b564b6e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/3cc5185e299fa410_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/3d2883b151058934_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/3d9cc84221ab7d0e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/3db535d43555d95d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/3e083bdfa59388de_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/3e6b96474e4cd9e2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/3e8f5891b6a76580_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/3ee555b7d09662f9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/3f7ed6652d14748c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/3fa3b9230004c5ac_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/40000ad0b2717f89_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/401c9ecb66380e7d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/403b044f976196b0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/405dcfa581a33f6f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/40e5dd3864b40061_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/417b0661fb6da4cc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/4249a405b758e6b0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/43030d4dfc53606e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/434b43f63be1082a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/435dc7180587c2f9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/440beaeaa3e9275f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/44a0f1f0d4716da8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/44abacfeac6e3a3c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/461d0538bcde61a9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/462cff8c40a19469_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/467bfef644ed08fb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/46a7a4fd8de8ac15_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/46ad973d0ddad864_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/47317d65fc0a6c95_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/473d8294e4f39459_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/47409dfcbc7bc816_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/47974f690887fe0b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/47c5c28cdfafc410_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/48ebd49fcb59fa62_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/491eed5273dbc6f8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/49380de47cda0142_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/49be4907b4618b49_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/4a351c50eda1dabe_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/4a762ea7b29f0040_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/4aefc6516c8f09ef_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/4af99deb3627b3af_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/4b3718bc5ce62ed0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/4cd488b0eb39b812_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/4ce7b5a39f349938_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/4e68236ef8433dee_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/4ec86f3c7b50ea9a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/4ecfb74cc2c5020c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/4f2214c1205d9ee6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/4f3d92a68bac1d08_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/4fcb373f2c5c0cc8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/4fecf1bfc69078c9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/4ff568a32f1bc060_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/50727972d197bdd1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/5094b1a41ec0992f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/5281c83d55a5a3f4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/52faaed1e72cd26d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/539ea2533efe9124_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/55092d5b76a5235f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/55c4d626167ca37f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/55f3f5be082df174_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/5633b14a24918a87_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/563911f0d5a08805_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/564a4f7cac02234f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/5770f37e1158342e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/5908a9b715d02910_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/5b493bdce9741e12_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/5b4eca0ef8b63d80_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/5bd1bc949f7a282e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/5c1d26f609f4a349_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/5d568e9f3bb60999_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/5d5dd0ce098b82ae_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/5dbdfe1f78d89ed2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/5e286de0854046c5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/5e929df8ffd0b512_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/5f648b8e8da959f6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/60ada439c219d85e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/60adb161b062547a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/615467575aab9d58_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/617852fb06aeced7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/62f1430b6f83f2a3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/633a9a70ca8b5383_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/63eb77e2513cd8f1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/63f1c8a683f8225f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/63fa8b17283be32b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/641ba44fc9dde0d4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/645c0ebb2a0520ec_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/64ab34cc8d5979a8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/64c8b49a96602142_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/6538f081994b8744_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/65b92e377b0fa843_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/66632c13c1c475ba_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/6717b2b093e246cf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/675f5ef490d855c2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/67be1e13eeec2e8c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/67e02db3cc4d7172_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/68a0bd0feff1417f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/68e48aaaa8eed872_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/69a622ddc4de2de2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/69d908bdfea092f3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/69dc9c00c1096539_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/6a31717497945fd8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/6aafea8d6e8c80c9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/6ada150ef7f7b66a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/6b35672256f5dbf9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/6b73951b12bcfe24_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/6c0f23f3a776038a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/6c199ef7952f1cb9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/6cbae82b29f486c0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/6d1299026d44f445_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/6d2c7a73bf56d82e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/6d6746ffdfe2c5da_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/6ea5cd00d1ef5c5e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/6eafb1f8e4d27046_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/6f45dc32b64d35e3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/6f7792d088936b71_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/6fecedabc9999d8b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/70012114dc1d1d88_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/706accb2deacecdf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/7087aada1f4066c7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/70f0928214687af3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/71471beeeb832013_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/71880fa819250839_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/71af3ff0da25ecb4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/72efb03b6e76c5de_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/74229e2379833847_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/74d8507a8531f02b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/750927c19c5edcba_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/75106a26e2dd80d4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/751bebd4610d5d4c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/76337b91b4900a25_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/76f4c5a18d2a4d54_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/7748de2aa7cf2ea4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/7865ed43b8d1f6db_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/78ab97b6c49538cd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/79a0e6d190a1bf69_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/79dd64d3d88a9e7d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/7b11897a6e627caa_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/7b37f1b48b6d925c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/7c6d2d12385f9ee0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/7cb72d2bdce685df_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/7d76fe340dfdbc4e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/7e1ae7aeaa77a535_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/7e7adf60d84afd18_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/7f588195f082f356_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/7fbb5007ff08fd98_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/80227b644439b542_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/818c23c29ee1a73b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/82a15928af9ccafe_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/82a24d405442f878_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/8397b39bab574872_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/845bfef2605ef371_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/851e9d42098ef1c5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/855be4791a76b056_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/858b1b97724823ac_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/8637c8296b939632_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/87cd4e61fddcd966_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/87f3bed1bdda23b6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/88a44733befdfde4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/88f7d898076d4e73_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/89aa94d34fed7381_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/8bc3812d75d08ee6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/8c6f07b5576b4aab_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/8c7edcd939fc7e83_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/8ce3ef412d22aad1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/8cf4139cfdfbfc8d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/8d537950d77cd7c7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/8db29d494e6bd315_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/8ee7c4a577f7a0de_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/8f16ca910597cc7a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/8fe77c96e12c0e82_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/90380676b30f51d7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/90404dc2347f9dab_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/904d9d11ab898cc9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/906a12dea99dea37_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/90c1259cd9567b5a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/9136a8b19fc17c26_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/92b1a249fe90382f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/93fcaad73df22088_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/94351c9a10539573_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/94a97651f25813ea_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/97c2222de82aabb7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/989b1c0e817cb740_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/9944e43e0af2504f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/9991dcbe73719eb6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/99c7c14f7c842aee_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/9a1d5e2e19cd6830_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/9ad2d6a2d0d34d8b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/9bbcd130c76ca82b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/9c1a47b65557b3c7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/9c44bf9d9f6d5046_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/9c797756525c3a9d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/9d1cfc17ee75085f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/9e0164d9f9c21b2b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/9e208c9945614b0a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/9f6242da93cf9a60_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/9fafcd5b7c4c7d46_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/9fe159871d0f34b1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/9fe60c30216cae9f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/9fe6d760ee68bde4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/a09e183f013c55f9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/a111af295948c13b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/a22c8b7fdc93ba7b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/a2516d049d3061eb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/a3210a474dbf3470_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/a441a981da270027_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/a5e8235022e3ffb2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/a6e6bd77279ec2d1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/a98098b99e7d2869_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/a9d4becd3632d6ee_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/a9ef7b7d112096fb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/aa4267498c1bdb8e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/abb42dd22bb398d8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/ac8d4fbbff1e4511_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/ac8f3a08baae84c7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/accbc6b98658fec3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/acf7596d327c576c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/ad02fae9789df093_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/ad14117198bec082_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/ae369f724076d110_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/ae902f024ac9b001_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/ae9af5c89b53f7b7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/aea414ab5074aa6c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/aec58053023a88ac_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/af11397f610def1d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/af2753ca257c8835_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/af616d40a7566670_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/af66c8b1d2edf140_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/afb1287c332f9b5b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b0b96b9337ec0f01_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b0fcfb2205e12b8c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b11399c2d34b65ec_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b13f8d35dd4416ee_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b17089788610695d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b20fb40450b8df8d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b253d9782a04fa24_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b25fb755218203c7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b27f4456a0893c22_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b334d6f43db7225f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b375963a13a8ca2a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b3b3268a576e2217_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b4b3413faa63c5c9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b535d4da7e56c833_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b5384dfe649ae3c9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b57d38814d61150e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b5db8021d45d1a84_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b60781e5744b2a1c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b64bde2f4d5986c7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b6994106f42f340a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b70da7e783de3e3f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b71ed6589c7be093_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b754d8e55cf362ea_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b7909cb8f6e30f6f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b7c6fd9fbd20ecaf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b84030228bcea101_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b852063f83c7b9f0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b8c0761c78dae0e5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b8d3986c9b1abcef_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b923d597daf5f5da_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b9a3f2fc12e61701_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/b9fc73196a15de83_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/ba5bae53b65d3bc7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/bb61669531d4e58d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/bbd63dece1bdf1f8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/bc1b9eab080caf12_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/bcb692b2d63ab273_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/bd35d25df8e8d68c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/bd9efb0b6d94f452_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/bdcc4a26b93e80bf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/bdefb43552790deb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/bdf98845dbf92cf7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/bf08f2433cc99fa1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/bf77de102b70e497_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/bff5dc42912015d2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/c338bdddb184f703_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/c380b0c4841aa25b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/c3c9632fba0bd8d7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/c441dfa2465b5fa6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/c4515313351f1df3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/c4e866e94b70e9ac_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/c5765227c22fbdf2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/c587a83357030b91_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/c591d07e12a43bf2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/c5bb406ae3cf31e5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/c6c9e29b3412b09c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/c7a30a85a85d0ee9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/c884bad1d888a6ca_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/c9393eb9835030ef_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/c9d81d6c12c3977f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/cb5b394264a7b03f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/cbdb9df688ab59c1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/cbe8c6cc8cdf4253_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/cc839ca63759a933_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/cd49d7961e20a6a1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/cd5860071fc9af25_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/cfcf69a2a44c3240_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d01e08504cf7f0d2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d08588d1c7114cf6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d120c6efa03f7bcf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d162575e51be1b1b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d1628889ec2280b2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d1958a4c2322ae80_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d1d74df0e0804e09_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d25dd5c26ab005c4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d266e92b0ea7b46d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d28e10a752b14040_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d2b0ca3185c63611_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d3150e10cc3f8100_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d32c1ae48c08773b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d41452f8148bab4f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d4890a4a0126077f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d5d07c05706867e3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d63ecd498f2df031_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d6b435b13658ad79_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d724a6a489355fd7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d7614f8e699d7af7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d7860e993a5630c3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d7c1eb09513b88dc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d7ee02e163765039_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d85ab24a940b886b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d868e21a071aaa88_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d86a30efba8dca7d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d877c081a5e74446_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/d904d5df8bcc2368_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/da9bf1b664b212e4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/daf657e3d886e3f5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/db9869d05db04f19_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/dc0b85e29399b7db_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/dd86e516f7ea18c3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/de38962cd1ad8145_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/df1566ee5748d5c8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/df29d983c7787c30_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/e06cabc98b1c4b25_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/e072450abf56cd4e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/e1a11641a222cb84_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/e1b0a3fbeffc9be3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/e2539ce4c4b91c64_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/e27dc59ce1a1362c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/e51b347d4c00be5c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/e56ddf935567f7ef_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/e6a4d86dbe08b13e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/e783970fc7df1fe0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/e8fca6e5aa54903c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/e909f7c6df34fa61_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/e90b160176cd82b1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/e97e0c67bace2cf0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/e97f8dab42e0d8e7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/e9953b743f7c2f41_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/ea213b800075ab34_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/ea7647fca069f90f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/eae1d667c105527a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/eaf75b8fe5189380_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/ebfec19c01a2e65b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/eccb5f0dcff7ac51_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/ed35e8f7da1e5e18_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/ed88fc92ee703cf0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/edc4373b200da25f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/ee829bf4f42f1888_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/ef2982b5975e4296_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/ef5b2db1a8142fc9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/efbc196a4dfb22aa_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/efd475c526c9c1d8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f016fbdaf514b269_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f1263cdcb28a2882_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f22388deab1c296d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f267e80a6f81f4b5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f2b90e027d21b687_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f3f5fbc2f09835ce_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f4e079ef6a9cdb5e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f529e18a77966546_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f5a310cc8b2edd28_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f5beb7f811387224_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f66df915c89a519d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f6c0156a2fea2845_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f6f4d65c2f0747df_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f71b17f7ebd58e9d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f791b588370f3828_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f7ae4156a119fb28_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f877fef425749231_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f8901d129c274bed_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f895d0a6446241da_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f8d79728ff97f661_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/f8e0d7196e603f5c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/fa4ed36594c5557d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/fb0c98a284d9915a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/fb96252ef371bd49_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/fcbc1da413162718_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/fd1abaa0e6192be7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/fd5f5589973f3caa_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/fe0825ba0022493e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/fe0863a94af0f7c9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/fe756b47c45a5730_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/fe8c580bed1de761_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/febdb5cc1f915199_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/ff36c015dd67add3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/ffa1cfeb1d201a97_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/a57a7ca5-6305-4460-ac5e-392e618ce994/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/b233e79b-4fec-44b8-8960-0d6d7a955e83/54024a26d3ccf712_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/b233e79b-4fec-44b8-8960-0d6d7a955e83/82d930988f59e1ff_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/b233e79b-4fec-44b8-8960-0d6d7a955e83/b867624a40faea70_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/b233e79b-4fec-44b8-8960-0d6d7a955e83/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/b233e79b-4fec-44b8-8960-0d6d7a955e83/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/f8395d38-0733-4946-8c64-9f377902fab2/a006053cee55d015_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/f8395d38-0733-4946-8c64-9f377902fab2/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/f8395d38-0733-4946-8c64-9f377902fab2/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/579544fd7d0441717f082c9eb123588966aa57ac/index.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/0c44e4c4c8c8ada1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/0c888c0b749b9e33_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/0c888c0b749b9e33_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/0de650566a5514e3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/10c1bc332814f1db_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/1354b5f7c2a856d5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/1354b5f7c2a856d5_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/156ecf8e0a19058c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/20d3bc6daf5f3440_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/241897cbcb541b52_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/262e9df1e2d15d47_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/2786d125441c365a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/2786d125441c365a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/2997514a15f97019_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/2ee8d95c51d3b7d1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/2ee8d95c51d3b7d1_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/30fdbcf80e02e088_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/3655b57a8feb677c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/371e8f851c4af508_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/38fe1561e2002ceb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/3aef9bfd971876ae_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/3aef9bfd971876ae_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/3c0f455159e10c2a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/41771143ca47bf5d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/42690ef93d41a7f6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/42690ef93d41a7f6_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/4553ba12b187f4c1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/4b4ab5e2e8e51017_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/4b59694a60068a9a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/50bc2a822f0bd3f9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/50bc2a822f0bd3f9_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/519787191582cd5e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/5212c900c21f2442_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/550e41bd70b0ee0e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/5d515bd553f8e102_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/5ef247a383493ff1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/60681db93a93ab4b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/628700c977a167ab_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/65fcb4b93f8cfb33_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/65fcb4b93f8cfb33_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/6918f0b1f2066aad_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/691c63d6eab671fe_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/69c5c36f0b081f4a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/69c5c36f0b081f4a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/6b913fea10b54c71_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/6cae3579b4d1c390_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/6d164b319dcb74a4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/6edf68457c8bfe1f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/6fbb7fa7d8d2930e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/70a9ee61830d7cc2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/70a9ee61830d7cc2_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/714a04bda77fc715_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/71795f3195364dc8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/72465c1d1abe1a64_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/78fb11ed10f5f2f5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/798b0126b0fa8b30_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/798b0126b0fa8b30_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/835577074314aced_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/835577074314aced_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/855623f4c52e90d5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/855623f4c52e90d5_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/863db226d286a226_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/882359eb8f40badd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/882359eb8f40badd_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/892df032d6d084e4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/892df032d6d084e4_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/8dd5c96853e60ff8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/8dd5c96853e60ff8_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/8f5c3973168e9cd7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/913158a8fa01b685_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/92f3e7b6cfd21174_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/92f3e7b6cfd21174_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/94034c254cff5cf4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/94034c254cff5cf4_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/980b45a396a84b64_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/980b45a396a84b64_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/9f9fe787af5267bb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/a06c7758aa595dab_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/a2bb1795da26e56f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/a2ec65f3093378d5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/a2ec65f3093378d5_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/a6d86813558e38bb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/a8d2a8f40acd0424_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/a8d2a8f40acd0424_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/b2ee940d308dea2e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/b2ee940d308dea2e_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/b35e5bbd39c36bd3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/b35e5bbd39c36bd3_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/beefeca20bbb79de_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/beefeca20bbb79de_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/c020baaa4a2cd60e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/c0c3c1efb78cf3b4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/c5e4712ce6d0b5b7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/c7b579a7fc76cc83_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/ccae21030651acbd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/ccae21030651acbd_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/ce182d4e15a26d65_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/ce182d4e15a26d65_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/d76753c35e47b9a6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/d76753c35e47b9a6_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/dcb1afafccfd5e4d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/e160ce32c72e95b5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/e24e9ac859acc440_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/e7a0602c472ef959_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/f1a2f898505fe7bc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/f1a2f898505fe7bc_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/f32c33e67d0bd51d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/f9f18fce84316c15_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/fce29a6c31af62bc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/fce29a6c31af62bc_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/63b1b16d-3189-4b5f-9213-9048e2d49fc5/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/9047687d616d83358dbfa7158e9cf485f6d3ebac/index.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/961aa296b38fe90a3417c793968cda30d9a973d0/03be0e10-8edb-4fe6-8ad1-f9d13347f67d/5c44c608e968d1a2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/961aa296b38fe90a3417c793968cda30d9a973d0/03be0e10-8edb-4fe6-8ad1-f9d13347f67d/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/961aa296b38fe90a3417c793968cda30d9a973d0/03be0e10-8edb-4fe6-8ad1-f9d13347f67d/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/961aa296b38fe90a3417c793968cda30d9a973d0/1bf07e59-9e36-49d5-824f-921b7a4b4370/d1fcfabdff80b26e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/961aa296b38fe90a3417c793968cda30d9a973d0/1bf07e59-9e36-49d5-824f-921b7a4b4370/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/961aa296b38fe90a3417c793968cda30d9a973d0/1bf07e59-9e36-49d5-824f-921b7a4b4370/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/961aa296b38fe90a3417c793968cda30d9a973d0/589cab1e-5f40-449d-8fb8-541d1be495b1/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/961aa296b38fe90a3417c793968cda30d9a973d0/589cab1e-5f40-449d-8fb8-541d1be495b1/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/961aa296b38fe90a3417c793968cda30d9a973d0/b1e4fbda-fbe9-4cd3-bbf1-e98a67c9f8f1/19b26a2a946d82ed_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/961aa296b38fe90a3417c793968cda30d9a973d0/b1e4fbda-fbe9-4cd3-bbf1-e98a67c9f8f1/e69a596848720b01_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/961aa296b38fe90a3417c793968cda30d9a973d0/b1e4fbda-fbe9-4cd3-bbf1-e98a67c9f8f1/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/961aa296b38fe90a3417c793968cda30d9a973d0/b1e4fbda-fbe9-4cd3-bbf1-e98a67c9f8f1/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/961aa296b38fe90a3417c793968cda30d9a973d0/index.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/034c6ddbca1c01dc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/0587c5e59af811eb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/07d177d7cb118f9d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/09a3f479389b2f3e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/0ae4079e81991306_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/0ae4079e81991306_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/0cbc2ee61c9e90ce_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/10bdd7a5a8e0f8d0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/14965a1c8f5f8d7a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/15f9beff407d072d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/192c2092560ae10c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/1b0872fee1f9d4e0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/1d49f95a84be5ac1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/1d49f95a84be5ac1_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/21207c6a01baab90_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/27cb7f0323a443b5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/2c5ff5da48d32502_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/2c5ff5da48d32502_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/2fb909d30c4feb9b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/316a1136edb9ae89_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/31c4f4ef122216fd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/3237b092b8893c71_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/337829bd96c0bb0c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/337829bd96c0bb0c_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/3793732114425c02_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/39bc77af21c7a055_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/3f6b73d560506067_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/40050dc4a21d289d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/400d4bf2f85979ca_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/400d4bf2f85979ca_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/41862b87ea43192a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/41ac76c57e72009e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/445133e5733d278a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/4ad26e4762e51e37_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/4ef4bf98570f5e7c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/5492342daad87031_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/55e6f5660736d734_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/55e6f5660736d734_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/5751807d7822f320_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/5751807d7822f320_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/584532a04040a579_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/5b826b1aaaa18c6d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/5eaea9cee2153b18_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/6202cf6b8c76390b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/6202cf6b8c76390b_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/63176c280e1f2620_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/694364d94928f43e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/6bdf0c55fd64fbff_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/70dd1232aa1dc49a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/710a090431817783_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/759937651cf59aed_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/767b47419e493d42_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/7ddd4bb8ec080cab_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/7ddd4bb8ec080cab_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/81f94cb2c2a30976_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/83302bec4944bf86_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/8444d9b9710f63a7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/9575c9466e2f27f5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/9575c9466e2f27f5_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/9a12e1ddedf443a3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/a06a529bf5188b81_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/a06a529bf5188b81_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/a5c10a00111ac550_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/a5fd86fffc86886e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/a5fd86fffc86886e_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/a6aa9ae962be64c8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/a6aa9ae962be64c8_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/a8102c20e3dfa22d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/a8102c20e3dfa22d_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/af432948523ffc36_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/b094bc4de53b94b9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/b3250c239391a92f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/bcebf0d2726cd7d0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/bec09916227584ae_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/bf3c3a1a8ab24f5c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/c389b5211f3327c2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/c3e9132f62a2f24c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/c62e8a3d503b863a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/c7e7aaa9e27d30d8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/ccd3166c8fe34364_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/cdacfed793b166c9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/d061642eeac34211_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/d16ba1100e823add_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/d5a711f4aa681eba_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/d5a711f4aa681eba_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/d9c32ce3dbcf7a51_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/e439822d42c03eba_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/ebd61f32f4bb8c70_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/ec4a483d21dd3ff0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/ec4a483d21dd3ff0_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/ef296d5201d80c31_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/f3beb061b9aeb818_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/f5a1c24cd06dd4f5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/f74f7b59e3071ae4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/f74f7b59e3071ae4_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/fecc356fc600484c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/ffc0fee7b67a2edc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/4aa4bc14-e58d-4cc0-afdb-b30e55e909ef/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/993a8fac74b4ef94e7a8ae0488713b76dcb01259/index.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/010e2aa41be96f1c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/036f5a255bfb08b0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/046fcb9530154a4b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/07c2a39150f403f8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/0981e7fe4cf5c25a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/09a82bddfd94214f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/0b045482ed4b93db_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/0d449a67befa201d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/0fefb1ceaeaf5098_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/118f514158558b6a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/14f236b4ae130bc8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/15c77db8fa93e72b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/16af324cd017e896_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/189c8e2d792208bb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/1d8eca990891ece2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/21aab6fd892c2a4a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/24a5591fdb8d6859_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/285dcbb4d87aea56_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/28efa1b838c69775_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/2c42e38f7a4f0eb1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/2e041b1d682c46ac_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/32e048919195f790_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/3775017a28af54b0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/398a220eefdaaa79_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/39d4d76ff1b2e13f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/3ad853c9fdd19ec7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/3be6db09689668a0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/3c87e42e0ee9666a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/3f9f6310fd3c5f1f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/3fdc9d5ddceff950_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/43039a715f84c6dd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/4304a31bd22aa08b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/43a1daa1c514d4a8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/463810f33351c7d3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/4715e9ba39cb3d9c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/481d60447e0af49e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/4b4c63d8abd570ec_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/4b8c146d8a8a25f8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/4ca0583dcf7e13b0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/5881428d47454c97_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/58e7b394d456505f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/5a7584c974f0c78b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/5b4380e594b33a1b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/5b6d22d979ebc753_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/6237dba18060f3ff_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/64b081f2a238b90d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/6521771cc9b6ca2a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/68db37ea074f7a80_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/6ff546fa3a5e8807_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/721c7dbf8a1bfdf7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/73b376e03e29ff27_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/775f273f09f4344c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/7ab751f11d6acb5c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/7b460b10ec5a9b07_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/8288c38a1acdb8fa_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/83e18fff80d5211a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/85b40064e623738f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/870af6496c3bda8b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/98390d09e8c6a97d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/9850de720ec00922_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/996754ef9d3bc530_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/9a722f391e682c9e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/9f9b39e1821bbeb0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/a31f055d9b390624_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/aafa214d475b08d4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/abcbd2ecbf8bb923_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/aed0a671853608a3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/b3f521cb6b89c79a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/b6feda5769cf1d94_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/b75fa98e7f699f0c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/bb291547536af813_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/bc48797fa37441ae_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/c3e1e7363f0c7da7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/c53ff7118f924ad0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/c66af30274639a3f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/c751bb5b15c6a36d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/ca3e8050d22ad0af_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/ce9dc6717599ee3f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/d073a59aeee8ddbf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/d33730ed1f8cc046_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/d8ced88380b30889_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/da537dc2790fe606_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/da568aa26c9caefb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/deb95f8f6d598448_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/df32ba27f27a019b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/dfa7b72693b3362f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/e34be89f97399391_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/e72841ac9f1f9397_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/e90aab69514b2968_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/ea7a46c4086106dc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/eae50c186db28a9d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/edd8a0ed102e61dc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/edfb706d30168794_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/efd150d0e378ac5f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/f1f630e35f9accab_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/f3ae579bf9e517ec_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/f79fe639651d3334_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/fa061e1cbc1b40a2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/fff3c320501c2141_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/f1dcab9c-c52b-4438-9405-9ae56e42c738/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/a7cb8af1c7b1ae0fb9a33d6db776bf2d68eadb9e/index.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/00e21cce40be2887_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/00f054370cc4d95e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/024f1406b71919bb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/032c092253d4cb7e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/0614f28a1a74a65e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/067d93e8c8fadb1f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/07a5a327dfcebe0b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/09b5bc0bc33e2ebd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/0aab74dd13a7ec98_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/0be6979c730980ae_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/0d474291750582ec_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/0e19879486bf9a69_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/1004d1e2f4b1d18e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/14a58e07e1b749e4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/156cec31acf2c45d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/16c95698ab267681_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/18f37a84ca266a79_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/199e590df0d19782_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/1bc976e736105ea7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/1ceb285f297627eb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/1d813428989a99eb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/205b18f3ee52d95d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/21532d19c0fcc24f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/241189d344b3c547_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/2442001e36350cd7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/245bdd1f09655e5c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/24cc03f601530def_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/25e207f5a83d5621_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/26e97aea58c16df0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/28a3dca279ffb8ce_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/2b5d2a0652cbbef4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/30944830c7c7d015_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/30c9f6cd24aeecaa_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/36cdd3c30b1ce569_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/378e888e22f37133_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/383d122a1d384799_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/386921f56fcc00f6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/38c7495a87818852_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/390baeeeb49e1b46_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/3911b6bb960d5dba_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/39c8446d4b6ed0f3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/3ba7954e152570bb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/3cfaefe3440af4b9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/3e39c5f26a9faa53_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/3f05103c9db5c7ec_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/3f78a34f60e4ea5c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/41a8c960f93a27c2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/4267a5201fb73900_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/46ee7a8d9a644a71_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/4858f2ed18beac69_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/48aef4e2e7cdb905_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/497b464009271593_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/4df411110640b594_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/56f5a0d6d5d6fd2f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/56fb54514aadd8b6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/591ce1c8ffa9fc91_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/5a4bedf49ab00462_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/5aa8e3f0072842ee_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/5b5db0d35f953ca6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/5cd59ce3323b055e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/5cd59ce3323b055e_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/5f09c8f8738d50e1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/5f87160deb37ef79_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/612836579c828552_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/63e12c564a03d553_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/651e62789627002b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/660d0f16611c5eaf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/69af36bc9adc9559_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/6a2a8817d7dfe967_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/6b75162ab42246d9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/6c767a5b774596bf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/6d1d386369c73097_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/6d55b5184df1443d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/6dc5fb92b0c2e213_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/6ff144cc889e32e3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/72acf894c8f003ae_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/72d4ad6693d4faeb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/72d938f9de4fbd0e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/79d881ec45f1385d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/7d85976da1ebefa5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/7dad506d561013c3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/7fcaf93cb76b3cce_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/8107cdc3f1a5f26a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/84426eb28ee2def4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/8467e5b4d552544f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/84d2cd0ba826f9f3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/86343b01e9ed1171_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/8641ce2afb064cac_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/89c16cbfdc962990_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/8c849de8ba01eea8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/8c8845abe90bff9b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/8e039e3ac9d9b077_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/8f3c192d9e696a00_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/904e1af19450b1f8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/90f3607369d9aa12_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/910d6b6d3da4cf8b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/91245d97397c554c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/91b877e671f9175d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/92f66b46ad5828df_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/9538eac50d24be2a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/9689990f42775cbe_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/96af1e3ef3ba4c75_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/980ad0ea88d78bfe_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/9973e4080770f2a6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/99a25c32c2a8d2b8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/9a9aa34380687509_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/9ab71bb7289f997a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/9b4ec36135c842dd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/a1ae36dc42e083da_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/a277d7b883b6d65b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/a3c93992ec13e47f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/a43ac071a6293829_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/a43ac071a6293829_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/a62a768aa3c80e0a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/a77f3337093c70be_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/a8c360760f799ccb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/aac95bacd3df4d2c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/ab39f7b6a3b5fe10_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/ab7b816ea3629258_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/ab8aaff42b0a5ce9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/ac507ccd6f3a2b02_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/b1560b4b5fd1e983_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/b1593fbea8e92b53_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/b15de68cc0cd4f98_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/b16e387f944d9a66_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/b2606b201af181a1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/b36609bb002518b7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/b7a517426c7f0357_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/b7fbafe94d0c224a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/b7fc7441308b400c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/b88d5e775dcffa07_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/b8a7959989537868_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/b92a81493a1dc65e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/bade2413f0ecbd45_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/bb7804956a5f7788_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/bd09d29ac6d50633_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/bd96509006ee329a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/be1b3f73bc0be0ed_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/be615f32826a8ebf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/c484bbda3db4256d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/c5450fb2d6388908_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/c5669de7dde57b60_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/c5b031dd49d15c9e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/c77a5944ac39fcff_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/c7fdb981e3285e1c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/cb37d1d24d7dfa62_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/cb77df34ea397361_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/cc15c5e19d80ec08_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/cc1abda097f32e8b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/ccc4f9ee47fe15d1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/cf9ac69b9795ce19_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/d070bbde8c88abd3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/d0b3549017e33c47_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/d3a19edb12a88d34_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/d4fa9fb903c96d92_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/d50ab87eabb90640_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/d577667594e92b64_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/d5b78e5ea8882938_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/d5eec4896e346682_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/d690f836d97cce6e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/d73e8c92c395887b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/d7792e69c71d0e14_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/d7ecf8f72f904980_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/d85c114ff6aae5c1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/d92e984bb6b9ad3f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/db5c43018f4a6c06_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/dc2c51c50848cd06_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/dd190ed1b2d42539_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/df9bba31f07b2dad_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/dfc12e7656e36032_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/e47bac881e000593_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/e61b842bd5087d39_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/e6800195e7abc532_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/e765b5a72e123d47_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/e7923c7275f78e4b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/e8b657841ef5c2e0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/ea066f3cf174ce77_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/eb693ad74ff2dbf6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/eb82738b5af68423_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/eeaf0b05507ff81d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/f19b290d38d0a932_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/f1f40d668edc875d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/f24cf282a9966cf1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/f27f338bac1305f7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/f2b472eaa88aaf62_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/f47b53f55fa81242_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/f5c619d43d285d68_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/f82f5adf8b0ed008_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/f89128014a67d1e4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/f99333e8b7c429b7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/fbadd0b77df04db0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/fe40d0277e4cfcca_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/fe7b6673ab44ee0c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/ff224f44abbfe29a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/79cc46bd-ec3b-49cc-84e7-ca0b4927c265/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0029f2d25a32abd2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/002f08f275657b42_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/002f08f275657b42_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0060f98a002bd41b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/00bfc277edfa4aca_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/00fa58c1b46e4a3f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0123e6fbcb8793d0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/01339410823c5ef1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/013e0257c24b883c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/018931f401e5e2fc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/018931f401e5e2fc_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0190a5f2ba813975_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0200c1b5ff6b18f1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0272e8cafda516b5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/028c0bb138cd246f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/02a12436af2b00e6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/02ed6a31e1c0c930_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/030dce102f89bbfb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0352f5d2fe9df2e1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/036bb5b108b732b9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/03fca120d959cb82_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/03ffc940b2f92d23_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/03ffc940b2f92d23_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/044600a727a9eaad_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/04cb7676af8631a4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/05123e9d5ca4bb40_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0547c35d653701bc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/05b2a682c531d21b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/05e6ab9f9f35cf4b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/05e6ab9f9f35cf4b_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/060cd1f132138a54_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/060cd1f132138a54_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/061539260d58d2ca_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/067633486eeab1ab_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/06dc1e2342f5188c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/079b1ce0ffa49d99_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/08269b400d633386_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/083a51b7139af6b6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/083a51b7139af6b6_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/08ad48d638a934c5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/09b000fb3ad014ce_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/09b000fb3ad014ce_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/09cb3fd7d2f474de_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/09d6f31c68de0560_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/09f894df8e4f26ec_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0a13c6b91d38f9a3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0a13c6b91d38f9a3_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0ab392b26659de1b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0ae0eb2748d7cc9d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0b524744f7fb081a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0b524744f7fb081a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0b92d7aa3137a9d7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0ba0102bdce0a7bd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0c460ff2680b84be_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0c708723bd6fb49b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0c708723bd6fb49b_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0c8142858c8a8cd6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0cafc0c761e2aa86_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0d2d2d097885f082_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0d9a03656e34d0df_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0dcdd33dd73bb2a5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0dd278968560fe40_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0dff3d8b28599dea_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0e691394da245915_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0e691394da245915_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0e9fcc4bf5209cb3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0e9fcc4bf5209cb3_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0eae9661bef1aec1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0f494170c89d6c68_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/0fe3bdbdeefbfeba_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/10b0bcaf44441eb6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/10fa69ea87abb8e8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1103408f901a4630_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/11d4267d4579a4cc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1335bc41a2ff5741_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/13fab61b84493ab7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/140de549ed0b11a6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/149fc7f20f4249b6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/149fc7f20f4249b6_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/16183a7a01cc5ae9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/163d17361f599a4a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/16a6931310311f0b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/16ce655a2fb17f9d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/17216002a6f88b31_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/17265df2fe87a1d0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1772d2edb20d0a5a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1772d2edb20d0a5a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1786025e2308b5ff_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/17d74b8f97bc2876_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/18620f0cae546637_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/18c59afe2306594c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/18e4757eeb070a4d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/18eb19b8e9390b88_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/194fdbd0630cd2be_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1957b52a86294ed5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/19da1491fe9e160c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1aa1dbd18e49fbc3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1aee571026244a25_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1b1127aeece6cde9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1c1f0903174d921d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1c1f0903174d921d_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1c251a94bb693aae_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1c251a94bb693aae_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1c3fa28db0528c79_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1c3fa28db0528c79_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1c7ac1cbf051b90d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1d045de85ea81295_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1d08ce0054bc5804_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1d697042fd67c7c4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1d9863f220fc0316_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1e1cac68e8f3b2a0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1e5c6f69467d8e22_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1e7f5c08b8e4e380_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1e994007c405cc00_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1eb8fb93bda3177f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1ed246a826f4aafa_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1ed609ce142ced2e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1f0ebace0b125963_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1f0ebace0b125963_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1f3a0298ba271c55_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1f468e6d025b3a23_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1f468e6d025b3a23_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1f5fd83b5a400f00_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/1ff8b4449b1b0b30_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/20c4958cd97d5229_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2117a1853e3f2a48_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/213bbaf68fef2863_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/214920e746c10d56_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/214920e746c10d56_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/218cde139e656e46_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/218cde139e656e46_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/21ea6092fc4bf3dd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2229509e3c7389b0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/223d93c86e069699_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2326bf1acb02c4c9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/23704bd9e3ade0ef_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/23704bd9e3ade0ef_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/23c64c660a0a8fed_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/23c64c660a0a8fed_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2412ef7c8fdd497c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/252cedcfc269a8c6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/255c1f570a9ac27f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/25d4654c18020a5f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2642a301765867df_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/26a5fa2c779e8415_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/26ce1c765f56c8db_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/26e8a59c8fcff3f0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/26e97aea58c16df0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/270a3b619e0b65d9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/27293f4cb3e5fb7b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/27dfd07fdddb1709_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/27f7367222e0da93_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/27f7367222e0da93_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2801bb1aedb09ace_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/287c729ce1ee8237_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/28b81e937341619f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/296c80be20dea0a5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/299df59e8be54456_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/29aad51301923671_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/29aad51301923671_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/29b50be7d5337b1d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/29d87ddbfb35acf6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2ac4d343560088f3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2bcb750390e70bca_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2c4dab2b8ea118be_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2c53bf15dc7d382a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2c654035e96392f8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2cd3da05b34a0731_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2ced7c471d3a9946_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2d774716df65c34a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2d774716df65c34a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2d9085399ce1a5ed_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2d9085399ce1a5ed_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2e7ea4941198751f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2e7ea4941198751f_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2f01738de10e6772_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2f01738de10e6772_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2f0b8132c4bea2d5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2f36fea9267ddd83_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/2f36fea9267ddd83_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/309fa92a4c877c18_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/30defcbb2bb6aa1a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/30ec39545b49aa54_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/30f19ca12e91f02e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/31ef5bfbc2973709_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/31fa29da9e851988_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3205bb7c7de7440e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/327888b40b67cc95_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/327888b40b67cc95_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/328ff6eb2a5d587d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/32a84721a1d1bbcd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/32a84721a1d1bbcd_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/32db6c56ea3cab09_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/32db6c56ea3cab09_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/32e2c4b5c8de7abc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/33015423ba7c63d2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/332cda7d6f4a42b9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3440ac044f1e5236_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/346c38803b756847_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/34a00ae2cb52aaa2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/34a00ae2cb52aaa2_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/34a5891628d242a3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/35109e92146d357c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/35165c2f6e8cc8c4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/351e690514b3f9f9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3520a085242b09d4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/359de2112885354f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/35d8f8ef9ddf1a49_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/35d8f8ef9ddf1a49_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/35ed223cbb44bb43_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3601fc5e4ed5eae7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3601fc5e4ed5eae7_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/368f830949aa58eb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/368f830949aa58eb_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/36be1a8943e9ce00_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/36cbc364191c11b8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/36d751db5dcff1d4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3729fa0efaba8337_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/37a2e3af74472b10_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/37ac4620a94296fc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/37d5b7fdee7b3957_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/37fba6cce54ae226_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/383741e63b3c3fcf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/38d6cb3d1fd3e617_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/38d6cb3d1fd3e617_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/38e76d0bd76a6156_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/39284b91d360f619_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3968e94bb1142bd1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3968e94bb1142bd1_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/39e55388dd2cd8ce_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/39f29f70914b766a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3a36b62cb22790ee_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3a375421f5b86832_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3ac437491273e126_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3ae44b1bd13dea04_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3ae44b1bd13dea04_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3b4076ed28bf3ff9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3b7912069836d716_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3bd551ff103c88f9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3bfeb15cbdef351a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3c73470c8c7f7540_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3cc701eb0bb46d8a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3cd4d1aba768e9a3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3d8db76e54542eb6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3e8ca313dcb4c07c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3e8ca313dcb4c07c_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3f0c43b19fefd04e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/3f8fec17670984bc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/40379f8a76ee5e7e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/40835d6c70a3caf3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/423c6a390bd3a2bf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/423c6a390bd3a2bf_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/42d7834e47109bf2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/42d7834e47109bf2_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/42ed82c5d02ee71e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/430186e3ae37db9f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/430186e3ae37db9f_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/433ea32573445487_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4398cc970337c9ad_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/43ef5d7cd2c866c1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/441c19ea6513a67b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/441dbcf906d5a240_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/441dbcf906d5a240_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/44262c51d3d12e24_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/442ea9873de73825_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/442ea9873de73825_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/446bf7a0b1addcee_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/446bf7a0b1addcee_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/44fe6e5da27e61a9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/45106d1b736a68de_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4543164c1801b580_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/45708144a6589cd8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/45cc1d6a521e450c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/45decc49c21c7c0d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/45ef9b37931d8030_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/45ef9b37931d8030_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/46daff1a02f68a93_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/477ff50f7da93a5e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/479fb9e5a39b1284_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/483d75c6d14950fd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/48783723bd618fbe_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/48a4020f6b284e62_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4930349ac5bdaf95_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4957ba728b0ac39e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4958efe9b332199c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/49688aceaaefb3df_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4a8ad21154d46fbb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4aa2d86b26a106a0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4ad58c86c2e48186_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4bc352ec78088335_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4c4ada0c551d767a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4c4ada0c551d767a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4c5c6bd7a9741ebd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4c76c7a80ba540eb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4c76c7a80ba540eb_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4d137094407c24a0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4df4ea25148b7b8e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4df88a55ff5250bc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4dfeccea386878c4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4ea940e7f43148c7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4eda6d38ed73d9d1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4f0ce9a8c9e2930b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4f0ce9a8c9e2930b_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4f749a73f475f6d5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4fb0c0644e3bf4d0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/4ff28143e0cd3056_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/50346c50993be916_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/50a1b2693e9d288c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/50af2e27d9533067_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/50af2e27d9533067_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/50bd74e43006d7a4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/50db13ff9f8667ab_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/50eac6dd39abc46f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/511546c9988cc4fe_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/511546c9988cc4fe_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/51293e64f4e52df5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/513798a24a123cc0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/513798a24a123cc0_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/51b8b055cd711c5f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/52263b053b1db3da_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/523c3e245e4f70e7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/523c3e245e4f70e7_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/5294478d0a0367f3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/5294478d0a0367f3_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/530a4540ff95fd2b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/530a4540ff95fd2b_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/5352d092b301e582_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/5352d092b301e582_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/53d2718175b5aa2f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/53dcc8c2cdc22d84_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/54c82ca00a765499_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/550a151211aa8f30_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/558dcf1ca073b89b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/559d85e976248450_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/56817d23267114b4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/5681a580a4199e26_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/56ba56576f463004_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/56ef9bf95d4188cd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/5753937e31914f96_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/578286609c84b497_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/578286609c84b497_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/58a87ecb873c3675_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/593d430f03719714_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/593d430f03719714_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/594387e4de1e5c1e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/59ac1d5195bb3577_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/5a21aad954e0afae_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/5b72246585668d70_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/5bf99169d8879d37_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/5cc8d7e7d0dd1720_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/5cee58eb648aa5c8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/5d09415e3243f24e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/5d09415e3243f24e_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/5d16a9b9cda9567a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/5f88581bdada8542_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/5f88581bdada8542_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/5fd5b294855d7cda_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6064b216d87f43d9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6064b216d87f43d9_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/608952a8032e1ec1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/60dfc55d1cb18e8d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6103be495c9f0fbc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/61567a85339bb980_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/61567a85339bb980_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/61d28c54d0ec7235_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/61d28c54d0ec7235_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/622bbe9538001149_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/622c3eb7c328ffa7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/62530ba030521b41_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6257246058c5daca_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6257246058c5daca_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/630e1ef315d4eae4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6369cd0c4f4efa54_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/638d2c465a2107ff_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/638d2c465a2107ff_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/63928f50535c43cb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/63c5894ef2b17e65_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/63c5894ef2b17e65_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/63f45554a75111e1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/65fb2e1e36f904d4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/66fa204a4a3af845_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6748bd2791a82ace_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6779c8cf5996acd2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/67a270c93ddf5110_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/687aacc61a31345e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/687aacc61a31345e_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/689713d3d9f1f849_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/689713d3d9f1f849_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/690b42100d768bd9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6933f8d6a19d88d2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/693ce182b99514f7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/69833ebf814237d4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/69c6c36317e440b8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6a2c1946aea9644f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6a510fbb89996a66_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6b2fdd0fbd3bbfc7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6b5d77b1fc19ca67_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6b85f2e2f2700469_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6b85f2e2f2700469_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6c1a923c3f5e4386_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6c9b68f7a5653067_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6c9b68f7a5653067_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6cef2d941e597d5b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6d0b16cdfeafa1c5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6d0b16cdfeafa1c5_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6d35bcaf282781c8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6d501ac5aff10014_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6d501ac5aff10014_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6dc9be6ef6e95267_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6dd07335af55eab8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6e7215e4cdc435e9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6ef2a81e16c38afb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6f4334a34f4742a1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6f4334a34f4742a1_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6f735d18a1a7b74c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6f8154c008242b03_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/6fdcd334ac038785_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/709ada9ae5fb541a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/70a104efec749d67_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/70cb160a1daf5cca_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/70e39730015bd97e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/710a0d8f4af3c06b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/710f3bf109e786c2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/71535f26b12fd340_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/724abf01c0317399_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7276d2f32074745c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7276d2f32074745c_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/72f182534350f588_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7366ddd9f0884914_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7367c5cb771233a8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7377f1fde208cacb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/73a3e5feeaa5011c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/73a3e5feeaa5011c_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/73bb0f71f3489db6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/73e4875ff7bd7187_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/73e4875ff7bd7187_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/73f43bddd46e592a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/73f43bddd46e592a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/74ae0f61809ac93d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/74ec99204c680827_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/75477707732d500a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/75477707732d500a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/75a6730445717086_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/75bf7056994f5803_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/761a19a7074ebbb0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7673b54be5292216_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7673b54be5292216_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/771dd3b94603084a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/775f84da77276e29_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/775f84da77276e29_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/77c4eaee97194d59_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7861b8ce232c1a4d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/791d3989e0f391b9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/791d3989e0f391b9_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/79245308382c592d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/793e9860b573049c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/79a70a9339047192_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/79b77c552a5424c6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/79bb30391c135ba7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7a23f72341f3cffc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7a50acac93fa5ec2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7a71361415c9bcd6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7a81bba7c04b569f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7a991df0b1ae8f88_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7ae4aa9b72af7540_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7ae4aa9b72af7540_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7afd228e4121c55a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7b4b87d57d64f35c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7b4b87d57d64f35c_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7b8d42b73cc6ae75_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7c0fc7e80bba5d20_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7c0fc7e80bba5d20_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7cdfe013ff471e52_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7dcac4522efbc8df_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7f32da8e30756b40_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7f4c1222dd5bf418_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7f4c1222dd5bf418_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7f4ed7f823ce75ba_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7fcd4916b14c515e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/7fd4d46ed6626f0b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/80a3f1dbb26dbfa1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/820af54f7c5c23bf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/829d6242931f2eb7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8328b9dbba6b8fd9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/83d8d0cef30499b4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/84b4412ac28f79b0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/84b4412ac28f79b0_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/84d7d25fb68bda01_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8580d4386b63cd1f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/85b23a16455bb50b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/85c46a97e0c7ca2f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/85ecf4d706b189a5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/867d404186e3cdbc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/86b5a45586e1e558_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/86c90a3f346c51e2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/86f0e7a22ce97aab_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/86f5389c6d8dcc17_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/871adb95c81e1bb0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8783f0e436853ee1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/87948b1fbd98a139_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/87948b1fbd98a139_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/87bc1fb8309724cb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/87bc1fb8309724cb_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/881b14ed98c84387_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8880cb1bd2411da9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/88bb7aa99d5707e4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8922ad6d8340114f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8922ad6d8340114f_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/89320be43f8b181b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/89320be43f8b181b_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/896d0606f6f178f8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/89e36aa18eb949b0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8a1311725ca33b2c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8a1311725ca33b2c_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8a1dd71e45d70bec_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8a5cb8368faaa817_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8a67f25f0fe360d9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8a7946ca343b182e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8adb8163cc75e963_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8af0f5b7ff0e341a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8af0f5b7ff0e341a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8af60c358551eda6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8af60c358551eda6_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8b6c53e4cf5916cd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8bf87ef5f2ada06f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8c4d4b74b5fa40b8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8c4d4b74b5fa40b8_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8c9249c4bc51caf4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8c9249c4bc51caf4_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8dec7321af0f005d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8dec7321af0f005d_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8e0e054a2a9dd2f2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8e38e066d7953e27_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8e962ea0a8d230c8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8f31b5ae5902a058_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8f31b5ae5902a058_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8f55e19132053fb6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8f55e19132053fb6_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8f583e357cd7515f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8f583e357cd7515f_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8f59bf79f2f5103f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/8f59bf79f2f5103f_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9061de6d910b03ce_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/90aca6c18f295dc4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/913c2b2f48f581c0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/913c2b2f48f581c0_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/91410ce43700f7e9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9159c7a5e4f0025e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9224c749c21fa128_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/929187cccab5c250_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/929187cccab5c250_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/92bb10d4094904d9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/92c7dc0c7ce5c239_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9346b5f75f69dc72_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9346b5f75f69dc72_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/935666e2b0d4bca2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/935666e2b0d4bca2_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/935693ca843c6796_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/935693ca843c6796_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9368859968915a05_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/939235324800599f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/941e8ff6e6cc956f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/94261ee719cd51bc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/94261ee719cd51bc_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/943ab0ee2adc1def_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/943ab0ee2adc1def_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/943d45722f6273e3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/943d45722f6273e3_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/94b48dbed9bd9dcb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/94bd25466474a148_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9526b4eb4acd0495_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9526b4eb4acd0495_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/953ff05c6941df33_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/953ff05c6941df33_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9543ecdd789d55a6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9543ecdd789d55a6_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/956aece011f4da22_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/956aece011f4da22_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/96b955ea2d155f3c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/96f31da99cc3e139_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9705713437c8bec9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/973345a0d41b9059_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/973345a0d41b9059_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/98ad008e1a1367da_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/98af4b8b6c524c38_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/98ec2f4e90ab1724_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/98f1d6e4d1bf290c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/98f1d6e4d1bf290c_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/991a6243628a1f15_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9b030d0903524b0d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9b409985cf9f40a5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9b409985cf9f40a5_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9b41e595d8f8cefd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9b41e595d8f8cefd_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9bdac4054f84355d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9bebf014733b6009_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9c07b2a4783f7e98_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9c18e98be1dd3353_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9c2e64b2b71eed0e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9c3ffbe79bd659f2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9c6dd37c9de07c66_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9c7e485fc0790948_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9d2bd8a83fee54dd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9d2bd8a83fee54dd_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9d48d368db8a60b7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9dde186cc9f2e85b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9ea3450d37ed2352_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9eb60986e4e80f25_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9ec07980ffd73bf1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9f19fe9fbffd2b56_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9f25813bdf5d93b8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9f3cbe27363af30e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9f9e2855b8b4febf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9fa241803209717e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/9fda719601763512_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a0020d97813369fa_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a038abca13edc87c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a067a8610006159e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a067a8610006159e_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a0e855153df1f749_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a0e855153df1f749_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a0f1d4f28d0d8aa1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a0fdd0cfdce94779_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a153e94113c0c8d2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a166d859c95a24ac_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a166d859c95a24ac_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a1b6144a8cf24525_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a2db43c631cb0b05_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a315689f925e88d6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a376e7d024f4e39b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a3835c8816906f37_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a3d1eb323ba120f7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a3d1eb323ba120f7_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a41b3f13da5b1794_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a41b3f13da5b1794_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a41b8d1b7e3dd822_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a41b8d1b7e3dd822_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a4695f565d1d0241_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a4d791a955b8f30e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a4fc30740db061d8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a504595e2b4816bf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a504595e2b4816bf_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a508ea0795a19684_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a508ea0795a19684_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a50a6632b3ebf93e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a5328da85f586a61_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a55841be88ec35dd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a56a6ba8806120ea_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a681072f69b0ecaa_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a681072f69b0ecaa_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a6e4ad14bbe4ad8d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a7228b5f391c7a0f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a77065b4ee3f4a5f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a7fe7b590ba1833f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a7fe7b590ba1833f_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a8b73624ae458f78_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a8b73624ae458f78_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a8cd86eb6ad69dde_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a8cd86eb6ad69dde_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a8ce478e6ad84c5c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a8e27f6e0e0df5b1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a8e8236e18f6b0bd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a8e8236e18f6b0bd_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/a949dd1a80ad35c8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/aa4bcc41d254ec4a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/aa655f56c98a9fb7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/aa772af924db6617_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/aae5d5a899f78778_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/aae5d5a899f78778_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ab16558c2535aa72_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ab16558c2535aa72_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ab1e2f76020a766a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ab2bc633da052bb2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ab5ca508cb16c84d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ab5ca508cb16c84d_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ab6543335d83780a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ab6543335d83780a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ab708ee3acec9c95_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/abad9c1308674449_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/abd69387730cac5e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ace3914ac249e337_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ad238eecabb3bf9e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ad238eecabb3bf9e_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ad4507d804dd9d6a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ad4507d804dd9d6a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ad71aedc7abf259d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ad71aedc7abf259d_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ad8ee33bdd6932e5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ae4c0910f21b0635_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ae4e2426f4ff6183_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ae4e2426f4ff6183_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/aeeb8cf5fb2a6de3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/af86404fe46d3b28_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/af86404fe46d3b28_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/afada5d77309b0f7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b08ad2c2ca8c7c22_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b093cea241af3a23_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b09c1c29efe07bef_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b0d9d01c8e9ea336_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b14b6bfce58d986e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b1c1b8d2a7fe4624_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b2175ae8b2676b59_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b28ad861f89acf5d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b2928123f79d79a9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b2a7e28c77d9921e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b2c0372f4f8ccbe3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b31e9ea1a7f93e08_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b371c8e190a1c497_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b39534f082d77d4d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b3ed5a76dbb503ff_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b3ffdaf2a35c0288_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b3ffdaf2a35c0288_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b41b26d417e9cbe8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b44d93c6d7dfc00b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b4707dd484d20875_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b49966835b1c1d10_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b4a7d44531733e15_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b4ebd754b60370ee_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b51071849e6ce9bf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b569d319c182cfa9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b5864e4dd88ab1bb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b586b18c91f9637e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b586b18c91f9637e_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b61cdeb0d09598c4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b64275ad4710baf7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b667f98695f2a81b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b667f98695f2a81b_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b68164526abeb644_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b6bae416e9e7cc5a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b6e64b9c3602659d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b6ffeb292da0819c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b701495e737e9569_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b7d4456629fdcc6c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b87e3c445a1b27d1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b87e7d58490ffeb5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b87e7d58490ffeb5_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b88bba09665a0a87_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b88bba09665a0a87_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b902796a9df3342c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b9ba26b7e74f289b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b9be2485870a645c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b9eb742f7013bee9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/b9f49f5909830590_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ba0913046658d355_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ba38d09f50e0773a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ba38d09f50e0773a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ba769caf586e4f43_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ba769caf586e4f43_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ba85fab75db0fd07_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/bac73a815d2b934b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/bac98421ca1c2fbf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/bac98421ca1c2fbf_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/bacbc6a543d12f63_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/bad971a94d1bf3bc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/bb11e1c80bdeec13_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/bbe514bd9c538202_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/bbe514bd9c538202_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/bc1462f5835e20b6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/bc19c956cdc8e800_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/bc4de8bb2541b7a9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/bd308d48551b6777_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/bd6cde1a88919e5b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/bdc7473cd990ab7c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/be37396559ceaaa7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/be43730dbb112d78_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/be87d844c2185ee8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/beb08b8b616b7350_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/beee568cdf52d56a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/bef523ee264e03a6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/bf219a7ca4e0e2db_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/bf219a7ca4e0e2db_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/bfb7c6494f596d9b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c00520fa3d8342ea_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c0aa0869e28cef03_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c0aa0869e28cef03_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c0c2523c2b3017cd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c0ceb5ed324b6776_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c0ceb5ed324b6776_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c0ef5dd2efa3d2da_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c0ef5dd2efa3d2da_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c0efb48a0f36bdf1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c1bd60a45b969535_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c1d389498d5bc95d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c20571520725e922_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c234dbc237cce573_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c24b50ddf3ec84ff_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c2d910d9ca7c4ab1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c2d910d9ca7c4ab1_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c3c96fce7d5d5ef9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c3dcbced2b346b1b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c4416666390b391b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c4dee0122d776aa5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c5b15f6e0914c805_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c5c6ad7dd2359d4f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c5f96edcfce451c6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c7045a4ec00ab0b3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c7045a4ec00ab0b3_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c77197cb4bd026f5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c827eb10d2414485_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c8835d6c8deb1c6f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c8a5b36a20bc2678_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c8ab493167cdb6e5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c8ab493167cdb6e5_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c8b84b7342bfebbc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c8e635c5956b864f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/c8f81912308f826b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ca1e309e702a76ed_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ca1e309e702a76ed_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ca46c2aa81ec7047_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ca8ed88bcbbbd3f2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/caf1cd3ed85eb74e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/cb0fab0ad9057d4e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/cb2c203e1e0f4c74_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/cb2c203e1e0f4c74_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/cb7fbe610da855b5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/cc180057d87fdd33_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/cc180057d87fdd33_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ccd6c7a530b4f930_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ccd6c7a530b4f930_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/cd47fc03a4aba6dc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/cd572a1b4f793097_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/cd5739b39908fc4f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/cd7e9fefbddf335a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/cd9d3e7c148babcf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/cd9f5daeb246bdd6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ce31d51328e39851_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ce667784c6e68c0f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ce667784c6e68c0f_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/cec8de2e6b5a7044_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/cf3abbbd2916e44b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/cf3c017c582b5bc8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/cf825e02b94abade_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/cf825e02b94abade_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/cfbfc04797ccda7b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d04f03283780f57f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d074796fe909fa7b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d07a75c19ff93b9c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d07a75c19ff93b9c_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d0859f7e4aff67db_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d09cecc3c8d96293_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d09cecc3c8d96293_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d2832816719c1956_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d3199c592bd51ecf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d38dd104113092a3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d39d60dc00b7c5cd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d3f03da5ec12b7ee_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d58347d203ad869f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d58347d203ad869f_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d5a54fa9ee890493_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d66a38fb3dc673ce_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d6ce347541d9648d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d738c395227b6276_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d73c2f40205ade4d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d73c2f40205ade4d_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d743c97f71a60d6f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d757866a00c875a7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d7babbddb18c59cc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d7babbddb18c59cc_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d7e73c042cbaf5db_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d84c547bba67527e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d8ba5d53d0a2e9a7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d948e8b78554f2a0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d948e8b78554f2a0_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/d9b8fb7c3bb0bb46_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/dac293fe9d3f4e47_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/db50568326c9b20d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/db69f92d871865d3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/db88765cff0fd9c9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/dbcfc53af8ef8430_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/dca106f822cbb7b2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/dcff88ee0ba2b6d5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/dcff88ee0ba2b6d5_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/dd66d0d0fda63b26_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/dd6ee0fe8c6d4523_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/dd9596d3d7fa6c3d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/dd9596d3d7fa6c3d_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ddd3e4f93af24594_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/de7a26eda1e9d5ad_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/de899a798cb45de2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/df74a43c5002ed52_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/df74a43c5002ed52_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/df923205969c250a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/dfbf502831b5bb8f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/dff8fc5eefd2b200_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/dff939b9f7314e39_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/dfff84b1c37f02d1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/dfff84b1c37f02d1_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e00382d87e81461f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e013830503d2824a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e02a34609fadb397_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e08da9266b7bc35e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e08da9266b7bc35e_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e0b087468fdc45a7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e0bc01e123c1b662_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e136fd1109282d13_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e136fd1109282d13_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e15c3ac0484a41b6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e1809aa1dec51752_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e19f9695351856c7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e20180a84a0ba2ed_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e253de74f4d7a3a8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e25646a452fb0490_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e2829f64a4e61c11_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e28b460f9c8fdd4b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e2bc1d57f58eb681_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e2bc1d57f58eb681_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e2c516ac01f37f95_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e2c516ac01f37f95_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e2cff40e1dbe997a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e305d432d2ecf44d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e38751bbd8f58290_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e4f75c3a735f86ff_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e4f75c3a735f86ff_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e4fbeec63fe67d63_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e50a02fe3f712667_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e589ee0b286def25_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e589ee0b286def25_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e5a54e20943590c7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e5b373e7782ab510_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e5b373e7782ab510_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e5c9cf1989b76ba1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e5c9cf1989b76ba1_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e6baf625a3662f25_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e6baf625a3662f25_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e6cbfef54305e176_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e738d572b32a90c4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e799ad5644bd82e1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e799ad5644bd82e1_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e7e1aab3476bac96_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e886411785d45641_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e88ea8e12f6198ee_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e88ea8e12f6198ee_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e8fb0d04fb040780_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e93ff4514e5e7f99_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e9670b1447330333_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e9670b1447330333_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e99d688924ac6e22_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e9b105d97e8f10be_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e9b105d97e8f10be_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/e9b596c5ceaf029f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ea35697d605d717b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ea6e9425677b81ad_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ea6e9425677b81ad_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/eb15c24530086e0c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/eb15c24530086e0c_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/eb78ce0f85d8c407_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ec356c6f232412e8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ec87d2213fdaa13f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ec9e4bdd9347694b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ecda1ae0d600ab28_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ecfb82875bcc777a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ed270477f6d1ece8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ed270477f6d1ece8_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ed783c04af39baae_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ee19d828b2eb1dd4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ee71eabb5532d76d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/eea5b951f3509e76_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ef5361bebb951fda_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ef5361bebb951fda_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ef5887180c77f64f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f0b76897b3d3a7ff_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f1105ef47eb0a55a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f1105ef47eb0a55a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f12c1892975670ae_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f2123455665e159e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f23051e1b37a541e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f2b8a88f7c04a3d0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f2b8a88f7c04a3d0_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f2cff1f7ecaa14bc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f3271d1e36c34e51_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f38fee92a1651aca_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f3c82aea08a79b27_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f3f2391f5ce23d1e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f43ac036cb54ce28_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f47bc38722ee1c81_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f47bc38722ee1c81_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f4d991309c62b54c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f4d991309c62b54c_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f4ea72050b4078a7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f575b1617f383aca_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f5af34b25a339b8c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f5af34b25a339b8c_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f623fc8d42740b21_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f671d11c42caa3ff_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f685684bc3d209d6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f69e2d16749c5942_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f69e2d16749c5942_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f726abc9102029ac_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f726abc9102029ac_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f79744824b297c34_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f80d833dc31a25f0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f825b87d5ca26b02_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f88ab9fbc82b8218_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f8c96fac3f694495_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f8ce970ea55d9009_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f8db1d8ec293bdbe_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f8db1d8ec293bdbe_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f96bfa4a84f6aedb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f9b63a35f54e6cc8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/f9b63a35f54e6cc8_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/fb179cc2a184cdf7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/fb50f1b52c8fd94b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/fb70769c8399b633_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/fca46082b1b5ab14_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/fd93add5705ab1fa_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/fd93add5705ab1fa_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/fdfb8499b73a50dc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/fdfb8499b73a50dc_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/fe1d084e0d35cba2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/fe9c2783fbbacb79_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ff3e757a43f44f33_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/ff4b34175737767b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/ed9c4292-8564-4985-872f-806e6cda6b1e/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c194d36b3b175fcb92a6641fce44c3c450ec5885/index.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/003e46dfa020b539_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/0c7647488b53391d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/0fee90b3154d40dd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/119ed47a376f2651_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/12afb400e97448f9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/13699328ec436ec3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/19780c06974eb96e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/199da6d6a0c58d80_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/21089030b93822e5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/236a3309f0f971ef_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/25c1936bf63a35e2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/2694a384ac4cc33e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/293c338c8bf853f1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/294eb073b9e36aac_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/2c3b1663f8077631_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/2cd404dad84a7922_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/32f71bb5ec2dfd99_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/3466720e09f2e20f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/39e08aa58d9c7d7c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/3b114891236fa3d9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/3b114891236fa3d9_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/3df382128cef311b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/3e6268b294412d61_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/4222d76aef767290_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/439848e05d32573d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/45118f9747c4892a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/48eddf6b586c49b9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/4bb5c1134bb09a25_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/5577af1e5aa23c4d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/58172732236739b3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/5cc53617e9805d93_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/5ef22106a5cbac93_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/67e08538bb1ea38c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/6be50e6522c544ff_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/7258704b683a1901_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/73da199e1b08c7b0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/75360191d8f453eb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/77c768f386034b86_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/77c768f386034b86_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/82184a88fc250056_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/85a7fcc7a7cbd124_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/87efe62f47145652_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/87efe62f47145652_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/892eeccba4b59f85_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/89af32d5ead849e2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/8be08effbfba8e82_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/8be08effbfba8e82_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/8cd89069cda692fa_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/8ea4ca1ba0311bb4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/91f5f98a82824752_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/928c2b25d52679e0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/93b19068f24a39eb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/994ce7ca59be49b5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/99e7f3c6d22b8a46_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/9b28781c6ee3f007_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/a1c638fe9a98477f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/a4fc085d7633f7f8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/a56a3431222d973e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/a56a3431222d973e_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/a9eb274094ab27d8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/a9ec1dd51e9acf2b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/aca1a0ae1f0ed8af_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/ad185eb55c0361b8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/b6b41889d5ec8834_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/b9256146face4556_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/c1541e8df3abf73e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/c1541e8df3abf73e_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/c2724c9f360aed77_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/c60bd809f05efb2d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/ca27752d5234bd03_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/d1a1c0da3f7c2d50_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/d1a1c0da3f7c2d50_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/d8fb532cd3d79b9e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/de344b189d5554a1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/e090b6ab1241b621_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/e0c6a47d1292c33b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/e0c6a47d1292c33b_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/e36af5d6edf1d44b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/e88bb3bf086f15dd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/ebff3f62aac2dcfd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/f043a1e616999554_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/f043a1e616999554_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/f501f85093a60586_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/f7ebb963a3c873ef_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/f92ff1e61f7b6520_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/faf8e747d63a154c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/fbae1f39235dc6fa_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/fed1ab16a3cca7be_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/ffbe24e1bc4c9e36_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/98af87df-2420-4aac-a03f-7fe038216441/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/c7e8d25ee2b9f64ceb57a9896b2f3be34709ec53/index.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/00d49b4d2587980b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/0691678d2aaae303_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/0def118dbfd34d66_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/11127f2fe7d5c20b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/17458aa7431ea693_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/27e033c33c6c2d70_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/2c596d4dac203c3a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/306ce19568bd5862_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/312e55c27d50500a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/31f0026bc83eaa8b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/3550787ee3393fe4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/3fe1746c4c6e609c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/403708932b391e16_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/52d983a50eb8360f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/551ee88b37d6fe88_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/595f9fcdb423d2a0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/5a0af9654c6eb91e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/5ae24d424d2370ef_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/61010eea16ca8cc3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/61f93fcbd25e4a1c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/62f8e3beac831923_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/6429e2e913547ffb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/6b1a17bf6ed294bc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/71b5a1796330c157_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/721b6df1b6e9066f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/7454ae9888c49958_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/766234bef285fb50_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/77f7a4868a83c225_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/7babc87337125856_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/7c53e3148d519dcb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/7e3595566a97799e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/824feeeeab1e0c29_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/84afcdbeb0258dba_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/8e5802d93b21c0de_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/91dea6e779d99b27_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/9516e32044704bbf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/9c1489e370657f77_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/a7a544366fabe60f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/ab1a380089186474_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/aecd1be9e56c2119_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/b0a430d4637fdccf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/b6b7e241b2bfd040_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/b96f102821ba86d9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/bc8cf2acdc2f9225_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/bd4df23e502d12a5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/be9256367f8f9ee6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/ce8704f1c44d9f88_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/d05580d6490888ac_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/d1546d22654a128f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/d3356420e76bf5cb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/dd79010cb0591772_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/ddd50199ea01f2fe_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/dfeebfabf371b18b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/e71bda0f52ebdb1e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/fc22692f46c328ab_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/250ab7d9-0d84-4bc7-8cb4-0d4634211a71/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/031f48e0c36b9934_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/14860bebeafa40d1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/26038abf687e8399_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/2afe578606b9339f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/2d89c98debc14a6b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/3917654c9f69b5b9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/3adb0f728a11ebd5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/447d923c5308216e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/4d2d3ad5ecefae07_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/5d31591218d525c4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/6232626923dea252_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/69ec0c209f5c0bfd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/8f0f15f44625f6d9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/92a8c13965c78dd0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/932460eeef86b971_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/b36369ff7e371734_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/b3ade297ad8aebbd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/be2ec7d709529a7d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/dea45bcc02ee1249_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/eda3e39d4b0d1f86_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/f3b692f88bf245ea_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/2a666d8f-5250-47b0-b031-89b418a19cd5/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/4629c00e-5327-4f5d-85a3-9f4bf412f654/0e8fbbc4c2a40488_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/4629c00e-5327-4f5d-85a3-9f4bf412f654/0e8fc5098f719e20_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/4629c00e-5327-4f5d-85a3-9f4bf412f654/365f0f766426ff59_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/4629c00e-5327-4f5d-85a3-9f4bf412f654/365f0f766426ff59_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/4629c00e-5327-4f5d-85a3-9f4bf412f654/43d9b2a540277cdb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/4629c00e-5327-4f5d-85a3-9f4bf412f654/43d9b2a540277cdb_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/4629c00e-5327-4f5d-85a3-9f4bf412f654/59a5ef5a5cf2bd1e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/4629c00e-5327-4f5d-85a3-9f4bf412f654/5ef034abc1264e2b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/4629c00e-5327-4f5d-85a3-9f4bf412f654/6693c148429d6419_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/4629c00e-5327-4f5d-85a3-9f4bf412f654/a7d03ee421eb3dbd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/4629c00e-5327-4f5d-85a3-9f4bf412f654/b045d9f800cf10a4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/4629c00e-5327-4f5d-85a3-9f4bf412f654/b045d9f800cf10a4_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/4629c00e-5327-4f5d-85a3-9f4bf412f654/bac2607142395d46_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/4629c00e-5327-4f5d-85a3-9f4bf412f654/d6cd6f5619d0e4cc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/4629c00e-5327-4f5d-85a3-9f4bf412f654/d6cd6f5619d0e4cc_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/4629c00e-5327-4f5d-85a3-9f4bf412f654/defe50f574a959f9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/4629c00e-5327-4f5d-85a3-9f4bf412f654/defe50f574a959f9_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/4629c00e-5327-4f5d-85a3-9f4bf412f654/ef58de15a8856b1d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/4629c00e-5327-4f5d-85a3-9f4bf412f654/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/4629c00e-5327-4f5d-85a3-9f4bf412f654/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/16b0914734cc3f9b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/28d395390b4bef8e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/2dba8e9bca54bd17_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/3867c8caf074e354_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/4203240924b11850_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/474683591fdad3c0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/5240b0b8ba9f46a7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/529a6ee823e6cc5b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/55ee7539ad979a66_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/63046f9727a836e1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/649dfe80b869f136_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/661692201a84b692_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/69580f993d1ae8fb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/6a1d47f6f150fa16_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/6fe717885e6a664a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/7f0550dbf963f56b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/7fec617899ac31b3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/8f6b9e50046ca051_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/992556c964fe208b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/9f34627a9fc4cb8e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/a5f42fe1462b468d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/a95d99aa9fa01c1b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/aaa18642967f805b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/ac1d2ecaa0e8d025_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/b6f363ff28e55219_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/babf317802428a63_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/c647507ef171d5d4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/c8bf83be0b42493a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/cc30867dd22dd55e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/d62243b20640b1d2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/db75fbd99b5ec8c8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/e717dbc105c427c9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/edff7b065b61b2d6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/ef2334ffce031aae_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/f1c54b9b916b2c34_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/f95a7e4359d84de0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/fa0c426140d219a6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/606748f9-2def-4f33-9bf2-8c8b66d3ed12/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/01f05e5eb1facff3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/0b79a63456a1f811_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/1122af755e69c4c1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/1f316d52f9d28644_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/34a86980a4dff60a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/38f7ad1abc54bc06_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/468a6bd6dceb7784_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/5c363957aa88306a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/5e1fe47bc2525c44_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/5ff1885ac233d554_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/66bc15050307eb3c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/697b8cf8494c0f42_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/726185e5d82cc0e5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/728054c067bfc372_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/72d259c506352de7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/73571fb0028ab5ad_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/74be11ee2c6f4258_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/7509bff218b720b7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/8666901963a78a4c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/8d8b420db8dc117e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/8e5272d35cf7f036_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/8fcb07737378dda6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/933884e1185761e7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/9475da2150d7cbe1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/a224e0618f6bfe72_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/a6f0e8ef732b13c5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/ac93898d279f19d7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/c0015271b88adf13_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/c30938258fd10626_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/d20cfe171755615a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/d72935c57c6a9125_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/d744fd56259648eb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/e27ce15f3c17d0d9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/e377758ed04bce0e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/f9cd58d24d232cc6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/ff48b3d550aff865_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/90dec3c3-4c39-4bb9-b7d3-cc4c9e03c5eb/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/cc5333e65c324d73e333fb0d385cac84a6d48df0/index.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d5343b2bc7e26ac039a8a65aeeda783a4e881ef2/424b3664-a6e4-404b-8cb1-6104cc670c6f/81f7e3e642548ca2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d5343b2bc7e26ac039a8a65aeeda783a4e881ef2/424b3664-a6e4-404b-8cb1-6104cc670c6f/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d5343b2bc7e26ac039a8a65aeeda783a4e881ef2/424b3664-a6e4-404b-8cb1-6104cc670c6f/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d5343b2bc7e26ac039a8a65aeeda783a4e881ef2/index.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/0fd96541ed099c97_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/0fd96541ed099c97_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/148ff62ef6e46ac2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/148ff62ef6e46ac2_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/160cc6f20086b761_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/160cc6f20086b761_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/1c4824e0e654dabe_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/203cb2053817cde5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/203cb2053817cde5_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/3850996bebfb334c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/3850996bebfb334c_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/3f715975503efc3a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/3f715975503efc3a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/44e9dc3025d793bc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/485d544f4ff940ee_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/57402cbee8bf669c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/63c86809628e4c21_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/63c86809628e4c21_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/75610e1557b27e82_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/801d3fe0de0d9b7b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/8df682c653624fb5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/8df682c653624fb5_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/9ed43819643dbfe2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/aad15b9514d6acb6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/ae780574eb3244ac_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/bd32dbbffcdebcd9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/bdf0310b5fb9cb2c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/d6f2aa8232324352_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/d7c2f178a3d8b5b5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/d7c2f178a3d8b5b5_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/e2723294d8494736_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/f1a3746ef87aff81_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/f1a3746ef87aff81_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/f78638f0e397944c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/ef31a427-5db1-48ef-9cad-6588a5d84fde/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/d8d5ba8fe05d75a5e785b2a71348953b32f827cb/index.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/0125450e1910eabc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/0125450e1910eabc_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/01a2cce3dbf47a2d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/02dc4a04d32539f7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/03977ed293e4f244_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/03977ed293e4f244_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/040adbb193a1dd60_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/0546c7c63078d2d8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/08b5d0ecdabcb20a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/0a18bac32825a1d4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/0a18bac32825a1d4_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/0b38ccfd0ec58227_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/0b38ccfd0ec58227_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/0edf76bd97e2b326_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/0edf76bd97e2b326_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/0f34d0ac4e01e170_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/0f34d0ac4e01e170_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/1402c0aabf09b6f0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/1402c0aabf09b6f0_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/146cac7468eec933_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/17495c48da92b708_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/17e5dedcf6594252_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/18c18ffeb4113cdd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/19466472951ab4fa_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/21e0dc7475920014_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/22dd3ebaf358bbff_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/22ed513d6a58054a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/26f85a4dff718a8e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/26f85a4dff718a8e_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/2813ef72e9650411_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/28b7eb6396fa4d6b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/323cb44cb141b382_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/33d209fc507915fe_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/33d209fc507915fe_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/347dd6f38918ee04_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/3b6a9b9fd8e05f5c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/3e6a00ff74ae9386_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/3f10a7efafddf14a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/3f10a7efafddf14a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/46d8ecb9987be4ce_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/481fa0c66ddec0b6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/4c13bc11b8dbc101_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/4cc95acafe709be0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/4cc95acafe709be0_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/4f172c3817a405dd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/52c3a24bca405061_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/52c3a24bca405061_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/52e66d2b26a5f7dc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/52ef80e11eb81c6c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/55017344e7129e4f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/55017344e7129e4f_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/583f36819ffe89d1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/586b1b9d1a48c172_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/586b1b9d1a48c172_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/5a0a0f8e2f0a861c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/5af21f46648da1ea_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/5e86944d7f1bb0e6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/5f1675a86b62f9be_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/60449a8802448aef_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/615a77b72e968c89_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/615a77b72e968c89_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/6226d0dec43b599e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/62d732e3f2717494_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/62d732e3f2717494_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/637522b941f01ebd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/63a4c4e392ef79db_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/63a4c4e392ef79db_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/67bd9d03c0d05736_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/6eb90b3d58e5cfdb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/70ca72818c980cb2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/71564d5e50d67b7d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/71da7f1782a5d72c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/71da7f1782a5d72c_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/740ff11a684e162c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/75c48dc4dda00eef_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/764c317f4113f80b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/764c317f4113f80b_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/7a313c2d449c0976_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/7a313c2d449c0976_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/7ade3d42fb4302e2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/7ade3d42fb4302e2_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/7b8986097a1886ab_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/7b8986097a1886ab_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/7c97795cbe1df3c1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/7e399464258b3907_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/7eb276821699eaa7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/7f659f57fef8475a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/7f659f57fef8475a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/80964424468d386e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/81239d884ff0198c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/82c172ad62fcff12_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/82cd4906ebd5eda2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/82cd4906ebd5eda2_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/85afbe1d3465d2b6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/87905c5b9ee6aea7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/8903773b5330f7f4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/89fdf6af2ee22665_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/89fdf6af2ee22665_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/8f8d5ea1a6537911_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/92fbdd92777f6b03_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/9ccc0d4c8548277a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/9ccc0d4c8548277a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/9de6a296704ffb84_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/a06fd660d3686847_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/a1f408b6e9cc2afe_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/a1f408b6e9cc2afe_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/a38476965a399589_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/a3eb2d13577642c0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/a3eb2d13577642c0_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/a47ba425ba4a9207_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/a8e751993ee89590_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/a95ded1ccf36dcef_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/a95ded1ccf36dcef_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/a99e87a1d8278b61_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/a99e87a1d8278b61_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/a9da1b65d3925796_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/a9da1b65d3925796_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/aba95e10ccf24d9c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/aba95e10ccf24d9c_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/acdcb6b786a00cef_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/acdcb6b786a00cef_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/ad7c8a325829963d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/ad7c8a325829963d_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/ae7b24b5d89bf5d0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/ae7b24b5d89bf5d0_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/b40d800f05cc7a96_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/b40d800f05cc7a96_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/b64d9747bc383caf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/b64d9747bc383caf_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/b8cee710e3f6e98c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/bad2f2a7534db05c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/bc481626a1ef2420_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/bd210b1797761354_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/bd210b1797761354_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/be387f44b985c952_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/c0018e5fd591a1e0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/c0018e5fd591a1e0_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/c2c13505b0b61977_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/c8ea23886d8cd93e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/c955de13c32587de_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/ca131608b6e3d556_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/cb14199d558149cb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/cb3a9b39482f3e6f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/cb3a9b39482f3e6f_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/cec40fe06223ffd3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/d19b2a59c701a3a2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/d45d23271b9fde02_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/d45d23271b9fde02_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/d4f2d77b98baddfb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/d9a194d076f4af72_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/e17034bf986fe4a3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/e1910354c99b1c01_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/e2cac9081a306121_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/e47d3c110a9907d5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/e89271bd968c1b47_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/e9f22c100d18f5b6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/ed9590e449ea0c3e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/f1a95df9104e907b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/f337c1ecab661205_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/f337c1ecab661205_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/f349693c28b74bea_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/f59a421f9c227f1f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/f59a421f9c227f1f_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/f8366850a5a94fb3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/f8366850a5a94fb3_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/f8e776ad01429482_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/f9e9a4904919eda8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/c805c447-65eb-4963-b76b-7f9f51d54ba8/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/d7b2c210-d890-4eb6-8b3b-d7292b78600b/2bf5aec11725b9a2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/d7b2c210-d890-4eb6-8b3b-d7292b78600b/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/d7b2c210-d890-4eb6-8b3b-d7292b78600b/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/CacheStorage/fdb1d4ff495450ff00dc27fed2ff464ef8862750/index.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/Database/000007.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/Database/000009.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/Database/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/Database/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/Database/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/Database/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/Database/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/013888a1cda32b90_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/013888a1cda32b90_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/013c368bb699d56f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/044af04d79c148c3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/058316883d2f7b71_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/058316883d2f7b71_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/06940ca2418e5f06_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/06940ca2418e5f06_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/08b99d499107ba17_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/08b99d499107ba17_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/0ae129c33e7a30bd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/0ae129c33e7a30bd_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/0c44624093b66f53_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/0c44624093b66f53_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/0caade6fa2d8bf23_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/0caade6fa2d8bf23_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/0cf3f179800b4457_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/0da13b1c038160d5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/0da13b1c038160d5_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/102500d27cb32586_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/1182effa8ada5d43_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/1306f5f30c73c0b3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/1306f5f30c73c0b3_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/133ea22e2bddfb76_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/135d7a5f7d09ad8d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/1519277bde6e6fcc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/156dd7d6254da5d0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/156dd7d6254da5d0_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/1837eff123ca8ac2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/18a1561446ac93fd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/18a1561446ac93fd_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/18f9d5c11737329d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/1b02c078a626147f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/1b7188623db21aac_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/1cd36d092513b214_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/1cd36d092513b214_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/1e16eb87c66b3350_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/1e16eb87c66b3350_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/1eb3a60cf0b1da7e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/218b8a4c9ede14e1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/23469ac906fcc612_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/23469ac906fcc612_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/2379a50f1c0e50dd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/24c9909851fc5926_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/251821f6166076c1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/251821f6166076c1_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/262d13b3e17ceba1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/26668990994d0f6b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/2853a1a255877bcc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/297ecea5cebb5dfe_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/297ecea5cebb5dfe_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/2a069ed0a4ed1071_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/2a0afd649b00527b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/2a0afd649b00527b_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/2a517dc2cdf7e28c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/2a9ed1164ac67a36_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/2b8d5c4c22ca4073_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/2cc80dabc69f58b6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/2ddf14d3ae0c5805_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/2ed4c1475f68895f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/2ed4c1475f68895f_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/3141fac51b5d083a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/3304de7a95b9153f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/3382c1aeee847b7c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/36178b75a421e259_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/37ba206b0e1633f3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/37ba206b0e1633f3_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/3833d80714f52830_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/385b1e42bf04aac1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/385b1e42bf04aac1_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/38ec7f73738fd2c6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/38ec7f73738fd2c6_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/3993e359829516e8_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/3bc9470215d17382_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/3c6f2beab5d0ce26_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/3c927e1978087ebb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/3c927e1978087ebb_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/3e125fa608da7bad_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/3e3f9622d382869d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/41e788d966e1d2b1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/41e8252939530d43_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/41f6befdd9fcc98c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/4370832a070f5278_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/4370832a070f5278_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/4380d6a2dda10611_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/4380d6a2dda10611_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/442d051c77d2449e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/442d051c77d2449e_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/44432df713ea1c72_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/44aed90cfbcd8d61_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/4577271cd6fb65a1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/4577271cd6fb65a1_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/45b6179ac51ed29f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/45c2f2fcb9072b47_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/45c2f2fcb9072b47_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/4698ecea4d4dad56_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/4698ecea4d4dad56_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/47a019969919f990_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/48aa8aea80d750f3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/48c4922ed6998d89_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/48ce8f1371d5128c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/48ce8f1371d5128c_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/49c299409541c61c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/49c299409541c61c_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/49cfac9a80742bc0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/49cfac9a80742bc0_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/4b8a113942c539ab_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/4b8a113942c539ab_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/4cb013792b196a35_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/4cb013792b196a35_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/4dfa3ff2fb787575_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/50ea35dd219cf76e_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/5219fc78e566a322_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/5225b9a2d2e15e1b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/57991272965254a5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/57991272965254a5_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/59075d360e8ed9ea_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/59075d360e8ed9ea_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/5bc80cbabea43230_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/5eb8846211eed115_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/5ff352a104083529_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/60208d9987ff8fb0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/60208d9987ff8fb0_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/61776f09435f6376_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/618cf8002a861737_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/61a7051dfbbcebbe_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/61f9776f3858baff_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/61f9776f3858baff_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/637002b0fd0607b7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/639d390b781e80ba_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/63a0df86fcaca4f0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/65490edda5ace1d4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/65f57298359ce817_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/665a1c6935535837_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/665a1c6935535837_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/66e98b5df3810dc6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/67a473248953641b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/67a473248953641b_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/6c038e3570d6abf1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/6c038e3570d6abf1_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/6f14b1eea746d0f6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/6f8ac775dbbd7415_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/6f8ac775dbbd7415_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/6f95edaef805d54f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/707c04bd94e53f60_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/7279dabb794b7bae_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/7279dabb794b7bae_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/736704c0a29ba0bd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/736704c0a29ba0bd_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/75e158edced18ccc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/7786daf1823b575f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/77d633a988788881_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/77d633a988788881_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/7911bddc8bea7af4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/7aa3cc8cc182ec3a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/7aa3cc8cc182ec3a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/7b4fd8111178d5b1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/7b4fd8111178d5b1_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/800dc39137124ad7_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/8028206cd4382304_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/80a7e74d1ee47371_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/82d24e583257c1c5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/8459336f6f977b26_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/846b510cc1d358ab_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/846b510cc1d358ab_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/847183a1bce65cbf_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/861d3746da596b9a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/865231c3208b5685_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/865231c3208b5685_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/873e9f02dffd15b6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/88982711b7d82f98_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/88982711b7d82f98_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/8971dc0438cf7b2a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/8971dc0438cf7b2a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/8b239658a7e04d63_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/8b30f5d03f19b568_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/8b30f5d03f19b568_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/8f26a0435b41626a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/937b79c00dbacc65_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/937b79c00dbacc65_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/93b5bc142742612c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/93e5ba12e112ee93_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/93e5ba12e112ee93_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/968ee480c8880ee9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/968ee480c8880ee9_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/97cb728504835ecb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/98e1039cb5a6108c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/9a167328c6f2005d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/9a167328c6f2005d_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/9cedebd2aa2a8bfe_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/9cfaf0ec6926b991_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/a0650cda674494c6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/a2c521dd01eb7b29_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/a2e0dddeb7e07def_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/a2e0dddeb7e07def_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/a488f7c1117c460d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/a8d410c09eb9cf3f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/a8d410c09eb9cf3f_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/a9654014163cf1c9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/a9b253918c822073_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/a9b253918c822073_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/ad2345239280bb7d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/ad2345239280bb7d_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/af55a8299c730493_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/b09a5c3ec15d02fe_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/b09b50d0915775fa_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/b09b50d0915775fa_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/b0d982546e6fd609_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/b30f9f370e7094d0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/b30f9f370e7094d0_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/b3bd0d67f800d222_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/b3bd0d67f800d222_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/b3e65c650ab5942a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/b6c28cea6ed9dfc1_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/b6c28cea6ed9dfc1_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/b93974c97934366d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/ba23d8ecda68de77_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/ba23d8ecda68de77_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/bdbe39f12b00f185_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/be27c224b9670b51_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/be27c224b9670b51_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/c13416c921dc154c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/c1ab05be02305eff_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/c1ab05be02305eff_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/c2492db79fbf160c_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/c2492db79fbf160c_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/c3f9ec8c3e713cc5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/c3f9ec8c3e713cc5_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/c5a4cfa87c7c50b5_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/c5d06df2762160e6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/c60ff07b0bc639c4_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/c60ff07b0bc639c4_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/c973a21200a54441_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/c973a21200a54441_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/c97f65652744cac9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/c97f65652744cac9_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/cea5e6b4823220b0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/d0757ff92c7cde0a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/d0757ff92c7cde0a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/d1c5a6f87b5d4042_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/d1c5a6f87b5d4042_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/d2198e059a41357f_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/d36fc470bdd7f429_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/d65585c00d45a9d6_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/d6b591bec2d594eb_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/d6b591bec2d594eb_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/da27569d3d1a7cdd_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/da27569d3d1a7cdd_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/da87291b30ec3507_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/daadf5d778c3fc98_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/daadf5d778c3fc98_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/dc8bb2c9e691ca89_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/dc94ed7d050cb174_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/dcfd308173202e57_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/dcfd308173202e57_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/deb216933b22f3a2_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/df442983f76b6c89_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/df442983f76b6c89_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/e0d37c7e54672663_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/e0d37c7e54672663_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/e15adf968423321d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/e37b8c477f6fe7a9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/e3979a9d78d5c89b_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/e3979a9d78d5c89b_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/e460f9049ee39b22_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/e6f09094666ade67_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/e77053106e8f6f41_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/e7726bec88acbf74_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/e7ba459eae573b73_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/e7ba459eae573b73_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/e873ff2e7f852ba0_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/e91a0f790c9df598_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/e99eef6b57f9df36_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/ed17bb8e4740c3e9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/ed17bb8e4740c3e9_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/f0fcc6432fd8ca09_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/f116add86d0557b9_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/f1216cf7d8c3ccde_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/f1216cf7d8c3ccde_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/f1cdccba37924bda_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/f1cdccba37924bda_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/f214e160a00f6106_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/f272a321bf472b2a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/f272a321bf472b2a_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/f3ab1e1292e135fa_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/f3ab1e1292e135fa_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/f54ae869079af26d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/f8306af1c2f7efd3_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/f8849e5234771dfc_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/f8849e5234771dfc_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/f8f4f7ce6eb8619a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/fa813c9ad67834ac_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/fa813c9ad67834ac_1 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/fd04e5d80307ab5a_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Service Worker/ScriptCache/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Session Storage/000013.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Session Storage/000014.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Session Storage/000015.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Session Storage/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Session Storage/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Session Storage/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Session Storage/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Session Storage/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sessions/Apps_13429354763444062 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sessions/Session_13429447592291549 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sessions/Session_13429451449494174 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sessions/Session_13429451931588978 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sessions/Tabs_13429437726762262 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sessions/Tabs_13429450809425290 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Shared Dictionary/cache/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Shared Dictionary/cache/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Shared Dictionary/db delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Shared Dictionary/db-journal delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/SharedStorage delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/SharedStorage-wal delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Shortcuts delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Shortcuts-journal delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Site Characteristics Database/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Site Characteristics Database/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Site Characteristics Database/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Site Characteristics Database/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Site Characteristics Database/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Site Characteristics Database/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Data/LevelDB/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Data/LevelDB/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Data/LevelDB/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Data/LevelDB/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Data/LevelDB/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Data/LevelDB/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/dbepggeogbaibhgnhhndojpepiihcmeb/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/dbepggeogbaibhgnhhndojpepiihcmeb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/dbepggeogbaibhgnhhndojpepiihcmeb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/dbepggeogbaibhgnhhndojpepiihcmeb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/dbepggeogbaibhgnhhndojpepiihcmeb/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/dbepggeogbaibhgnhhndojpepiihcmeb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/eimadpbcbfnmbkopoojfekhnkhdbieeh/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/eimadpbcbfnmbkopoojfekhnkhdbieeh/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/eimadpbcbfnmbkopoojfekhnkhdbieeh/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/eimadpbcbfnmbkopoojfekhnkhdbieeh/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/eimadpbcbfnmbkopoojfekhnkhdbieeh/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/eimadpbcbfnmbkopoojfekhnkhdbieeh/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/flphhdfbcpebbehnmphjoaoffhgcjafi/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/flphhdfbcpebbehnmphjoaoffhgcjafi/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/flphhdfbcpebbehnmphjoaoffhgcjafi/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/flphhdfbcpebbehnmphjoaoffhgcjafi/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/flphhdfbcpebbehnmphjoaoffhgcjafi/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/flphhdfbcpebbehnmphjoaoffhgcjafi/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/iadbdpnoknmbdeolbapdackdcogdmjpe/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/iadbdpnoknmbdeolbapdackdcogdmjpe/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/iadbdpnoknmbdeolbapdackdcogdmjpe/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/iadbdpnoknmbdeolbapdackdcogdmjpe/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/iadbdpnoknmbdeolbapdackdcogdmjpe/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/iadbdpnoknmbdeolbapdackdcogdmjpe/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/nljkibfhlpcnanjgbnlnbjecgicbjkge/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/nljkibfhlpcnanjgbnlnbjecgicbjkge/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/nljkibfhlpcnanjgbnlnbjecgicbjkge/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/nljkibfhlpcnanjgbnlnbjecgicbjkge/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/nljkibfhlpcnanjgbnlnbjecgicbjkge/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/nljkibfhlpcnanjgbnlnbjecgicbjkge/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/oladmjdebphlnjjcnomfhhbfdldiimaf/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/oladmjdebphlnjjcnomfhhbfdldiimaf/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/oladmjdebphlnjjcnomfhhbfdldiimaf/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/oladmjdebphlnjjcnomfhhbfdldiimaf/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/oladmjdebphlnjjcnomfhhbfdldiimaf/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/oldceeleldhonbafppcapldpdifcinji/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/oldceeleldhonbafppcapldpdifcinji/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/oldceeleldhonbafppcapldpdifcinji/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/oldceeleldhonbafppcapldpdifcinji/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/oldceeleldhonbafppcapldpdifcinji/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Sync Extension Settings/oldceeleldhonbafppcapldpdifcinji/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Top Sites delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Top Sites-journal delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/TransportSecurity delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Trust Tokens delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Trust Tokens-journal delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/VideoDecodeStats/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/VideoDecodeStats/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/VideoDecodeStats/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Web Applications/Manifest Resources/lfpcbmodcmbhlakniingcipjmnmiefil/Icons Maskable/512.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Web Applications/Manifest Resources/lfpcbmodcmbhlakniingcipjmnmiefil/Icons/128.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Web Applications/Manifest Resources/lfpcbmodcmbhlakniingcipjmnmiefil/Icons/192.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Web Applications/Manifest Resources/lfpcbmodcmbhlakniingcipjmnmiefil/Icons/256.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Web Applications/Manifest Resources/lfpcbmodcmbhlakniingcipjmnmiefil/Icons/32.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Web Applications/Manifest Resources/lfpcbmodcmbhlakniingcipjmnmiefil/Icons/48.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Web Applications/Manifest Resources/lfpcbmodcmbhlakniingcipjmnmiefil/Icons/512.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Web Applications/Manifest Resources/lfpcbmodcmbhlakniingcipjmnmiefil/Icons/64.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Web Applications/Manifest Resources/lfpcbmodcmbhlakniingcipjmnmiefil/Icons/96.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Web Applications/Manifest Resources/lfpcbmodcmbhlakniingcipjmnmiefil/Trusted Icons/Icons/128.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Web Applications/Manifest Resources/lfpcbmodcmbhlakniingcipjmnmiefil/Trusted Icons/Icons/256.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Web Applications/Manifest Resources/lfpcbmodcmbhlakniingcipjmnmiefil/Trusted Icons/Icons/32.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Web Applications/Manifest Resources/lfpcbmodcmbhlakniingcipjmnmiefil/Trusted Icons/Icons/48.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Web Applications/Manifest Resources/lfpcbmodcmbhlakniingcipjmnmiefil/Trusted Icons/Icons/512.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Web Applications/Manifest Resources/lfpcbmodcmbhlakniingcipjmnmiefil/Trusted Icons/Icons/64.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Web Applications/Manifest Resources/lfpcbmodcmbhlakniingcipjmnmiefil/Trusted Icons/Icons/96.png delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Web Data delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/Web Data-journal delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/11/FileSystem/t/.usage delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/11/FileSystem/t/00/00000000 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/11/FileSystem/t/Paths/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/11/FileSystem/t/Paths/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/11/FileSystem/t/Paths/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/11/FileSystem/t/Paths/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/11/FileSystem/t/Paths/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/2/IndexedDB/indexeddb.leveldb/000004.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/2/IndexedDB/indexeddb.leveldb/000005.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/2/IndexedDB/indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/2/IndexedDB/indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/2/IndexedDB/indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/2/IndexedDB/indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/32/FileSystem/t/.usage delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/32/FileSystem/t/00/00000000 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/32/FileSystem/t/00/00000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/32/FileSystem/t/Paths/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/32/FileSystem/t/Paths/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/32/FileSystem/t/Paths/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/32/FileSystem/t/Paths/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/32/FileSystem/t/Paths/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/32/FileSystem/t/Paths/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/37/FileSystem/t/.usage delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/37/FileSystem/t/00/00000000 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/37/FileSystem/t/Paths/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/37/FileSystem/t/Paths/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/37/FileSystem/t/Paths/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/37/FileSystem/t/Paths/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/37/FileSystem/t/Paths/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/51/FileSystem/t/.usage delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/51/FileSystem/t/00/00000000 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/51/FileSystem/t/Paths/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/51/FileSystem/t/Paths/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/51/FileSystem/t/Paths/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/51/FileSystem/t/Paths/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/51/FileSystem/t/Paths/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/51/FileSystem/t/Paths/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/54/FileSystem/t/.usage delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/54/FileSystem/t/00/00000000 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/54/FileSystem/t/Paths/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/54/FileSystem/t/Paths/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/54/FileSystem/t/Paths/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/54/FileSystem/t/Paths/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/54/FileSystem/t/Paths/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/56/CacheStorage/3e700e71-e588-4a9c-9dbb-a1632224fc25/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/56/CacheStorage/3e700e71-e588-4a9c-9dbb-a1632224fc25/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/56/CacheStorage/be498be2-199d-466d-a5c5-80b81a82dadd/b3146faa8b8f5a8d_0 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/56/CacheStorage/be498be2-199d-466d-a5c5-80b81a82dadd/index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/56/CacheStorage/be498be2-199d-466d-a5c5-80b81a82dadd/index-dir/the-real-index delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/56/CacheStorage/index.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/56/IndexedDB/indexeddb.blob/1/00/2 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/56/IndexedDB/indexeddb.leveldb/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/56/IndexedDB/indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/56/IndexedDB/indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/56/IndexedDB/indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/56/IndexedDB/indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/66/CacheStorage/index.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/67/FileSystem/t/.usage delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/67/FileSystem/t/00/00000000 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/67/FileSystem/t/Paths/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/67/FileSystem/t/Paths/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/67/FileSystem/t/Paths/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/67/FileSystem/t/Paths/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/67/FileSystem/t/Paths/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/72/CacheStorage/index.txt delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/80/IndexedDB/indexeddb.leveldb/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/80/IndexedDB/indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/80/IndexedDB/indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/80/IndexedDB/indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/80/IndexedDB/indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/81/IndexedDB/indexeddb.leveldb/000004.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/81/IndexedDB/indexeddb.leveldb/000005.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/81/IndexedDB/indexeddb.leveldb/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/81/IndexedDB/indexeddb.leveldb/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/81/IndexedDB/indexeddb.leveldb/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/81/IndexedDB/indexeddb.leveldb/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/QuotaManager delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/WebStorage/QuotaManager-journal delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/chrome_cart_db/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/chrome_cart_db/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/chrome_cart_db/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/commerce_subscription_db/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/commerce_subscription_db/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/commerce_subscription_db/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/discount_infos_db/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/discount_infos_db/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/discount_infos_db/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/discounts_db/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/discounts_db/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/discounts_db/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/engine_allowlist.bf delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/heavy_ad_intervention_opt_out.db delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/heavy_ad_intervention_opt_out.db-journal delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/optimization_guide_hint_cache_store/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/optimization_guide_hint_cache_store/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/optimization_guide_hint_cache_store/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/parcel_tracking_db/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/parcel_tracking_db/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/parcel_tracking_db/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/shared_proto_db/000005.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/shared_proto_db/000015.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/shared_proto_db/000017.ldb delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/shared_proto_db/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/shared_proto_db/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/shared_proto_db/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/shared_proto_db/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/shared_proto_db/MANIFEST-000001 delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/shared_proto_db/metadata/000003.log delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/shared_proto_db/metadata/CURRENT delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/shared_proto_db/metadata/LOCK delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/shared_proto_db/metadata/LOG delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/shared_proto_db/metadata/LOG.old delete mode 100644 net.imput.helium/.config/net.imput.helium/Default/shared_proto_db/metadata/MANIFEST-000001 (limited to 'net.imput.helium/.config') diff --git a/net.imput.helium/.config/net.imput.helium/Default/.org.chromium.Chromium.1F1JI3 b/net.imput.helium/.config/net.imput.helium/Default/.org.chromium.Chromium.1F1JI3 deleted file mode 100644 index e9edd1e..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/.org.chromium.Chromium.1F1JI3 +++ /dev/null @@ -1 +0,0 @@ -{"sts":[{"expiry":1784967397.30481,"host":"CKgpM5pmGarlf0RwmY0Rxl4ZZ2L9eMo6aLpqAb3AQj4=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1784880997.304812},{"expiry":1816416372.929553,"host":"IMmEq4iiOVkkaBC6vUyjv31jqS9XCQXEnmyFYZ7MREE=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1784880372.929555},{"expiry":1792138194.293973,"host":"JHTLfnj5CEULooqTSYyW6Fvi5hJUQiEteum+aAjiaWE=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1784880594.293974},{"expiry":1784967386.663373,"host":"Kqs5vFvAoc2y93qnzAMHci1WJjVGBpIhJ/luVg4Cquo=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1784880986.663374},{"expiry":1795767525.299352,"host":"MzjCeHe2HKY9Et6ILCNSdg5DgEaRTxCpyzki1qChJHI=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1784881125.299354},{"expiry":1816416423.561201,"host":"M4bfUnCmQAi4PNb3B8aI/2+SVJhHKsMfMMT7fzi6ij4=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1784880423.561203},{"expiry":1816416387.565131,"host":"RSppokZ1kANM3UybtnoVWNJQxxnIIPFCb7DNQe5s+/c=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1784880387.565133},{"expiry":1795766824.01838,"host":"TUVK1Qd8RS/MNsiCX8N04cWZvC+IzkO8p1Niq0eDWlY=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1784880424.018382},{"expiry":1795767363.098095,"host":"Z030MHuAr75Z3Cp3qskx1ltBQH6qfbi1E7Xhe1zqJEs=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1784880963.098097},{"expiry":1816416386.260879,"host":"akP2e0NTMe7KN2UIzZ5xIcTyEs+s14WhaqfK2aV8d30=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1784880386.26088},{"expiry":1816416371.760381,"host":"bVzOnu6xyelN8iVLDSbFjyZVgXrXDyLSokjnq2hdUFs=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1784880371.760384},{"expiry":1816416387.242923,"host":"dIsI2buJU03Gk+THOFWmwxSsKSozjiKfCZJTx8Jn9aI=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1784880387.242925},{"expiry":1816416427.305338,"host":"dPCSnVTk6x5M6UM7txrgldTiNqgbi92uEZS19DQrwMk=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1784880427.305339},{"expiry":1816416466.058397,"host":"lLnbdiMGgdCGL7LB/E9WiQg0PqkLKPd2HjhvM0zJP6E=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1784880466.058398},{"expiry":1816416406.701877,"host":"nAuqgR4iEWti7SOdT3UHPl6rmZU/DeaIm38P2O2OkgA=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1784880406.701879},{"expiry":1816416370.488786,"host":"pjrtQ+el/UMfiCm3Y67Qplt1YBFthMtbFriVV6wniGs=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1784880370.488787},{"expiry":1816416659.735854,"host":"qhkH9gdxKhEU9AtSpJdNby361kf6xFvaSDsh29+guzw=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1784880659.735855},{"expiry":1816416970.246622,"host":"taMf8Wby3UJQCjoRqXJoR2ipA3aXXmGnaCrHXroZJvU=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1784880970.246623},{"expiry":1816417094.604107,"host":"8/RrMmQlCD2Gsp14wUCE1P8r7B2C5+yE0+g79IPyRsc=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1784881094.604108},{"expiry":1816416966.728113,"host":"+ccWXqaoHJ9hfuXbleKV6FQUrBlyXAJ31BdqjNQJpHs=","mode":"force-https","sts_include_subdomains":false,"sts_observed":1784880966.728114}],"version":2} \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/.org.chromium.Chromium.EEq65z b/net.imput.helium/.config/net.imput.helium/Default/.org.chromium.Chromium.EEq65z deleted file mode 100644 index e242562..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/.org.chromium.Chromium.EEq65z +++ /dev/null @@ -1 +0,0 @@ -{"net":{"http_server_properties":{"servers":[{"anonymization":[3],"server":"https://base.dns.mullvad.net","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431949101604398","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":107298},"server":"https://accounts.google.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431949124606269","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":100565},"server":"https://gemini.google.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13429360110792925","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL25hZGVrby5uZXQAAA==",false,0],"network_stats":{"srtt":324713},"server":"https://inv.nadeko.net","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431949011086792","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":107099},"server":"https://signaler-pa.clients6.google.com","supports_spdy":true}],"supports_quic":{"address":"10.147.123.164","used_quic":true},"version":5},"network_qualities":{"CAESABiAgICA+P////8B":"4G"}}} \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/.org.chromium.Chromium.L5b1Sq b/net.imput.helium/.config/net.imput.helium/Default/.org.chromium.Chromium.L5b1Sq deleted file mode 100644 index 9e11c49..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/.org.chromium.Chromium.L5b1Sq +++ /dev/null @@ -1 +0,0 @@ -{"net":{"http_server_properties":{"servers":[{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431945590527906","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":102283},"server":"https://push.clients6.google.com","supports_spdy":true},{"anonymization":["GAAAABEAAABodHRwczovL25peG9zLm9yZwAAAA==",false,0],"server":"https://search.nixos.org","supports_spdy":true},{"anonymization":["GAAAABIAAABodHRwczovL2dpdGh1Yi5jb20AAA==",false,0],"server":"https://github.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431945971618349","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"server":"https://lh3.google.com","supports_spdy":true},{"anonymization":["GAAAABIAAABodHRwczovL2dpdGh1Yi5jb20AAA==",false,0],"server":"https://camo.githubusercontent.com","supports_spdy":true},{"anonymization":["GAAAABIAAABodHRwczovL2dpdGh1Yi5jb20AAA==",false,0],"server":"https://avatars.githubusercontent.com","supports_spdy":true},{"anonymization":["HAAAABYAAABodHRwczovL2R1Y2tkdWNrZ28uY29tAAA=",false,0],"server":"https://external-content.duckduckgo.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431946006701710","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"server":"https://fonts.googleapis.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13429440397668850","port":443,"protocol_str":"quic"}],"anonymization":["OAAAADMAAABjaHJvbWUtZXh0ZW5zaW9uOi8vYmxvY2tqbWtiYWNnamtrbmxncGtqamlpamluamRhbmYA",false,0],"network_stats":{"srtt":126630},"server":"https://services.helium.imput.net","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13429440387564624","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dpdGh1Yi5jb20AAA==",false,0],"network_stats":{"srtt":100466},"server":"https://github.githubassets.com"},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431946024120041","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"server":"https://img.youtube.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431946025139120","port":443,"protocol_str":"quic"}],"anonymization":["JAAAAB0AAABodHRwczovL2dvb2dsZXVzZXJjb250ZW50LmNvbQAAAA==",false,0],"server":"https://lh3.googleusercontent.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431946023561052","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":100486},"server":"https://www.googletagmanager.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431946024017463","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":100886},"server":"https://feedback-pa.clients6.google.com","supports_spdy":true},{"anonymization":["OAAAADMAAABjaHJvbWUtZXh0ZW5zaW9uOi8vb2xkY2VlbGVsZGhvbmJhZnBwY2FwbGRwZGlmY2luamkA",false,0],"server":"https://prod-translator.languagetool.org","supports_spdy":true},{"anonymization":["OAAAADMAAABjaHJvbWUtZXh0ZW5zaW9uOi8vb2xkY2VlbGVsZGhvbmJhZnBwY2FwbGRwZGlmY2luamkA",false,0],"server":"https://api.languagetoolplus.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13429440427305316","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABEAAABodHRwczovL2ltcHV0Lm5ldAAAAA==",false,0],"network_stats":{"srtt":127624},"server":"https://services.helium.imput.net","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431946008574768","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":101730},"server":"https://apis.google.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13429440465775383","port":443,"protocol_str":"quic"}],"anonymization":["OAAAADMAAABjaHJvbWUtZXh0ZW5zaW9uOi8vb2xkY2VlbGVsZGhvbmJhZnBwY2FwbGRwZGlmY2luamkA",false,0],"network_stats":{"srtt":93449},"server":"https://languagetool.org"},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431945654468638","port":443,"protocol_str":"quic"}],"anonymization":["HAAAABUAAABodHRwczovL2phbml0b3JhaS5jb20AAAA=",false,0],"server":"https://fonts.googleapis.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431945654976479","port":443,"protocol_str":"quic"}],"anonymization":["HAAAABUAAABodHRwczovL2phbml0b3JhaS5jb20AAAA=",false,0],"server":"https://fonts.gstatic.com"},{"anonymization":["HAAAABUAAABodHRwczovL2phbml0b3JhaS5jb20AAAA=",false,0],"server":"https://ella.janitorai.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13429440055245069","port":443,"protocol_str":"quic"}],"anonymization":["HAAAABUAAABodHRwczovL2phbml0b3JhaS5jb20AAAA=",false,0],"network_stats":{"srtt":93947},"server":"https://challenges.cloudflare.com"},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13429440598978136","port":443,"protocol_str":"quic"}],"anonymization":["OAAAADMAAABjaHJvbWUtZXh0ZW5zaW9uOi8vb2xkY2VlbGVsZGhvbmJhZnBwY2FwbGRwZGlmY2luamkA",false,0],"network_stats":{"srtt":93873},"server":"https://cerberus.languagetool.org"},{"anonymization":["HAAAABUAAABodHRwczovL2phbml0b3JhaS5jb20AAAA=",false,0],"server":"https://assets.janitorai.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431946219370162","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":103186},"server":"https://play.google.com","supports_spdy":true},{"anonymization":["HAAAABYAAABodHRwczovL2R1Y2tkdWNrZ28uY29tAAA=",false,0],"server":"https://duckduckgo.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13429440632915869","port":443,"protocol_str":"quic"}],"anonymization":["HAAAABUAAABodHRwczovL2phbml0b3JhaS5jb20AAAA=",false,0],"network_stats":{"srtt":93966},"server":"https://janitorai.com"},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431945969467206","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":104300},"server":"https://www.google.com"},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431946009063760","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":105650},"server":"https://ssl.gstatic.com","supports_spdy":true},{"anonymization":["OAAAADMAAABjaHJvbWUtZXh0ZW5zaW9uOi8vb2xkY2VlbGVsZGhvbmJhZnBwY2FwbGRwZGlmY2luamkA",false,0],"server":"https://api.languagetool.org","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431946024650787","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":105650},"server":"https://www.gstatic.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431946006974685","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":100484},"server":"https://fonts.gstatic.com"},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431946563097402","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":100527},"server":"https://waa-pa.clients6.google.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431946564037427","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":100123},"server":"https://lh3.googleusercontent.com"},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431946566726252","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":101027},"server":"https://ogs.google.com","supports_spdy":true},{"anonymization":["GAAAABIAAABodHRwczovL25hZGVrby5uZXQAAA==",false,0],"server":"https://inv-us1.nadeko.net","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431946592500320","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":100851},"server":"https://gemini.gstatic.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431946652519012","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":100256},"server":"https://chromewebstore.google.com","supports_spdy":true},{"anonymization":[3],"server":"https://base.dns.mullvad.net","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431946694603318","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":112183},"server":"https://accounts.google.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431946734881872","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":105502},"server":"https://gemini.google.com","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13429358186662718","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL25hZGVrby5uZXQAAA==",false,0],"network_stats":{"srtt":325658},"server":"https://inv.nadeko.net","supports_spdy":true},{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13431946725298296","port":443,"protocol_str":"quic"}],"anonymization":["GAAAABIAAABodHRwczovL2dvb2dsZS5jb20AAA==",false,0],"network_stats":{"srtt":100764},"server":"https://signaler-pa.clients6.google.com","supports_spdy":true}],"supports_quic":{"address":"10.147.123.164","used_quic":true},"version":5},"network_qualities":{"CAESABiAgICA+P////8B":"4G"}}} \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/.org.chromium.Chromium.UCYqcY b/net.imput.helium/.config/net.imput.helium/Default/.org.chromium.Chromium.UCYqcY deleted file mode 100644 index 75a65d3..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/.org.chromium.Chromium.UCYqcY +++ /dev/null @@ -1 +0,0 @@ -{"sts":[{"expiry":1816418910.793818,"host":"Kqs5vFvAoc2y93qnzAMHci1WJjVGBpIhJ/luVg4Cquo=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1784882910.79382},{"expiry":1795769811.088084,"host":"MzjCeHe2HKY9Et6ILCNSdg5DgEaRTxCpyzki1qChJHI=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1784883411.088087},{"expiry":1816419501.605607,"host":"8/RrMmQlCD2Gsp14wUCE1P8r7B2C5+yE0+g79IPyRsc=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1784883501.605609}],"version":2} \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Account Web Data b/net.imput.helium/.config/net.imput.helium/Default/Account Web Data deleted file mode 100644 index fca9875..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Account Web Data and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Account Web Data-journal b/net.imput.helium/.config/net.imput.helium/Default/Account Web Data-journal deleted file mode 100644 index e69de29..0000000 diff --git a/net.imput.helium/.config/net.imput.helium/Default/Affiliation Database b/net.imput.helium/.config/net.imput.helium/Default/Affiliation Database deleted file mode 100644 index 0b4c5a4..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Affiliation Database and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Affiliation Database-journal b/net.imput.helium/.config/net.imput.helium/Default/Affiliation Database-journal deleted file mode 100644 index e69de29..0000000 diff --git a/net.imput.helium/.config/net.imput.helium/Default/AutofillAiModelCache/LOCK b/net.imput.helium/.config/net.imput.helium/Default/AutofillAiModelCache/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/net.imput.helium/.config/net.imput.helium/Default/AutofillAiModelCache/LOG b/net.imput.helium/.config/net.imput.helium/Default/AutofillAiModelCache/LOG deleted file mode 100644 index e69de29..0000000 diff --git a/net.imput.helium/.config/net.imput.helium/Default/AutofillAiModelCache/LOG.old b/net.imput.helium/.config/net.imput.helium/Default/AutofillAiModelCache/LOG.old deleted file mode 100644 index e69de29..0000000 diff --git a/net.imput.helium/.config/net.imput.helium/Default/AutofillStrikeDatabase/LOCK b/net.imput.helium/.config/net.imput.helium/Default/AutofillStrikeDatabase/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/net.imput.helium/.config/net.imput.helium/Default/AutofillStrikeDatabase/LOG b/net.imput.helium/.config/net.imput.helium/Default/AutofillStrikeDatabase/LOG deleted file mode 100644 index e69de29..0000000 diff --git a/net.imput.helium/.config/net.imput.helium/Default/AutofillStrikeDatabase/LOG.old b/net.imput.helium/.config/net.imput.helium/Default/AutofillStrikeDatabase/LOG.old deleted file mode 100644 index e69de29..0000000 diff --git a/net.imput.helium/.config/net.imput.helium/Default/BookmarkMergedSurfaceOrdering b/net.imput.helium/.config/net.imput.helium/Default/BookmarkMergedSurfaceOrdering deleted file mode 100644 index 2c63c08..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/BookmarkMergedSurfaceOrdering +++ /dev/null @@ -1,2 +0,0 @@ -{ -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Bookmarks b/net.imput.helium/.config/net.imput.helium/Default/Bookmarks deleted file mode 100644 index 343cbab..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Bookmarks +++ /dev/null @@ -1,164 +0,0 @@ -{ - "checksum": "d1d13bda4537d5676dd60d8e7e4687a6", - "roots": { - "bookmark_bar": { - "children": [ { - "date_added": "13428701518841906", - "date_last_used": "13428702992546514", - "guid": "15f32adc-fd0b-4a19-a6db-b8e9f4f3a8c9", - "id": "25", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "kimi", - "type": "url", - "url": "https://www.kimi.com/" - }, { - "date_added": "13428702698415119", - "date_last_used": "13429211987917484", - "guid": "16d2bb4f-9d82-4394-94c9-63e162eac5e0", - "id": "26", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "Google Gemini", - "type": "url", - "url": "https://gemini.google.com/app" - } ], - "date_added": "13428693863707917", - "date_last_used": "0", - "date_modified": "13428779956617140", - "guid": "0bc5d13f-2cba-5d74-951f-3f233fe6c908", - "id": "1", - "name": "Bookmarks bar", - "type": "folder" - }, - "other": { - "children": [ { - "children": [ { - "date_added": "13428696590292077", - "date_last_used": "0", - "guid": "c967263c-cee2-4403-8aeb-238b8885285b", - "id": "7", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "keep thinking", - "type": "url", - "url": "https://www.anthropic.com/path-to-hope" - }, { - "date_added": "13428696611046821", - "date_last_used": "0", - "guid": "85c49b6a-69d8-4cfb-aadb-90abbb377556", - "id": "8", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "hard questions", - "type": "url", - "url": "https://claude.com/hard-questions" - }, { - "date_added": "13428696621128727", - "date_last_used": "0", - "guid": "00c4ff9f-ddc9-42b6-aed1-c8722c564d2a", - "id": "9", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "ai influency", - "type": "url", - "url": "https://www.anthropic.com/research/AI-fluency-index" - }, { - "date_added": "13428696638289401", - "date_last_used": "0", - "guid": "d2237579-872b-4e5b-a8ac-7c4226632e04", - "id": "10", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "The 4 Ds of AI Fluency — Behavioral Indicators", - "type": "url", - "url": "https://claude.com/resources/tutorials/the-4-ds-of-ai-fluency-behavioral-indicators" - }, { - "date_added": "13428696703126375", - "date_last_used": "0", - "guid": "86a5e55c-7432-477b-bf98-d668996a8adc", - "id": "11", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "Research \\ Anthropic", - "type": "url", - "url": "https://www.anthropic.com/research" - }, { - "date_added": "13428696706387483", - "date_last_used": "0", - "guid": "8a0a3477-34c5-4deb-a2ef-5a0f5f00221f", - "id": "12", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "AI Learning Resources & Guides from Anthropic \\ Anthropic", - "type": "url", - "url": "https://www.anthropic.com/learn" - }, { - "date_added": "13428696709227376", - "date_last_used": "0", - "guid": "96c77591-c725-4ad7-828a-2ae89fafa0bd", - "id": "13", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "Introducing Claude for education \\ Anthropic", - "type": "url", - "url": "https://www.anthropic.com/news/introducing-claude-for-education" - } ], - "date_added": "13428696532865779", - "date_last_used": "0", - "date_modified": "13428696709227376", - "guid": "2ebd573c-afac-4f6e-8f64-8edd483a0a41", - "id": "5", - "name": "claude", - "type": "folder" - }, { - "children": [ { - "date_added": "13428779956617140", - "date_last_used": "0", - "guid": "4b2029cf-83a1-4eb2-994c-dc9c55592f9f", - "id": "28", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "AI Engineering from Scratch", - "type": "url", - "url": "https://aiengineeringfromscratch.com/index.html" - } ], - "date_added": "13428701476565553", - "date_last_used": "0", - "date_modified": "13428779961572872", - "guid": "8bf70ba4-3b8c-4ba6-aa57-c87742de2c35", - "id": "15", - "name": "ai", - "type": "folder" - } ], - "date_added": "13428693863707917", - "date_last_used": "0", - "date_modified": "13428701476565762", - "guid": "82b081ec-3dd3-529c-8475-ab6c344590dd", - "id": "2", - "name": "Other bookmarks", - "type": "folder" - }, - "synced": { - "children": [ ], - "date_added": "13428693863707917", - "date_last_used": "0", - "date_modified": "0", - "guid": "4cf2e351-0e85-532b-bb37-df045d8f8d0f", - "id": "3", - "name": "Mobile bookmarks", - "type": "folder" - } - }, - "version": 1 -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Bookmarks.bak b/net.imput.helium/.config/net.imput.helium/Default/Bookmarks.bak deleted file mode 100644 index f5ef123..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Bookmarks.bak +++ /dev/null @@ -1,164 +0,0 @@ -{ - "checksum": "d1d13bda4537d5676dd60d8e7e4687a6", - "roots": { - "bookmark_bar": { - "children": [ { - "date_added": "13428701518841906", - "date_last_used": "13428702992546514", - "guid": "15f32adc-fd0b-4a19-a6db-b8e9f4f3a8c9", - "id": "25", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "kimi", - "type": "url", - "url": "https://www.kimi.com/" - }, { - "date_added": "13428702698415119", - "date_last_used": "13429211118381074", - "guid": "16d2bb4f-9d82-4394-94c9-63e162eac5e0", - "id": "26", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "Google Gemini", - "type": "url", - "url": "https://gemini.google.com/app" - } ], - "date_added": "13428693863707917", - "date_last_used": "0", - "date_modified": "13428779956617140", - "guid": "0bc5d13f-2cba-5d74-951f-3f233fe6c908", - "id": "1", - "name": "Bookmarks bar", - "type": "folder" - }, - "other": { - "children": [ { - "children": [ { - "date_added": "13428696590292077", - "date_last_used": "0", - "guid": "c967263c-cee2-4403-8aeb-238b8885285b", - "id": "7", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "keep thinking", - "type": "url", - "url": "https://www.anthropic.com/path-to-hope" - }, { - "date_added": "13428696611046821", - "date_last_used": "0", - "guid": "85c49b6a-69d8-4cfb-aadb-90abbb377556", - "id": "8", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "hard questions", - "type": "url", - "url": "https://claude.com/hard-questions" - }, { - "date_added": "13428696621128727", - "date_last_used": "0", - "guid": "00c4ff9f-ddc9-42b6-aed1-c8722c564d2a", - "id": "9", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "ai influency", - "type": "url", - "url": "https://www.anthropic.com/research/AI-fluency-index" - }, { - "date_added": "13428696638289401", - "date_last_used": "0", - "guid": "d2237579-872b-4e5b-a8ac-7c4226632e04", - "id": "10", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "The 4 Ds of AI Fluency — Behavioral Indicators", - "type": "url", - "url": "https://claude.com/resources/tutorials/the-4-ds-of-ai-fluency-behavioral-indicators" - }, { - "date_added": "13428696703126375", - "date_last_used": "0", - "guid": "86a5e55c-7432-477b-bf98-d668996a8adc", - "id": "11", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "Research \\ Anthropic", - "type": "url", - "url": "https://www.anthropic.com/research" - }, { - "date_added": "13428696706387483", - "date_last_used": "0", - "guid": "8a0a3477-34c5-4deb-a2ef-5a0f5f00221f", - "id": "12", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "AI Learning Resources & Guides from Anthropic \\ Anthropic", - "type": "url", - "url": "https://www.anthropic.com/learn" - }, { - "date_added": "13428696709227376", - "date_last_used": "0", - "guid": "96c77591-c725-4ad7-828a-2ae89fafa0bd", - "id": "13", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "Introducing Claude for education \\ Anthropic", - "type": "url", - "url": "https://www.anthropic.com/news/introducing-claude-for-education" - } ], - "date_added": "13428696532865779", - "date_last_used": "0", - "date_modified": "13428696709227376", - "guid": "2ebd573c-afac-4f6e-8f64-8edd483a0a41", - "id": "5", - "name": "claude", - "type": "folder" - }, { - "children": [ { - "date_added": "13428779956617140", - "date_last_used": "0", - "guid": "4b2029cf-83a1-4eb2-994c-dc9c55592f9f", - "id": "28", - "meta_info": { - "power_bookmark_meta": "" - }, - "name": "AI Engineering from Scratch", - "type": "url", - "url": "https://aiengineeringfromscratch.com/index.html" - } ], - "date_added": "13428701476565553", - "date_last_used": "0", - "date_modified": "13428779961572872", - "guid": "8bf70ba4-3b8c-4ba6-aa57-c87742de2c35", - "id": "15", - "name": "ai", - "type": "folder" - } ], - "date_added": "13428693863707917", - "date_last_used": "0", - "date_modified": "13428701476565762", - "guid": "82b081ec-3dd3-529c-8475-ab6c344590dd", - "id": "2", - "name": "Other bookmarks", - "type": "folder" - }, - "synced": { - "children": [ ], - "date_added": "13428693863707917", - "date_last_used": "0", - "date_modified": "0", - "guid": "4cf2e351-0e85-532b-bb37-df045d8f8d0f", - "id": "3", - "name": "Mobile bookmarks", - "type": "folder" - } - }, - "version": 1 -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/BudgetDatabase/LOCK b/net.imput.helium/.config/net.imput.helium/Default/BudgetDatabase/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/net.imput.helium/.config/net.imput.helium/Default/BudgetDatabase/LOG b/net.imput.helium/.config/net.imput.helium/Default/BudgetDatabase/LOG deleted file mode 100644 index e69de29..0000000 diff --git a/net.imput.helium/.config/net.imput.helium/Default/BudgetDatabase/LOG.old b/net.imput.helium/.config/net.imput.helium/Default/BudgetDatabase/LOG.old deleted file mode 100644 index e69de29..0000000 diff --git a/net.imput.helium/.config/net.imput.helium/Default/ClientCertificates/LOCK b/net.imput.helium/.config/net.imput.helium/Default/ClientCertificates/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/net.imput.helium/.config/net.imput.helium/Default/ClientCertificates/LOG b/net.imput.helium/.config/net.imput.helium/Default/ClientCertificates/LOG deleted file mode 100644 index e69de29..0000000 diff --git a/net.imput.helium/.config/net.imput.helium/Default/ClientCertificates/LOG.old b/net.imput.helium/.config/net.imput.helium/Default/ClientCertificates/LOG.old deleted file mode 100644 index e69de29..0000000 diff --git a/net.imput.helium/.config/net.imput.helium/Default/Cookies b/net.imput.helium/.config/net.imput.helium/Default/Cookies deleted file mode 100644 index 88e8e1d..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Cookies and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Cookies-journal b/net.imput.helium/.config/net.imput.helium/Default/Cookies-journal deleted file mode 100644 index e69de29..0000000 diff --git a/net.imput.helium/.config/net.imput.helium/Default/DIPS b/net.imput.helium/.config/net.imput.helium/Default/DIPS deleted file mode 100644 index 9897f9b..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/DIPS and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/DIPS-wal b/net.imput.helium/.config/net.imput.helium/Default/DIPS-wal deleted file mode 100644 index 7f1be53..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/DIPS-wal and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/DNR Extension Rules/fgmjlmbojbkmdpofahffgcpkhkngfpef/rules.fbs b/net.imput.helium/.config/net.imput.helium/Default/DNR Extension Rules/fgmjlmbojbkmdpofahffgcpkhkngfpef/rules.fbs deleted file mode 100644 index 89c60b8..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/DNR Extension Rules/fgmjlmbojbkmdpofahffgcpkhkngfpef/rules.fbs and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/DNR Extension Rules/fgmjlmbojbkmdpofahffgcpkhkngfpef/rules.json b/net.imput.helium/.config/net.imput.helium/Default/DNR Extension Rules/fgmjlmbojbkmdpofahffgcpkhkngfpef/rules.json deleted file mode 100644 index 20a8d77..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/DNR Extension Rules/fgmjlmbojbkmdpofahffgcpkhkngfpef/rules.json +++ /dev/null @@ -1 +0,0 @@ -[{"action":{"requestHeaders":[{"header":"Startpage-Extension","operation":"set","value":"ext-chrome"},{"header":"Startpage-Extension-Version","operation":"set","value":"3.0.8"},{"header":"Startpage-Extension-Segment","operation":"set","value":"startpage.defaultchx"}],"type":"modifyHeaders"},"condition":{"resourceTypes":["main_frame"],"urlFilter":"|http*"},"id":1,"priority":1},{"action":{"requestHeaders":[{"header":"Startpage-Extension","operation":"set","value":"ext-chrome"},{"header":"Startpage-Extension-Version","operation":"set","value":"3.0.8"},{"header":"Startpage-Extension-Segment","operation":"set","value":"startpage.defaultchx"},{"header":"Startpage-Extension-Campaign","operation":"set","value":"none"},{"header":"Startpage-Extension-Date","operation":"set","value":"2000-01-01"},{"header":"Startpage-Extension-Source","operation":"set","value":"organic"},{"header":"Startpage-Extension-Account","operation":"set","value":"none"},{"header":"Startpage-Extension-Act","operation":"set","value":"none"}],"type":"modifyHeaders"},"condition":{"resourceTypes":["main_frame"],"urlFilter":"/do/dsearch"},"id":2,"priority":2}] \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/DawnGraphiteCache/data_0 b/net.imput.helium/.config/net.imput.helium/Default/DawnGraphiteCache/data_0 deleted file mode 100644 index d76fb77..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/DawnGraphiteCache/data_0 and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/DawnGraphiteCache/data_1 b/net.imput.helium/.config/net.imput.helium/Default/DawnGraphiteCache/data_1 deleted file mode 100644 index 5ecc1ca..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/DawnGraphiteCache/data_1 and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/DawnGraphiteCache/data_2 b/net.imput.helium/.config/net.imput.helium/Default/DawnGraphiteCache/data_2 deleted file mode 100644 index c7e2eb9..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/DawnGraphiteCache/data_2 and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/DawnGraphiteCache/data_3 b/net.imput.helium/.config/net.imput.helium/Default/DawnGraphiteCache/data_3 deleted file mode 100644 index 5eec973..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/DawnGraphiteCache/data_3 and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/DawnGraphiteCache/index b/net.imput.helium/.config/net.imput.helium/Default/DawnGraphiteCache/index deleted file mode 100644 index cebb3df..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/DawnGraphiteCache/index and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/DawnWebGPUCache/data_0 b/net.imput.helium/.config/net.imput.helium/Default/DawnWebGPUCache/data_0 deleted file mode 100644 index d76fb77..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/DawnWebGPUCache/data_0 and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/DawnWebGPUCache/data_1 b/net.imput.helium/.config/net.imput.helium/Default/DawnWebGPUCache/data_1 deleted file mode 100644 index 9b7cb68..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/DawnWebGPUCache/data_1 and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/DawnWebGPUCache/data_2 b/net.imput.helium/.config/net.imput.helium/Default/DawnWebGPUCache/data_2 deleted file mode 100644 index c7e2eb9..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/DawnWebGPUCache/data_2 and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/DawnWebGPUCache/data_3 b/net.imput.helium/.config/net.imput.helium/Default/DawnWebGPUCache/data_3 deleted file mode 100644 index 5eec973..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/DawnWebGPUCache/data_3 and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/DawnWebGPUCache/index b/net.imput.helium/.config/net.imput.helium/Default/DawnWebGPUCache/index deleted file mode 100644 index 95c5078..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/DawnWebGPUCache/index and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension Cookies b/net.imput.helium/.config/net.imput.helium/Default/Extension Cookies deleted file mode 100644 index 77dc4f6..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extension Cookies and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension Cookies-journal b/net.imput.helium/.config/net.imput.helium/Default/Extension Cookies-journal deleted file mode 100644 index e69de29..0000000 diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension Rules/000003.log b/net.imput.helium/.config/net.imput.helium/Default/Extension Rules/000003.log deleted file mode 100644 index e1eefad..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extension Rules/000003.log and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension Rules/CURRENT b/net.imput.helium/.config/net.imput.helium/Default/Extension Rules/CURRENT deleted file mode 100644 index 7ed683d..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extension Rules/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000001 diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension Rules/LOCK b/net.imput.helium/.config/net.imput.helium/Default/Extension Rules/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension Rules/LOG b/net.imput.helium/.config/net.imput.helium/Default/Extension Rules/LOG deleted file mode 100644 index a5a6234..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extension Rules/LOG +++ /dev/null @@ -1,3 +0,0 @@ -2026/07/24-20:47:34.593 1003 Reusing MANIFEST /home/seraphim/.config/net.imput.helium/Default/Extension Rules/MANIFEST-000001 -2026/07/24-20:47:34.593 1003 Recovering log #3 -2026/07/24-20:47:34.593 1003 Reusing old log /home/seraphim/.config/net.imput.helium/Default/Extension Rules/000003.log diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension Rules/LOG.old b/net.imput.helium/.config/net.imput.helium/Default/Extension Rules/LOG.old deleted file mode 100644 index 9406434..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extension Rules/LOG.old +++ /dev/null @@ -1,3 +0,0 @@ -2026/07/24-17:33:32.685 1fb4 Reusing MANIFEST /home/seraphim/.config/net.imput.helium/Default/Extension Rules/MANIFEST-000001 -2026/07/24-17:33:32.686 1fb4 Recovering log #3 -2026/07/24-17:33:32.686 1fb4 Reusing old log /home/seraphim/.config/net.imput.helium/Default/Extension Rules/000003.log diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension Rules/MANIFEST-000001 b/net.imput.helium/.config/net.imput.helium/Default/Extension Rules/MANIFEST-000001 deleted file mode 100644 index 18e5cab..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extension Rules/MANIFEST-000001 and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/000003.log b/net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/000003.log deleted file mode 100644 index 4148d4d..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/000003.log and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/CURRENT b/net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/CURRENT deleted file mode 100644 index 7ed683d..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000001 diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/LOCK b/net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/LOG b/net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/LOG deleted file mode 100644 index d9e40f0..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/LOG +++ /dev/null @@ -1,3 +0,0 @@ -2026/07/24-20:47:34.594 1003 Reusing MANIFEST /home/seraphim/.config/net.imput.helium/Default/Extension Scripts/MANIFEST-000001 -2026/07/24-20:47:34.594 1003 Recovering log #3 -2026/07/24-20:47:34.594 1003 Reusing old log /home/seraphim/.config/net.imput.helium/Default/Extension Scripts/000003.log diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/LOG.old b/net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/LOG.old deleted file mode 100644 index e2d533c..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/LOG.old +++ /dev/null @@ -1,3 +0,0 @@ -2026/07/24-17:33:32.686 1fb4 Reusing MANIFEST /home/seraphim/.config/net.imput.helium/Default/Extension Scripts/MANIFEST-000001 -2026/07/24-17:33:32.687 1fb4 Recovering log #3 -2026/07/24-17:33:32.687 1fb4 Reusing old log /home/seraphim/.config/net.imput.helium/Default/Extension Scripts/000003.log diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/MANIFEST-000001 b/net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/MANIFEST-000001 deleted file mode 100644 index 18e5cab..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extension Scripts/MANIFEST-000001 and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension State/000005.ldb b/net.imput.helium/.config/net.imput.helium/Default/Extension State/000005.ldb deleted file mode 100644 index 72d5ba5..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extension State/000005.ldb and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension State/000020.ldb b/net.imput.helium/.config/net.imput.helium/Default/Extension State/000020.ldb deleted file mode 100644 index fae8bfd..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extension State/000020.ldb and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension State/000023.ldb b/net.imput.helium/.config/net.imput.helium/Default/Extension State/000023.ldb deleted file mode 100644 index 9d07d3a..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extension State/000023.ldb and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension State/000026.ldb b/net.imput.helium/.config/net.imput.helium/Default/Extension State/000026.ldb deleted file mode 100644 index d647254..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extension State/000026.ldb and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension State/000028.log b/net.imput.helium/.config/net.imput.helium/Default/Extension State/000028.log deleted file mode 100644 index e8b784e..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extension State/000028.log and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension State/000029.ldb b/net.imput.helium/.config/net.imput.helium/Default/Extension State/000029.ldb deleted file mode 100644 index f59ad57..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extension State/000029.ldb and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension State/CURRENT b/net.imput.helium/.config/net.imput.helium/Default/Extension State/CURRENT deleted file mode 100644 index 7ed683d..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extension State/CURRENT +++ /dev/null @@ -1 +0,0 @@ -MANIFEST-000001 diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension State/LOCK b/net.imput.helium/.config/net.imput.helium/Default/Extension State/LOCK deleted file mode 100644 index e69de29..0000000 diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension State/LOG b/net.imput.helium/.config/net.imput.helium/Default/Extension State/LOG deleted file mode 100644 index c8cd8d7..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extension State/LOG +++ /dev/null @@ -1,3 +0,0 @@ -2026/07/25-18:00:07.050 1a97 Reusing MANIFEST /home/seraphim/.config/net.imput.helium/Default/Extension State/MANIFEST-000001 -2026/07/25-18:00:07.050 1a97 Recovering log #28 -2026/07/25-18:00:07.062 1a97 Reusing old log /home/seraphim/.config/net.imput.helium/Default/Extension State/000028.log diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension State/LOG.old b/net.imput.helium/.config/net.imput.helium/Default/Extension State/LOG.old deleted file mode 100644 index 41de58e..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extension State/LOG.old +++ /dev/null @@ -1,6 +0,0 @@ -2026/07/25-11:53:34.316 db9 Reusing MANIFEST /home/seraphim/.config/net.imput.helium/Default/Extension State/MANIFEST-000001 -2026/07/25-11:53:34.316 db9 Recovering log #25 -2026/07/25-11:53:34.335 db9 Reusing old log /home/seraphim/.config/net.imput.helium/Default/Extension State/000025.log -2026/07/25-12:10:25.272 daf Level-0 table #29: started -2026/07/25-12:10:25.289 daf Level-0 table #29: 1843293 bytes OK -2026/07/25-12:10:25.301 daf Delete type=0 #25 diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extension State/MANIFEST-000001 b/net.imput.helium/.config/net.imput.helium/Default/Extension State/MANIFEST-000001 deleted file mode 100644 index ee34700..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extension State/MANIFEST-000001 and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/@types/index.d.ts b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/@types/index.d.ts deleted file mode 100644 index d4574b0..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/@types/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -type Format = { - ext: string; - mimeType: string; - serializer: (cookies: chrome.cookies.Cookie[]) => string; -}; diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/_metadata/verified_contents.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/_metadata/verified_contents.json deleted file mode 100644 index a8a100a..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/_metadata/verified_contents.json +++ /dev/null @@ -1 +0,0 @@ -[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJAdHlwZXMvaW5kZXguZC50cyIsInJvb3RfaGFzaCI6IlZaZWhYcUF6U0VSOUJmR0NWWVQxdEJwdzdNb3k5MkduSWN4ZDZjRVNyMTAifSx7InBhdGgiOiJiYWNrZ3JvdW5kLmh0bWwiLCJyb290X2hhc2giOiJJaUNpeGtHZkhUZ2tFc3IzVFhqZmc3Unp5azNwS3JOU1ZXMnp3U2pOWXVFIn0seyJwYXRoIjoiYmFja2dyb3VuZC5tanMiLCJyb290X2hhc2giOiJtWWxVejFfZWwzMF9oZ1F0bmRJSmM1R015VmtPZnpjOXZyS0lPQXNLblpZIn0seyJwYXRoIjoiZG9uYXRpb24uY3NzIiwicm9vdF9oYXNoIjoiVVpjSmdCQkt2V0ViVGxnaHpBTGFVUkNtVE1iZkRtckF2aEdLbVlQMHhZUSJ9LHsicGF0aCI6Imljb25mb250L01hdGVyaWFsSWNvbnNPdXRsaW5lZC53b2ZmMiIsInJvb3RfaGFzaCI6ImZzdk5Ycmp3dU5JUnExQVI0clNyR05nVDF0WHR6TUFpbFljRk16aHFaMEEifSx7InBhdGgiOiJpY29uZm9udC9tYXRlcmlhbC1pY29ucy5jc3MiLCJyb290X2hhc2giOiJqTGd6MG9MNE9HQmJCX05RdmJGMUhTLThxMlRQMEM2X1pSZEJrakpWVTJrIn0seyJwYXRoIjoiaW1hZ2VzL2JtYy1sb2dvLnN2ZyIsInJvb3RfaGFzaCI6InAwRnNZZ0J5azlXU20xRFpFeS1oandULVBOMy1MMk41MFlMaDFIOHZHX3cifSx7InBhdGgiOiJpbWFnZXMvaWNvbjEyOC5wbmciLCJyb290X2hhc2giOiJkVWs4cGZaRXFYSjhjTW9LdzVKR0h0VnA2SDZVQ0tSNE9oSzl6U1czaVBFIn0seyJwYXRoIjoiaW1hZ2VzL2ljb24xNi5wbmciLCJyb290X2hhc2giOiJnMHA3NlZEanNjS3hnWnFRZU43QWIxTldoYl9CQkZCX3RuVDdsb1JvWFE0In0seyJwYXRoIjoiaW1hZ2VzL2ljb24zMi5wbmciLCJyb290X2hhc2giOiJzMWNzbTZaXzgyVkxZeU9QS1ZPamd2QmYzWlpwRDNDNFVzX3FQbXNvUUd3In0seyJwYXRoIjoiaW1hZ2VzL2ljb240OC5wbmciLCJyb290X2hhc2giOiJ1NTl1dkhxUFluNUtPczFDSV9aX2RPQ3hGOG5SR0dvMWFqckpPa2NPaUJBIn0seyJwYXRoIjoiaW1hZ2VzL3BheXBhbC1sb2dvLnN2ZyIsInJvb3RfaGFzaCI6Ik52QzNJVDNIWHAzdWQ5TUw5NXpWc0xGU2hLQkxoakhnaGxjVWxoa2NIUVkifSx7InBhdGgiOiJtYW5pZmVzdC5qc29uIiwicm9vdF9oYXNoIjoiU2E5NDhBUzZSY3h5Y1M3VkxEYXFsLVVQazBib2VtZlBPSjNkcF9hTHZMTSJ9LHsicGF0aCI6Im1vZHVsZXMvY29va2llX2Zvcm1hdC5tanMiLCJyb290X2hhc2giOiJKa0ExZ1QycWdub0JJb0huR1l1TVJiTlMzUTF4eEtTRkM1QzFQOGFBbWlFIn0seyJwYXRoIjoibW9kdWxlcy9nZXRfYWxsX2Nvb2tpZXMubWpzIiwicm9vdF9oYXNoIjoiMkhtM0lLMHVmLWZJWUp5X3pGSDdaRnJ3SlNRaWlRWjVaLXJjcVhKVTFkcyJ9LHsicGF0aCI6Im1vZHVsZXMvc2F2ZV90b19maWxlLm1qcyIsInJvb3RfaGFzaCI6IkhERDVWSGN0Z09xUUZfSGtPQnFtRGYwSk4xTzJpeHpxZ1VGRlJZZ1Q0NUkifSx7InBhdGgiOiJwb3B1cC1vcHRpb25zLmNzcyIsInJvb3RfaGFzaCI6Im1uOXRXdTNpYzZlTUNWT01tX1FJem5HNDlXeldiRFFyN29rZklUT1dXQTAifSx7InBhdGgiOiJwb3B1cC5jc3MiLCJyb290X2hhc2giOiJwcTlWbXNuSmE4ZnEwOVg1SnJVdVVtNlBUcVBMQUxIWUtUMGowTXZHYnRjIn0seyJwYXRoIjoicG9wdXAuZGFyay5jc3MiLCJyb290X2hhc2giOiJSX2plTUJ1Z1Q2N2stS3RpbGdWTGV5VkZ6NmJ6NFByV1NuMHZCZFM0WW1vIn0seyJwYXRoIjoicG9wdXAuaHRtbCIsInJvb3RfaGFzaCI6Ik1XeGE1TEhhWkNJUnUyNzZKQmZ1ZHdjUlA0Y2x1Mk1PQVJRalgtVmd5WWcifSx7InBhdGgiOiJwb3B1cC5tanMiLCJyb290X2hhc2giOiIzVzR0TzRHc0JnRS1qbnQ1UEhMWV9qNUpVNTRDTjlOZGU0SExhUW5YMFpNIn0seyJwYXRoIjoidGFibGUtbm93cmFwLmpzIiwicm9vdF9oYXNoIjoieFoyY2hEbFd6VG9rSnZWRjl1Zm5Icm5QblZMMkV0VU00ZzlsTk9lYnpyTSJ9XSwiZm9ybWF0IjoidHJlZWhhc2giLCJoYXNoX2Jsb2NrX3NpemUiOjQwOTZ9XSwiaXRlbV9pZCI6ImNjbGVsbmRhaGJja2JlbmtqaGZscGRiZ2RsZGxiZWNjIiwiaXRlbV92ZXJzaW9uIjoiMC43LjIiLCJwcm90b2NvbF92ZXJzaW9uIjoxfQ","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"MJu3uzVHMi76m8nh1QMZX3OMYHfgl1dKrDIFiyEfDqq8jpQM8Jb5uLWWh4xzMb3deimxJga0i19q2DiBWU6XUNFeR6DXzTQ3tBi0wzB9Zq0TmSi1xVO8oFalwbLs79GKq-G9eBhJFldnkbhju2AuARsJX8gVW22UpFwPek7ZV8NNfhmvxen0G-z14x5dSlkUrEyP2jDK1QMyjD3wXHzvhVWVVlsT2tz707GAvWT6AUemFQWxaW6xbOkCsJRwHkcWaeAIMXmaPCoW50IB61LTY5gM7IS6tN6hJygt35QmMS8ie7uAAYKT9QNAU-v_doLvVdq4apK3xnckfaQMIH9yrA"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"Ij0wx3I8gFIMgs4diSA4I4wY-KJcTiTKt4zo5UAqmavGN6_kw7m0xa_wfmeOtNmfvQL6onpKRLd7AwpEO0eB4vn0meVWMdT1HDPdSYC8p1a4ByMZyAZfSWEUfY6nKgMgq14papdv6b5wbziis377jE16v8V8qU3NjHVprnpNx9rpVTuhFP9I6Dv1_WaagG91QrSPJ70hEt0bT--jQGr56fA4IoDVgpvi5Si4M96D-lb_oBY9Pl9pWlh-3DSfta4P1z5tHkGTg6G_KMJgVSwRCdEr-h9uTIashFX5g2h_uIdyJVKRQiHSDe3gvXs8h9bhqzIY_J9E-freJCREvVvP-g"}]}}] \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/background.html b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/background.html deleted file mode 100644 index 27dd81b..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/background.html +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/background.mjs b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/background.mjs deleted file mode 100644 index 462a02a..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/background.mjs +++ /dev/null @@ -1,76 +0,0 @@ -import getAllCookies from './modules/get_all_cookies.mjs'; -import saveToFile from './modules/save_to_file.mjs'; - -/** - * Update icon badge counter on active page - */ -const updateBadgeCounter = async () => { - const [tab] = await chrome.tabs.query({ active: true, currentWindow: true }); - if (!tab) { - return; - } - const { id: tabId, url: urlString } = tab; - if (!urlString) { - chrome.action.setBadgeText({ tabId, text: '' }); - return; - } - const url = new URL(urlString); - const cookies = await getAllCookies({ - url: url.href, - partitionKey: { topLevelSite: url.origin }, - }); - const text = cookies.length.toFixed(); - chrome.action.setBadgeText({ tabId, text }); -}; - -chrome.cookies.onChanged.addListener(updateBadgeCounter); -chrome.tabs.onUpdated.addListener(updateBadgeCounter); -chrome.tabs.onActivated.addListener(updateBadgeCounter); -chrome.windows.onFocusChanged.addListener(updateBadgeCounter); - -// Update notification -chrome.runtime.onInstalled.addListener(({ previousVersion, reason }) => { - if (reason === 'update') { - const currentVersion = chrome.runtime.getManifest().version; - chrome.notifications.create('updated', { - type: 'basic', - title: 'Get cookies.txt LOCALLY', - message: `Updated from ${previousVersion} to ${currentVersion}`, - iconUrl: '/images/icon128.png', - buttons: [{ title: 'Github Releases' }, { title: 'Uninstall' }], - }); - } -}); - -// Update notification's button handler -chrome.notifications.onButtonClicked.addListener( - (notificationId, buttonIndex) => { - console.log(notificationId, buttonIndex); - if (notificationId === 'updated') { - switch (buttonIndex) { - case 0: - chrome.tabs.create({ - url: 'https://github.com/kairi003/Get-cookies.txt-LOCALLY/releases', - }); - break; - case 1: - chrome.management.uninstallSelf({ showConfirmDialog: true }); - break; - } - } - }, -); - -// TODO: use offscreen API to integrate implementation in chrome and firefox -// Save file message listener for firefox -chrome.runtime.onMessage.addListener(async (message, sender, sendResponse) => { - const { type, target, data } = message || {}; - if (target !== 'background') return; - if (type === 'save') { - const { text, name, format, saveAs } = data || {}; - await saveToFile(text, name, format, saveAs); - sendResponse('done'); - return true; - } - return true; -}); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/donation.css b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/donation.css deleted file mode 100644 index e906ddb..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/donation.css +++ /dev/null @@ -1,51 +0,0 @@ -/* summary styles */ -.donation details summary { - width: fit-content; - outline: none; - text-decoration: underline; - cursor: pointer; - font-style: italic; -} - -.donation details summary:hover { - outline: none; - box-shadow: 0 0 5px rgba(0, 128, 255, 0.5); -} - -/* donation description styles */ -.donation-description p { - margin-block-start: 0.5em; - margin-block-end: 0.5em; -} - -/* payment button container styles */ -.donation .payment-buttons-container { - display: flex; - gap: 10px; - padding: 0; - list-style-type: none; - justify-content: center; - margin-top: 15px; - text-decoration: none; -} - -/* payment button styles */ -.donation .payment-button { - display: flex; - align-items: center; - padding: 5px 10px; - background-color: #fff; - border: solid 1px #ddd; - border-radius: 5px; - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); - transition: filter 0.3s; -} - -/* payment button hover effect */ -.donation .payment-button:hover { - filter: brightness(0.8); -} - -.donation .payment-button img { - height: 2em; -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/iconfont/MaterialIconsOutlined.woff2 b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/iconfont/MaterialIconsOutlined.woff2 deleted file mode 100644 index bc88d5c..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/iconfont/MaterialIconsOutlined.woff2 and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/iconfont/material-icons.css b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/iconfont/material-icons.css deleted file mode 100644 index 2e7adb4..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/iconfont/material-icons.css +++ /dev/null @@ -1,23 +0,0 @@ -/* fallback */ -@font-face { - font-family: "Material Symbols Outlined"; - font-style: normal; - font-weight: 400; - src: url(MaterialIconsOutlined.woff2) format("woff2"); -} - -.material-symbols-outlined { - font-family: "Material Symbols Outlined"; - font-weight: normal; - font-style: normal; - font-size: 24px; - line-height: 1; - letter-spacing: normal; - text-transform: none; - display: inline-block; - white-space: nowrap; - word-wrap: normal; - direction: ltr; - -webkit-font-feature-settings: "liga"; - -webkit-font-smoothing: antialiased; -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/bmc-logo.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/bmc-logo.svg deleted file mode 100644 index 59ce4ca..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/bmc-logo.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/icon128.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/icon128.png deleted file mode 100644 index 1353b48..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/icon128.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/icon16.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/icon16.png deleted file mode 100644 index a110123..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/icon16.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/icon32.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/icon32.png deleted file mode 100644 index 401cc5e..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/icon32.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/icon48.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/icon48.png deleted file mode 100644 index d1b7731..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/icon48.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/paypal-logo.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/paypal-logo.svg deleted file mode 100644 index 3742161..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/images/paypal-logo.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/manifest.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/manifest.json deleted file mode 100644 index 1f6cfdd..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/manifest.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "action": { - "default_icon": { - "128": "/images/icon128.png", - "16": "/images/icon16.png", - "32": "/images/icon32.png", - "48": "/images/icon48.png" - }, - "default_popup": "popup.html" - }, - "background": { - "service_worker": "background.mjs", - "type": "module" - }, - "description": "Get cookies.txt, NEVER send information outside with open-source", - "host_permissions": [ "\u003Call_urls>" ], - "icons": { - "128": "/images/icon128.png", - "16": "/images/icon16.png", - "32": "/images/icon32.png", - "48": "/images/icon48.png" - }, - "incognito": "split", - "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAs5KgbYfVwKJE4o4syIT5CsGv26096FD1Uv+iDdCKKYco5h1MYY35REr7OyFumrGTFPBRu92sB3etj/I6iNezLtOzN0/JXLEjwqsNXmdnKnKdg7QXuHMe7ol+o3wGmQ+4/UDEptMN/lxZIZfn7r89QBsPTJR2oWldAkktQfRfNa0dhErFt8uMpphYCyCXRaqzcPCxvVZx43vEuq4Jge1if+4CwEBniHNpwH32MO3nInmHhlMw0cy05f9JX82pjucbksUFMUmj2K+WwX0+gm566xDxzPktgqAqfLzCCP1DJVIU4j2/y328Nk6jajN1QBitbeq4ZvDVx3404AX2+NdTTQIDAQAB", - "manifest_version": 3, - "name": "Get cookies.txt LOCALLY", - "permissions": [ "activeTab", "cookies", "downloads", "notifications" ], - "update_url": "https://clients2.google.com/service/update2/crx", - "version": "0.7.2" -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/modules/cookie_format.mjs b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/modules/cookie_format.mjs deleted file mode 100644 index 0ba221d..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/modules/cookie_format.mjs +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Convert Chrome's JSON format cookies data to a string array for Netscape format - * @param {chrome.cookies.Cookie[]} cookies - * @returns {string[][]} - */ -export const jsonToNetscapeMapper = (cookies) => { - return cookies.map( - ({ domain, expirationDate, path, secure, name, value }) => { - const includeSubDomain = !!domain?.startsWith('.'); - const expiry = expirationDate?.toFixed() ?? '0'; - const arr = [domain, includeSubDomain, path, secure, expiry, name, value]; - return arr.map((v) => - typeof v === 'boolean' ? v.toString().toUpperCase() : v, - ); - }, - ); -}; - -/** @type {Record} */ -export const formatMap = { - netscape: { - ext: '.txt', - mimeType: 'text/plain', - serializer: (cookies) => { - const netscapeTable = jsonToNetscapeMapper(cookies); - const text = [ - '# Netscape HTTP Cookie File', - '# https://curl.haxx.se/rfc/cookie_spec.html', - '# This is a generated file! Do not edit.', - '', - ...netscapeTable.map((row) => row.join('\t')), - '', // Add a new line at the end - ].join('\n'); - return text; - }, - }, - json: { - ext: '.json', - mimeType: 'application/json', - serializer: JSON.stringify, - }, - header: { - ext: '.txt', - mimeType: 'text/plain', - serializer: (cookies) => { - return cookies.map(({ name, value }) => `${name}=${value};`).join(' '); - }, - }, -}; diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/modules/get_all_cookies.mjs b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/modules/get_all_cookies.mjs deleted file mode 100644 index c30e7ac..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/modules/get_all_cookies.mjs +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Get all cookies that match the given criteria. - * @param {chrome.cookies.GetAllDetails} details - * @returns {Promise} - */ -export default async function getAllCookies(details) { - details.storeId ??= await getCurrentCookieStoreId(); - const { partitionKey, ...detailsWithoutPartitionKey } = details; - // Error handling for browsers that do not support partitionKey, such as chrome < 119. - // `chrome.cookies.getAll()` returns Promise but cannot directly catch() chain. - const cookiesWithPartitionKey = partitionKey - ? await Promise.resolve() - .then(() => chrome.cookies.getAll(details)) - .catch(() => []) - : []; - const cookies = await chrome.cookies.getAll(detailsWithoutPartitionKey); - return [...cookies, ...cookiesWithPartitionKey]; -} - -/** - * Get the current cookie store ID. - * @returns {Promise} - */ -const getCurrentCookieStoreId = async () => { - // If the extension is in split incognito mode, return undefined to choose the default store. - if (chrome.runtime.getManifest().incognito === 'split') return undefined; - - // Firefox supports the `tab.cookieStoreId` property. - const [tab] = await chrome.tabs.query({ active: true, currentWindow: true }); - if (tab.cookieStoreId) return tab.cookieStoreId; - - // Chrome does not support the `tab.cookieStoreId` property. - const stores = await chrome.cookies.getAllCookieStores(); - return stores.find((store) => store.tabIds.includes(tab.id))?.id; -}; diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/modules/save_to_file.mjs b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/modules/save_to_file.mjs deleted file mode 100644 index c1c8ced..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/modules/save_to_file.mjs +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Save text data as a file - * Firefox fails if revoked during download. - * Firefox cannot use saveAs in a popup, so the background script handles it. - * @param {string} text - * @param {string} name - * @param {Format} format - * @param {boolean} saveAs - */ -export default async function saveToFile( - text, - name, - { ext, mimeType }, - saveAs = false, -) { - const blob = new Blob([text], { type: mimeType }); - const filename = name + ext; - const url = URL.createObjectURL(blob); - const id = await chrome.downloads.download({ url, filename, saveAs }); - - /** @param {chrome.downloads.DownloadDelta} delta */ - const onChange = (delta) => { - if (delta.id === id && delta.state?.current !== 'in_progress') { - chrome.downloads.onChanged.removeListener(onChange); - URL.revokeObjectURL(url); - } - }; - - chrome.downloads.onChanged.addListener(onChange); -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/popup-options.css b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/popup-options.css deleted file mode 100644 index e77ffa1..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/popup-options.css +++ /dev/null @@ -1,17 +0,0 @@ -.option-container { - display: flex; - justify-content: flex-start; - align-items: center; - width: 100%; - gap: 1em; -} - -.option { - display: flex; - align-items: stretch; - gap: 0.5em; -} - -.netscape-table.nowrap tbody { - white-space: nowrap; -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/popup.css b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/popup.css deleted file mode 100644 index 3770b59..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/popup.css +++ /dev/null @@ -1,116 +0,0 @@ -html { - width: 500px; - box-sizing: border-box; - font-family: "Arial", sans-serif; - background-color: #fdfbff; -} - -body { - margin: 8px; - width: 484px; - font-size: 75%; -} - -h1 { - font-size: 1.1rem; - font-weight: bold; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - text-align: center; -} - -h1 > a#location { - color: #3153ee; -} - -main { - display: grid; - gap: 0.5rem; -} - -.export-btn-container { - display: grid; - grid-template-rows: 1fr 1fr; - grid-template-columns: 1fr 1fr 1fr; - gap: 0.5rem; -} - -.export-btn { - border: none; - border-radius: 5px; - height: 2.5rem; - font-size: 0.9rem; -} -.export-btn > .button-text { - display: flex; - align-items: center; - justify-content: center; - gap: 0.2em; -} - -.export-btn:hover { - filter: brightness(0.85); -} -.export-btn:active { - filter: brightness(1.15); -} - -.export-btn.large { - grid-column: 1 / 4; -} - -.export-btn.export { - background-color: #485fc7; - color: white; -} - -.export-btn.export-as { - background-color: #fee08a; - color: black; -} - -.export-btn.copy, -.export-btn.export-all { - background-color: #3f8ecf; - color: white; -} - -/* default text */ -.export-btn.copy { - .default-copy-text { - display: flex; - } - .copied-text { - display: none; - } -} - -/* when copied */ -.export-btn.copy.copied { - .default-copy-text { - display: none; - } - .copied-text { - display: flex; - } -} - -.table-container { - width: 100%; - max-height: 380px; - overflow: scroll; -} - -.netscape-table { - border-collapse: collapse; -} - -.netscape-table th, -td { - border: solid 1px black; -} - -.netscape-table tbody tr:nth-of-type(2n + 1) { - background-color: aliceblue; -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/popup.dark.css b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/popup.dark.css deleted file mode 100644 index 9fa46ca..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/popup.dark.css +++ /dev/null @@ -1,30 +0,0 @@ -@media (prefers-color-scheme: dark) { - html { - background-color: #2a2a2a; - scrollbar-color: #aaa #333; - color: #dfdfdf; - } - - h1 > a#location { - color: #e09200; - } - - .table-container { - background-color: #1e1e1e; - } - - .netscape-table th, - td { - border: solid 1px #424242; - } - - .netscape-table tbody tr:nth-of-type(2n + 1) { - background-color: #2a2a2a; - } - - select { - background-color: #3a3a3a; - color: #dfdfdf; - border: solid 1px #555; - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/popup.html b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/popup.html deleted file mode 100644 index f05cc1b..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/popup.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - - - -
-

Get cookies.txt for

-
-
-
-
- - - - -
- -
-
- - -
- -
- - -
-
- -
- - - - - - - - - - - - - -
DomainInclude SubdomainsPathSecureExpiryNameValue
-
- -
-
- Buy Developer a Coffee ☕ -
-

Got many offers to buy this extension, but I'm never going to sell it to spammers!

-

By the way, a cup of coffee would make my day 😎

-
- -
-
-
- - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/popup.mjs b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/popup.mjs deleted file mode 100644 index e3169d4..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/popup.mjs +++ /dev/null @@ -1,138 +0,0 @@ -import { formatMap, jsonToNetscapeMapper } from './modules/cookie_format.mjs'; -import getAllCookies from './modules/get_all_cookies.mjs'; -import _saveToFile from './modules/save_to_file.mjs'; - -/** Promise to get URL of Active Tab */ -const getUrlPromise = chrome.tabs - .query({ active: true, currentWindow: true }) - .then(([{ url }]) => new URL(url)); - -// ---------------------------------------------- -// Functions -// ---------------------------------------------- - -/** - * Get Stringified Cookies Text and Format Data - * @param {chrome.cookies.GetAllDetails} details - * @returns {Promise<{ text: string, format: Format }>} - */ -const getCookieText = async (details) => { - const cookies = await getAllCookies(details); - const format = formatMap[document.querySelector('#format').value]; - if (!format) throw new Error('Invalid format'); - const text = format.serializer(cookies); - return { text, format }; -}; - -// TODO: use offscreen API to integrate implementation in chrome and firefox -/** - * Save text data as a file - * Firefox cannot use saveAs in a popup, so the background script handles it. - * @param {string} text - * @param {string} name - * @param {Format} format - * @param {boolean} saveAs - */ -const saveToFile = async (text, name, { ext, mimeType }, saveAs = false) => { - const format = { ext, mimeType }; - const isFirefox = - chrome.runtime.getManifest().browser_specific_settings !== undefined; - if (isFirefox) { - await chrome.runtime.sendMessage({ - type: 'save', - target: 'background', - data: { text, name, format, saveAs }, - }); - } else { - await _saveToFile(text, name, format, saveAs); - } -}; - -/** - * Copy text data to the clipboard - * @param {string} text - */ -const setClipboard = async (text) => { - await navigator.clipboard.writeText(text); - const copyButton = document.getElementById('copy'); - copyButton.classList.add('copied'); - setTimeout(() => { - copyButton.classList.remove('copied'); - }, 2000); -}; - -// ---------------------------------------------- -// Actions after resolving the promise -// ---------------------------------------------- - -/** Set URL in the header */ -getUrlPromise.then((url) => { - const location = document.querySelector('#location'); - location.textContent = location.href = url.href; -}); - -/** Set Cookies data to the table */ -getUrlPromise - .then((url) => - getAllCookies({ - url: url.href, - partitionKey: { topLevelSite: url.origin }, - }), - ) - .then((cookies) => { - const netscape = jsonToNetscapeMapper(cookies); - const tableRows = netscape.map((row) => { - const tr = document.createElement('tr'); - tr.replaceChildren( - ...row.map((v) => { - const td = document.createElement('td'); - td.textContent = v; - return td; - }), - ); - return tr; - }); - document.querySelector('table tbody').replaceChildren(...tableRows); - }); - -// ---------------------------------------------- -// Event Listeners -// ---------------------------------------------- - -document.querySelector('#export').addEventListener('click', async () => { - const url = await getUrlPromise; - const details = { url: url.href, partitionKey: { topLevelSite: url.origin } }; - const { text, format } = await getCookieText(details); - saveToFile(text, `${url.hostname}_cookies`, format); -}); - -document.querySelector('#exportAs').addEventListener('click', async () => { - const url = await getUrlPromise; - const details = { url: url.href, partitionKey: { topLevelSite: url.origin } }; - const { text, format } = await getCookieText(details); - saveToFile(text, `${url.hostname}_cookies`, format, true); -}); - -document.querySelector('#copy').addEventListener('click', async () => { - const url = await getUrlPromise; - const details = { url: url.href, partitionKey: { topLevelSite: url.origin } }; - const { text } = await getCookieText(details); - setClipboard(text); -}); - -document.querySelector('#exportAll').addEventListener('click', async () => { - const { text, format } = await getCookieText({ partitionKey: {} }); - saveToFile(text, 'cookies', format); -}); - -/** Set last used format value */ -const formatSelect = document.querySelector('#format'); - -const selectedFormat = localStorage.getItem('selectedFormat'); -if (selectedFormat) { - formatSelect.value = selectedFormat; -} - -formatSelect.addEventListener('change', () => { - localStorage.setItem('selectedFormat', formatSelect.value); -}); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/table-nowrap.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/table-nowrap.js deleted file mode 100644 index 75f230b..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/cclelndahbckbenkjhflpdbgdldlbecc/0.7.2_0/table-nowrap.js +++ /dev/null @@ -1,14 +0,0 @@ -{ - const nowrapOption = document.querySelector('#nowrapOption'); - const tableElement = document.querySelector('#netscapeTable'); - - const selectedFormat = - (localStorage.getItem('tableNowrap') || 'true') === 'true'; - nowrapOption.checked = selectedFormat; - tableElement.classList.toggle('nowrap', selectedFormat); - - nowrapOption.addEventListener('change', (e) => { - tableElement.classList.toggle('nowrap'); - localStorage.setItem('tableNowrap', e.target.checked); - }); -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/_metadata/verified_contents.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/_metadata/verified_contents.json deleted file mode 100644 index 5baf0de..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/_metadata/verified_contents.json +++ /dev/null @@ -1 +0,0 @@ -[{"description":"treehash per file","signed_content":{"payload":"eyJjb250ZW50X2hhc2hlcyI6W3siYmxvY2tfc2l6ZSI6NDA5NiwiZGlnZXN0Ijoic2hhMjU2IiwiZmlsZXMiOlt7InBhdGgiOiJiYWNrZ3JvdW5kX3NjcmlwdHMvYWxsX2NvbW1hbmRzLmpzIiwicm9vdF9oYXNoIjoiNW55MUJGY0U4TnRLNHNHdGtTR2xvNTBaX2tWbDAyZzdHU29sZDJMZ2Z0NCJ9LHsicGF0aCI6ImJhY2tncm91bmRfc2NyaXB0cy9iZ191dGlscy5qcyIsInJvb3RfaGFzaCI6IlVmaDQzM1dYclhMcVRlS2k3YnVoSkliVTRzWWo1aG5LLTRLV3F5bkM5bTgifSx7InBhdGgiOiJiYWNrZ3JvdW5kX3NjcmlwdHMvY29tbWFuZHMuanMiLCJyb290X2hhc2giOiJFckM3WTdubm9wSENRdzI0QjQtaThmZ0xIUWFVWWJCeVZlSDJka3JJdHBFIn0seyJwYXRoIjoiYmFja2dyb3VuZF9zY3JpcHRzL2NvbXBsZXRpb24vY29tcGxldGVycy5qcyIsInJvb3RfaGFzaCI6InI5Y0tCN1ROMU5CcjhaVE55Mmsyb1k5SWRmR09uRTlIOG1iZWhYMWhvcFEifSx7InBhdGgiOiJiYWNrZ3JvdW5kX3NjcmlwdHMvY29tcGxldGlvbi9yYW5raW5nLmpzIiwicm9vdF9oYXNoIjoiVEVXMmVnWVVGWk9aTmVmYy1OQ3JEWml2ZUF5ZDBDcnRvUXZ2UmxHdFN1NCJ9LHsicGF0aCI6ImJhY2tncm91bmRfc2NyaXB0cy9jb21wbGV0aW9uL3NlYXJjaF9lbmdpbmVzLmpzIiwicm9vdF9oYXNoIjoiWEhBU0l2TjhWY3pRQnFtMjY3dVR0ejdCbWp3MVZ0d0RoVmJUX3BVWE1PQSJ9LHsicGF0aCI6ImJhY2tncm91bmRfc2NyaXB0cy9jb21wbGV0aW9uL3NlYXJjaF93cmFwcGVyLmpzIiwicm9vdF9oYXNoIjoiR21sVEExNW40UHNUMjU2UHQ1VU5lNENzQ3ZVQjhTVjR6ZkJnUDhORHJkQSJ9LHsicGF0aCI6ImJhY2tncm91bmRfc2NyaXB0cy9leGNsdXNpb25zLmpzIiwicm9vdF9oYXNoIjoiRkVOeUI2ZnVXYVJfOFluS1NVak9FaWtQQ09QTEE1dEN2SUEwZHA2ME5ZayJ9LHsicGF0aCI6ImJhY2tncm91bmRfc2NyaXB0cy9tYWluLmpzIiwicm9vdF9oYXNoIjoia2MxczN0TURRaG1SOExIeFB0dzFvVWNKWXlJNHBxZFB6RDFLQ0xTZ283cyJ9LHsicGF0aCI6ImJhY2tncm91bmRfc2NyaXB0cy9tYXJrcy5qcyIsInJvb3RfaGFzaCI6Imt6eXEtcGRsWklsVmVLaUtYejY2RUZtZXA1UW4yTUM3XzJvUmpvMlRpUWcifSx7InBhdGgiOiJiYWNrZ3JvdW5kX3NjcmlwdHMvdGFiX29wZXJhdGlvbnMuanMiLCJyb290X2hhc2giOiJYa0ZPQmE4V1RXNUZwYW5EaWFQT1M0WkZWb0o1LVppT002WkJwclZCQ0hJIn0seyJwYXRoIjoiYmFja2dyb3VuZF9zY3JpcHRzL3RhYl9yZWNlbmN5LmpzIiwicm9vdF9oYXNoIjoiMVNqNF9jWGY0NDdfV3g0dnl0Tng1aEVYTXFRb202bjFMNUlMN0NVanlOMCJ9LHsicGF0aCI6ImJhY2tncm91bmRfc2NyaXB0cy91c2VyX3NlYXJjaF9lbmdpbmVzLmpzIiwicm9vdF9oYXNoIjoibkhWcXpEbUJyTEFTSGpqLTVRdUtCdHlpN3pOU1V3eEF0enJmdDBteTBTRSJ9LHsicGF0aCI6ImNvbnRlbnRfc2NyaXB0cy9maWxlX3VybHMuY3NzIiwicm9vdF9oYXNoIjoiZUt2THFGbDRkOXU1MzZNVFZiY29UTTlMWDFDQkVQbm90Y1F4LTYtelZLVSJ9LHsicGF0aCI6ImNvbnRlbnRfc2NyaXB0cy9odWQuanMiLCJyb290X2hhc2giOiJaS0ZWRzZJMmNLRWg5NjgxcFVGM3ZBUU9CRjRIcEtheXpjbklNUHR3Q0c4In0seyJwYXRoIjoiY29udGVudF9zY3JpcHRzL2xpbmtfaGludHMuanMiLCJyb290X2hhc2giOiJJNHJHemJaWEVGbUc2c2dFOEFmZlFiWmNFRFM3OU11OGVJOHgxc1NXZkFnIn0seyJwYXRoIjoiY29udGVudF9zY3JpcHRzL21hcmtzLmpzIiwicm9vdF9oYXNoIjoiMlhFekpFeEkxcHE3a3IyNWJORWpna1FFSDZnM25GOFdERmJQTGp5SWdfbyJ9LHsicGF0aCI6ImNvbnRlbnRfc2NyaXB0cy9tb2RlLmpzIiwicm9vdF9oYXNoIjoiTFZUM1F0enZrUWlydXViVHRTVkdRZlQ1QnRDX0o2akFlSTg1eTRNMGdpSSJ9LHsicGF0aCI6ImNvbnRlbnRfc2NyaXB0cy9tb2RlX2ZpbmQuanMiLCJyb290X2hhc2giOiJ2XzEtcW1KWjhyNlBWR2lKbG9ZbVpwSVBVLWVWd0N2bG5kaHhrbzB4X2tzIn0seyJwYXRoIjoiY29udGVudF9zY3JpcHRzL21vZGVfaW5zZXJ0LmpzIiwicm9vdF9oYXNoIjoiUWU4dHRqWkZ4bTFfV0phekM1UUNBaEFCNFZyLXRLeWpUX0hHV1NUcmRpMCJ9LHsicGF0aCI6ImNvbnRlbnRfc2NyaXB0cy9tb2RlX2tleV9oYW5kbGVyLmpzIiwicm9vdF9oYXNoIjoiSE9TMXBwakJYSGtrc3pubkJxLWVmLV9ONTZLUW9HZGRBLVJmenotclpPNCJ9LHsicGF0aCI6ImNvbnRlbnRfc2NyaXB0cy9tb2RlX25vcm1hbC5qcyIsInJvb3RfaGFzaCI6IlFkLUhHOWpuZWEzTVNYaVJKVThWSUZwWFozV2JvTW5OUUNkYXJhUWNyVzAifSx7InBhdGgiOiJjb250ZW50X3NjcmlwdHMvbW9kZV92aXN1YWwuanMiLCJyb290X2hhc2giOiJlTzZpWTdiTDNGeEJlc3hOQjhFRjZNSV9nb0JuUHJmSTRIRERYLS1HUzFNIn0seyJwYXRoIjoiY29udGVudF9zY3JpcHRzL3Njcm9sbGVyLmpzIiwicm9vdF9oYXNoIjoiMlo1aXJRQVZoUGNrMjVxZzVZNk8wNU4zVGtFLUd3ZS1uYjlLX0RDLTR2TSJ9LHsicGF0aCI6ImNvbnRlbnRfc2NyaXB0cy91aV9jb21wb25lbnQuanMiLCJyb290X2hhc2giOiJOZTh4ZkVTVUdnR3hIYnE3UGpBbk1WWTBOWlVJbDB0a2dObUhsM29hSHF3In0seyJwYXRoIjoiY29udGVudF9zY3JpcHRzL3ZpbWl1bS5jc3MiLCJyb290X2hhc2giOiI5OVlZakhDclZYZl9hQnZiRFBQazdlT0FENThEbThqc0Z0MmtTVUg3VG5nIn0seyJwYXRoIjoiY29udGVudF9zY3JpcHRzL3ZpbWl1bV9mcm9udGVuZC5qcyIsInJvb3RfaGFzaCI6IjR0WGJwWC1DWnQwQ1FxeTYzUDM1ZVhMVkh6akx4M00tSVBSbVBEd0tpUlUifSx7InBhdGgiOiJjb250ZW50X3NjcmlwdHMvdm9tbmliYXIuanMiLCJyb290X2hhc2giOiJMZXB1ZHZHM1E4VEY5dGZvVlVlMC1HRER0VV9XQ2FpT1FJZENkekJqaG1jIn0seyJwYXRoIjoiaWNvbnMvYWN0aW9uX2Rpc2FibGVkLnN2ZyIsInJvb3RfaGFzaCI6ImFkSF9uX1FhR2VnM1BhbEswX0NDSEdSRWJxZ0J6dXI3eWwybnZEa1NVdkEifSx7InBhdGgiOiJpY29ucy9hY3Rpb25fZGlzYWJsZWRfMTYucG5nIiwicm9vdF9oYXNoIjoiTkJwSjA4NWRmR2NLbGMtX1RfWXN6b3RVd25QNHBSdDZOa2tWZzNFQ2JHayJ9LHsicGF0aCI6Imljb25zL2FjdGlvbl9kaXNhYmxlZF8zMi5wbmciLCJyb290X2hhc2giOiJnMU1PdWF6T25ueGFvZEpOZDRKTjBJcGRYeTN6MG1MTGMwTldEVDYtS0RjIn0seyJwYXRoIjoiaWNvbnMvYWN0aW9uX2VuYWJsZWQuc3ZnIiwicm9vdF9oYXNoIjoid1JTdGFoaF9WNFprZFBxWmNVSlhxMzFxbmxOZDhySUZ2V0pJSjR6OE5XbyJ9LHsicGF0aCI6Imljb25zL2FjdGlvbl9lbmFibGVkXzE2LnBuZyIsInJvb3RfaGFzaCI6Ikp0ME9VVGJYOWhMSG16X191b1Z2SjRjNVN1bEJQOTNYV1J2VGI5LXotSFEifSx7InBhdGgiOiJpY29ucy9hY3Rpb25fZW5hYmxlZF8zMi5wbmciLCJyb290X2hhc2giOiIzTTRDZHRwLWpsSDdhWkVNVjc3dTFWelR6RkpOb1g0Z0JKTGJSSXdLQUVNIn0seyJwYXRoIjoiaWNvbnMvYWN0aW9uX3BhcnRpYWwuc3ZnIiwicm9vdF9oYXNoIjoiel9MdzZUNGpERl9fYVRPcVFoY1p0cG1jSy1rOFdqcmpyaXNiNUJUTHpCRSJ9LHsicGF0aCI6Imljb25zL2FjdGlvbl9wYXJ0aWFsXzE2LnBuZyIsInJvb3RfaGFzaCI6IjJyQk5mYVpIU3lPSEJEMDhFS0RidHFQRDZBN3dBQ3ZPcTBMN19MN2VqLXMifSx7InBhdGgiOiJpY29ucy9hY3Rpb25fcGFydGlhbF8zMi5wbmciLCJyb290X2hhc2giOiJyYlRXcFhwSkx1YTR5Y0FtTVM2NkhsYW1xZ001YlVXazB0bm9hTWJTVFhnIn0seyJwYXRoIjoiaWNvbnMvaWNvbi5zdmciLCJyb290X2hhc2giOiJrS1VKeGthMkUyUzVPa2VVa0VfaVRCZUdSSU05b3djdXlQdjl3RW9SektrIn0seyJwYXRoIjoiaWNvbnMvaWNvbjEyOC5wbmciLCJyb290X2hhc2giOiJRRDlJTDBtVU44amZwejdyMVBrY3FwQ0I0ajQ5RjVJUUVxU3k4RHQ0WEFnIn0seyJwYXRoIjoiaWNvbnMvaWNvbjE2LnBuZyIsInJvb3RfaGFzaCI6InhSMmM0bVJ5M29ncU1TZllhbUQ1ZzZwMGVRX2NhODFMVE94YnZVN2diWW8ifSx7InBhdGgiOiJpY29ucy9pY29uNDgucG5nIiwicm9vdF9oYXNoIjoibFBzMEhhVFNuLWlmWFhSeUR0WjViYTRzV19lampEMkRZcm0yaGJ2QmZtRSJ9LHsicGF0aCI6ImxpYi9jaHJvbWVfYXBpX3N0dWJzLmpzIiwicm9vdF9oYXNoIjoiUENKWFFGZFFZb25KdXJlOXhmQkl2NXZCOG0zMkUydHZGZmJxM1U3VEp5dyJ9LHsicGF0aCI6ImxpYi9kb21fdXRpbHMuanMiLCJyb290X2hhc2giOiJmOFlZRFA1TWV5c1ZLYVdheTRLbFo2MWM4RzBjVjdpdDUxN1BEcTkzSmEwIn0seyJwYXRoIjoibGliL2ZpbmRfbW9kZV9oaXN0b3J5LmpzIiwicm9vdF9oYXNoIjoiTnZ2eGV3ZDNobS1tUlJGSUtmcFJXV1c1VHdrcWRHc3ZiYmZBOG9uVjRzbyJ9LHsicGF0aCI6ImxpYi9oYW5kbGVyX3N0YWNrLmpzIiwicm9vdF9oYXNoIjoiU091VmNyNHBmLUtkcnZ0SjZoVF8yY2Z2XzJwNmp6VUVTUmlwMzZYZzRsOCJ9LHsicGF0aCI6ImxpYi9rZXlib2FyZF91dGlscy5qcyIsInJvb3RfaGFzaCI6InMxcGEwc1UyNjcya2s2dlJWSjF4eXJEUlBobm1UMlg0XzdqU3BxX1plcmMifSx7InBhdGgiOiJsaWIvcmVjdC5qcyIsInJvb3RfaGFzaCI6InZOSVZaREJRWm9VZ0ZRVS1Lb2hJZFduU0ZPem4xUGs2clFzejMwc0xESmcifSx7InBhdGgiOiJsaWIvc2V0dGluZ3MuanMiLCJyb290X2hhc2giOiJ3VkE4ajRocjlNTkZTalNKODdCcHY4dE5oNC1vSFJROGJYTWJrczBRNmRnIn0seyJwYXRoIjoibGliL3R5cGVzLmpzIiwicm9vdF9oYXNoIjoiY0h5ODYzS19tZ0U5ZGl1ajk4d1djTzNlczNrYUpFMTBUUnJlR3cya0ItbyJ9LHsicGF0aCI6ImxpYi91cmxfdXRpbHMuanMiLCJyb290X2hhc2giOiJqU21LTDJ5NG1lTUF2TG5NYmxobkRTb2U0ekxxa0luSEdEWm5RMEVyQXdJIn0seyJwYXRoIjoibGliL3V0aWxzLmpzIiwicm9vdF9oYXNoIjoiTXNvXzVxalNpVzQwYXRtSW4yQjlTRkpYZVdLQUM2eldjVWMxOU15LUZtQSJ9LHsicGF0aCI6Im1hbmlmZXN0Lmpzb24iLCJyb290X2hhc2giOiJLbWRsZVBkNU1tZGJXblZwc3BVOGdZbU1sNXA0Y0p0eTJIV25UNGxMWjV3In0seyJwYXRoIjoicGFnZXMvYWN0aW9uLmNzcyIsInJvb3RfaGFzaCI6IjdRZWJJZlVIS2xnRGdyUXBGRFg3RlExM19seWlGTTVNRnZBUFZTSzRtTncifSx7InBhdGgiOiJwYWdlcy9hY3Rpb24uaHRtbCIsInJvb3RfaGFzaCI6InJ1SXNLZDZZOTFhdzFfWnNMXzNZZk1oTGhwNnZXbXh1VkVVOWRvVEVWMWsifSx7InBhdGgiOiJwYWdlcy9hY3Rpb24uanMiLCJyb290X2hhc2giOiJjY0RMYy1GRlVRYjI1aXZJcVEyT2hSZjlnNmpOMk94akVVUVlUVVNtTEM0In0seyJwYXRoIjoicGFnZXMvYWxsX2NvbnRlbnRfc2NyaXB0cy5qcyIsInJvb3RfaGFzaCI6InJuTDVRSkdRY3gzZEM0QzN1RlZxSFVqVTVnUTZUTjhQX2NXdUxzZ2xaTlUifSx7InBhdGgiOiJwYWdlcy9jb21tYW5kX2xpc3RpbmcuY3NzIiwicm9vdF9oYXNoIjoiTFl0QkdwQTVsdEktblNEdENxeWJkWVlaM2lhVDh2S3ZQYy1iUl9OS1pWVSJ9LHsicGF0aCI6InBhZ2VzL2NvbW1hbmRfbGlzdGluZy5odG1sIiwicm9vdF9oYXNoIjoiaDVna3ROUExodDRKUGxCcFliMG5HUF9TWEkwNERjLVpFVkE2aS1wM3dTOCJ9LHsicGF0aCI6InBhZ2VzL2NvbW1hbmRfbGlzdGluZy5qcyIsInJvb3RfaGFzaCI6Inp2RlJ4UVQ0UzFUa3hqTk9ZaWQxWVA1dllCSzNPUS03MHV4S0RNNkVpaUkifSx7InBhdGgiOiJwYWdlcy9kb2MuY3NzIiwicm9vdF9oYXNoIjoidVFWR2JmZWZ3LTZwVVlkUE5jWWczSzlVVzVEMUFXUkp6WkhSam1EMDFvcyJ9LHsicGF0aCI6InBhZ2VzL2RvY19zZWFyY2hfY29tcGxldGlvbi5odG1sIiwicm9vdF9oYXNoIjoiZkZtLWhZZEt5cmxCU3ZaNDYxYkVEakkwVEdpR0JqOElLUGg5dEoxVUhiRSJ9LHsicGF0aCI6InBhZ2VzL2RvY19zZWFyY2hfY29tcGxldGlvbi5qcyIsInJvb3RfaGFzaCI6IkwyelJpUGZDX0ZMb2RWSnZQSnRFcUI5THZCaVdKcG1ieS1jZXRHbHFBVnMifSx7InBhdGgiOiJwYWdlcy9leGNsdXNpb25fcnVsZXNfZWRpdG9yLmpzIiwicm9vdF9oYXNoIjoiWmdhTGVreElIWVF4LUc1bmpmSDNZVTB6eUZrZ0k0QU1QYkFMaTRvRmgyVSJ9LHsicGF0aCI6InBhZ2VzL2hlbHBfZGlhbG9nX3BhZ2UuY3NzIiwicm9vdF9oYXNoIjoiTEJQV21BU09lMm81RVEtVVNBZFowX0xqX2I4NmlrN0tGeTdHYmRGaU9kYyJ9LHsicGF0aCI6InBhZ2VzL2hlbHBfZGlhbG9nX3BhZ2UuaHRtbCIsInJvb3RfaGFzaCI6ImFZdzVrdjdtdTFUbEFhOS1OTmpMSmpQV3l1VTctemljTVdRRGZWaEVTNHMifSx7InBhdGgiOiJwYWdlcy9oZWxwX2RpYWxvZ19wYWdlLmpzIiwicm9vdF9oYXNoIjoiZzI3dnFnMVAzcXcyT2JZMXN5TUVvcUVKX2cwX3JDTjZVazA5MTlHOHpPZyJ9LHsicGF0aCI6InBhZ2VzL2h1ZF9wYWdlLmNzcyIsInJvb3RfaGFzaCI6InFXZnhGZ29fQTZFS2p1SkhNYWh1QzhLUmxaQ2pDYWdZOXVxaks2ZHFNNWcifSx7InBhdGgiOiJwYWdlcy9odWRfcGFnZS5odG1sIiwicm9vdF9oYXNoIjoiNkhkdXZKWnVOT0JqQmJISHdEazVpdlc4dmRnV2wyUXB1UHY5YXlxWDdudyJ9LHsicGF0aCI6InBhZ2VzL2h1ZF9wYWdlLmpzIiwicm9vdF9oYXNoIjoiZGE0Z0RLbHV3Y0RGUU9nZmxzdHFsVzY3MWV4UXc1b25BOTdnOE5GTVM0YyJ9LHsicGF0aCI6InBhZ2VzL2tleV9tYXBwaW5ncy5jc3MiLCJyb290X2hhc2giOiJZZWUyRzBETXRSRTdDZjFMeGFzd3VabDRpenBkc0doTXV4YVpkcTBBRDhJIn0seyJwYXRoIjoicGFnZXMvb3B0aW9ucy5jc3MiLCJyb290X2hhc2giOiJwd1lERGlNWFkxNERWcmJlODFoMWM5OGZjLXlTNklfUWg2dkpOT0t0MVg0In0seyJwYXRoIjoicGFnZXMvb3B0aW9ucy5odG1sIiwicm9vdF9oYXNoIjoibFpGcVg1TFBtSlFSTFh5Z0ZVN2ZvN0xjSGgyUUNDMVFFY0RhcTQ5Nnh0TSJ9LHsicGF0aCI6InBhZ2VzL29wdGlvbnMuanMiLCJyb290X2hhc2giOiJ0U2hBTTZ3VVR3S1E0a1ZaUm9kbEJXVVptUjZIZlVIbE5vWlNENHZMSG9ZIn0seyJwYXRoIjoicGFnZXMvdWlfY29tcG9uZW50X21lc3Nlbmdlci5qcyIsInJvb3RfaGFzaCI6InZlTUpoTTdHaXp0aWNVYmRuR1AwZ0FBTlhwUmxsUFk3bDJDR3JXMzNoZG8ifSx7InBhdGgiOiJwYWdlcy92b21uaWJhcl9wYWdlLmNzcyIsInJvb3RfaGFzaCI6IkJiOXNCUU5MSU5QX28zVzBocTB0ZER5aGpNYlRBZDFtOTd4U2FFQXl5LVkifSx7InBhdGgiOiJwYWdlcy92b21uaWJhcl9wYWdlLmh0bWwiLCJyb290X2hhc2giOiIzN0FwcGhSem9MSnRWY2Y2cEhKM0RlZDM3b3NDVjdaZ3hsOWR4RTA5eWpJIn0seyJwYXRoIjoicGFnZXMvdm9tbmliYXJfcGFnZS5qcyIsInJvb3RfaGFzaCI6ImNvLS1TbTNjeFpTRmRCcW9KMkk0UnZSbThna0loVkpuTktsSkNqV0IwMWMifSx7InBhdGgiOiJyZXNvdXJjZXMvdGxkcy50eHQiLCJyb290X2hhc2giOiJXVGduR254YkNWSVZqWDl2clZfdWVTcnRENGRfSnphSjNtX01jTXl5b3RrIn1dLCJmb3JtYXQiOiJ0cmVlaGFzaCIsImhhc2hfYmxvY2tfc2l6ZSI6NDA5Nn1dLCJpdGVtX2lkIjoiZGJlcGdnZW9nYmFpYmhnbmhobmRvanBlcGlpaGNtZWIiLCJpdGVtX3ZlcnNpb24iOiIyLjQuMiIsInByb3RvY29sX3ZlcnNpb24iOjF9","signatures":[{"header":{"kid":"publisher"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"glHk3BZw82-Rv74V_RXTQgxEE0i85quh6p3qt5pd4EQ9uJT3-ZURgZwehUpWFKEXBz85vx_HrkPvLIAVnHeX2ZH40aj8PM02EcTxme5_OBvlAG26H-BYjTJgyVeOl4WpHxNh0yiwymnws7eXRQMvcAJC_kT1Ukf7sNhUBf4aGc8"},{"header":{"kid":"webstore"},"protected":"eyJhbGciOiJSUzI1NiJ9","signature":"MD9S4x8g9sgGx9z_lcndiouWiSkTBkkpgUnNDgpwsGi-2PQCJhQvHywhkE7A9zI1b2DyMWwbgBXfB6oCY7-1OA8Ymnm8nbBRe8KEDN1165TtiLgeIBBaAIhksSKj9Pa95SIR1hR8FKYTaHRpFnJd5zyeaqY2om4MY9le0WfiKO404Fr7_odyItCFmrccHqRQ9c-z6539RKSIXSXazTfWmsT5D2nS7CobrT6qtLtimJZvLox15mtZEJsGgR6r9FVh_slNcNITdcC0dPXR0nU7b-I_-DH7HgJN0Zjd7Z5oW3oHkeS4Rbi7oGvyuEPHQ13xbn434CuSzwltoNqmuxylkg"}]}}] \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/all_commands.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/all_commands.js deleted file mode 100644 index 607fb73..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/all_commands.js +++ /dev/null @@ -1,619 +0,0 @@ -// This is the order they will be shown in the help dialog. -// -// Properties: -// - advanced: advanced commands are not shown in the help dialog by default. -// - background: whether this command has to be run by the background page. -// - desc: shown in the help dialog and command listing page. -// - details: extra help information that will only be shown on the command listing page. -// - group: commands are displayed in groups in the help dialog and command listing. -// - noRepeat: whether this command can be used with a count key prefix. -// - repeatLimit: the number of allowed repetitions of this command before the user is prompted for -// confirmation. -// - topFrame: whether this command must be run only in the top frame of a page. -// -const allCommands = [ - // - // Navigation - // - - { - name: "scrollDown", - desc: "Scroll down", - group: "navigation", - }, - - { - name: "scrollUp", - desc: "Scroll up", - group: "navigation", - }, - - { - name: "scrollToTop", - desc: "Scroll to the top of the page", - group: "navigation", - }, - - { - name: "scrollToBottom", - desc: "Scroll to the bottom of the page", - group: "navigation", - }, - - { - name: "scrollPageDown", - desc: "Scroll a half page down", - group: "navigation", - }, - - { - name: "scrollPageUp", - desc: "Scroll a half page up", - group: "navigation", - }, - - { - name: "scrollFullPageDown", - desc: "Scroll a full page down", - group: "navigation", - }, - - { - name: "scrollFullPageUp", - desc: "Scroll a full page up", - group: "navigation", - }, - - { - name: "scrollLeft", - desc: "Scroll left", - group: "navigation", - }, - - { - name: "scrollRight", - desc: "Scroll right", - group: "navigation", - advanced: true, - }, - - { - name: "scrollToLeft", - desc: "Scroll all the way to the left", - group: "navigation", - advanced: true, - }, - - { - name: "scrollToRight", - desc: "Scroll all the way to the right", - group: "navigation", - }, - - { - name: "reload", - desc: "Reload the page", - group: "navigation", - background: true, - options: { - hard: "Perform a hard reload, forcing the browser to bypass its cache.", - }, - }, - - { - name: "copyCurrentUrl", - desc: "Copy the current URL to the clipboard", - group: "navigation", - noRepeat: true, - }, - - { - name: "openCopiedUrlInCurrentTab", - desc: "Open the clipboard's URL in the current tab", - group: "navigation", - noRepeat: true, - }, - - { - name: "openCopiedUrlInNewTab", - desc: "Open the clipboard's URL in a new tab", - group: "navigation", - noRepeat: true, - options: { - position: "Where to place the tab in the tab bar. " + - "One of `start`, `before`, `after`, `end`. `after` is the default.", - }, - }, - - { - name: "goUp", - desc: "Go up the URL hierarchy", - group: "navigation", - advanced: true, - }, - - { - name: "goToRoot", - desc: "Go to the root of current URL hierarchy", - group: "navigation", - advanced: true, - }, - - { - name: "enterInsertMode", - desc: "Enter insert mode", - group: "navigation", - noRepeat: true, - }, - - { - name: "enterVisualMode", - desc: "Enter visual mode", - group: "navigation", - noRepeat: true, - }, - - { - name: "enterVisualLineMode", - desc: "Enter visual line mode", - group: "navigation", - advanced: true, - noRepeat: true, - }, - - { - name: "passNextKey", - desc: "Pass the next key to the page", - options: { - normal: "Optional. Enter Vimium's normal mode, and ignore any defined pass keys.", - }, - group: "navigation", - advanced: true, - }, - - { - name: "focusInput", - desc: "Focus the first text input on the page", - group: "navigation", - }, - - { - name: "LinkHints.activateMode", - desc: "Open a link in the current tab", - options: { - action: "one of `hover`, `focus`, `copy-text`. When a link is selected, " + - "instead of clicking on the link, perform the specified action.", - }, - group: "navigation", - advanced: true, - }, - - { - name: "LinkHints.activateModeToOpenInNewTab", - desc: "Open a link in a new tab", - group: "navigation", - }, - - { - name: "LinkHints.activateModeToOpenInNewForegroundTab", - desc: "Open a link in a new tab & switch to it", - group: "navigation", - }, - - { - name: "LinkHints.activateModeWithQueue", - desc: "Open multiple links in a new tab", - group: "navigation", - advanced: true, - noRepeat: true, - }, - - { - name: "LinkHints.activateModeToDownloadLink", - desc: "Download link url", - group: "navigation", - advanced: true, - }, - - { - name: "LinkHints.activateModeToOpenIncognito", - desc: "Open a link in incognito window", - group: "navigation", - advanced: true, - }, - - { - name: "LinkHints.activateModeToCopyLinkUrl", - desc: "Copy a link URL to the clipboard", - group: "navigation", - advanced: true, - }, - - { - name: "goPrevious", - desc: "Follow the link labeled previous or <", - group: "navigation", - advanced: true, - noRepeat: true, - }, - - { - name: "goNext", - desc: "Follow the link labeled next or >", - group: "navigation", - advanced: true, - noRepeat: true, - }, - - { - name: "nextFrame", - desc: "Select the next frame on the page", - group: "navigation", - background: true, - }, - - { - name: "mainFrame", - desc: "Select the page's main/top frame", - group: "navigation", - topFrame: true, - noRepeat: true, - }, - - { - name: "Marks.activateCreateMode", - desc: "Create a new mark", - details: "Do this by typing the key bound to this command, and then a letter. " + - "This will set a mark bound to that letter. Lowercase letters are local marks and uppercase " + - "letters are global marks.", - options: { - swap: "Swap global and local marks. This option exists because in a browser, global marks " + - "are generally more useful than local marks, and so it may be desirable to make lowercase " + - "letters represent global marks rather than local marks.", - }, - group: "navigation", - advanced: true, - noRepeat: true, - }, - - { - name: "Marks.activateGotoMode", - desc: "Jump to a mark", - options: { - swap: "Swap global and local marks. This option exists because in a browser, global marks " + - "are generally more useful than local marks, and so it may be desirable to make lowercase " + - "letters represent global marks rather than local marks.", - }, - group: "navigation", - advanced: true, - noRepeat: true, - }, - - // - // Vomnibar - // - - { - name: "Vomnibar.activate", - desc: "Open URL, bookmark or history entry", - options: { - query: "The text to prefill the Vomnibar with.", - keyword: 'The keyword of a search engine defined in the "Custom search engines" ' + - "section of the Vimium Options page. The Vomnibar will be scoped to use that search engine.", - }, - group: "vomnibar", - topFrame: true, - }, - - { - name: "Vomnibar.activateInNewTab", - desc: "Open URL, bookmark or history entry in a new tab", - group: "vomnibar", - options: { - query: "The text to prefill the Vomnibar with.", - keyword: 'The keyword of a search engine defined in the "Custom search engines" ' + - "section of the Vimium Options page. The Vomnibar will be scoped to use that search engine.", - }, - topFrame: true, - }, - - { - name: "Vomnibar.activateBookmarks", - desc: "Open a bookmark", - group: "vomnibar", - options: { - query: "The text to prefill the Vomnibar with.", - }, - topFrame: true, - }, - - { - name: "Vomnibar.activateBookmarksInNewTab", - desc: "Open a bookmark in a new tab", - group: "vomnibar", - options: { - query: "The text to prefill the Vomnibar with.", - }, - topFrame: true, - }, - - { - name: "Vomnibar.activateTabSelection", - desc: "Search through your open tabs", - group: "vomnibar", - topFrame: true, - }, - - { - name: "Vomnibar.activateEditUrl", - desc: "Edit the current URL", - group: "vomnibar", - topFrame: true, - }, - - { - name: "Vomnibar.activateEditUrlInNewTab", - desc: "Edit the current URL and open in a new tab", - group: "vomnibar", - topFrame: true, - }, - - // - // Find - // - - { - name: "enterFindMode", - desc: "Enter find mode.", - group: "find", - noRepeat: true, - }, - - { - name: "performFind", - desc: "Cycle forward to the next find match", - group: "find", - }, - - { - name: "performBackwardsFind", - desc: "Cycle backward to the previous find match", - group: "find", - }, - - { - name: "findSelected", - desc: "Find the selected text", - group: "find", - advanced: true, - }, - - { - name: "findSelectedBackwards", - desc: "Find the selected text, searching backwards", - group: "find", - advanced: true, - }, - - // - // History - // - - { - name: "goBack", - desc: "Go back in history", - group: "history", - }, - - { - name: "goForward", - desc: "Go forward in history", - group: "history", - }, - - // - // Tabs - // - - { - name: "createTab", - desc: "Create new tab", - options: { - "(any url)": "Open this URL, rather than the browser's new tab page. " + - "E.g.: `map X createTab https://example.com`", - window: "Create the tab in a new window", - incognito: "Create the tab in an incognito window", - position: "Where to place the tab in the tab bar. " + - "One of `start`, `before`, `after`, `end`. `after` is the default.", - }, - group: "tabs", - background: true, - repeatLimit: 20, - }, - - { - name: "previousTab", - desc: "Go one tab left", - group: "tabs", - background: true, - }, - - { - name: "nextTab", - desc: "Go one tab right", - group: "tabs", - background: true, - }, - - { - name: "visitPreviousTab", - desc: "Go to previously-visited tab", - group: "tabs", - background: true, - }, - - { - name: "firstTab", - desc: "Go to the first tab", - group: "tabs", - background: true, - }, - - { - name: "lastTab", - desc: "Go to the last tab", - group: "tabs", - background: true, - }, - - { - name: "duplicateTab", - desc: "Duplicate current tab", - group: "tabs", - background: true, - repeatLimit: 20, - }, - - { - name: "togglePinTab", - desc: "Pin or unpin current tab", - group: "tabs", - background: true, - }, - - { - name: "toggleMuteTab", - desc: "Mute or unmute current tab", - options: { - all: "Mute all tabs.", - other: "Mute every tab except the current one.", - }, - group: "tabs", - background: true, - noRepeat: true, - }, - - { - name: "removeTab", - desc: "Close current tab", - group: "tabs", - background: true, - // Don't close (in one command invocation) more than the number of tabs that can be re-opened by - // the browser. - repeatLimit: chrome.sessions?.MAX_SESSION_RESULTS || 25, - }, - - { - name: "restoreTab", - desc: "Restore closed tab", - group: "tabs", - background: true, - repeatLimit: 20, - }, - - { - name: "moveTabToNewWindow", - desc: "Move tab to new window", - group: "tabs", - advanced: true, - background: true, - }, - - { - name: "closeTabsOnLeft", - desc: "Close tabs on the left", - group: "tabs", - advanced: true, - background: true, - }, - - { - name: "closeTabsOnRight", - desc: "Close tabs on the right", - group: "tabs", - advanced: true, - background: true, - }, - - { - name: "closeOtherTabs", - desc: "Close all other tabs", - group: "tabs", - advanced: true, - background: true, - noRepeat: true, - }, - - { - name: "moveTabLeft", - desc: "Move tab to the left", - group: "tabs", - advanced: true, - background: true, - }, - - { - name: "moveTabRight", - desc: "Move tab to the right", - group: "tabs", - advanced: true, - background: true, - }, - - { - name: "setZoom", - desc: "Set zoom", - group: "tabs", - advanced: true, - background: true, - options: { - level: "The zoom level. This can be a range of [0.25, 5.0]. 1.0 is the default.", - }, - }, - - { - name: "zoomIn", - desc: "Zoom in", - group: "tabs", - advanced: true, - background: true, - }, - - { - name: "zoomOut", - desc: "Zoom out", - group: "tabs", - advanced: true, - background: true, - }, - - { - name: "zoomReset", - desc: "Reset zoom", - group: "tabs", - advanced: true, - background: true, - }, - - // - // Misc - // - - { - name: "toggleViewSource", - desc: "View page source", - group: "misc", - advanced: true, - noRepeat: true, - }, - - { - name: "showHelp", - desc: "Show help", - group: "misc", - noRepeat: true, - topFrame: true, - }, -]; - -export { allCommands }; diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/bg_utils.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/bg_utils.js deleted file mode 100644 index 37b58aa..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/bg_utils.js +++ /dev/null @@ -1,19 +0,0 @@ -import { TabRecency } from "./tab_recency.js"; - -// We're using browser.runtime to determine the browser name and version for Firefox. That API is -// only available on the background page. We're not using window.navigator because it's unreliable. -// Sometimes browser vendors will provide fake values, like when `privacy.resistFingerprinting` is -// enabled on `about:config` of Firefox. -export function isFirefox() { - // We want this browser check to also cover Firefox variants, like LibreWolf. See #3773. - // We could also just check browserInfo.name against Firefox and Librewolf. - return globalThis.browser?.runtime.getURL("").startsWith("moz") ?? false; -} - -export async function getFirefoxVersion() { - return isFirefox() ? (await browser.runtime.getBrowserInfo()).version : null; -} - -// TODO(philc): tabRecency imports bg_utils. We should resovle the cycle for the sake of clarity. -export const tabRecency = new TabRecency(); -tabRecency.init(); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/commands.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/commands.js deleted file mode 100644 index faaf584..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/commands.js +++ /dev/null @@ -1,501 +0,0 @@ -import { allCommands } from "./all_commands.js"; - -// A specification for a command that's currently bound to a key sequence, as defined by the default -// key bindings, or as it appears in the user's keymapping settings. -export class RegistryEntry { - // Array of keys. - keySequence; - // Name of the command. - command; - // Whether this command can be used with a count key prefix. - noRepeat; - // The number of allowed repetitions of this command before the user is prompted for confirmation. - repeatLimit; - // Whether this command has to be run by the background page. - background; - // Whether this command must be run only in the top frame of a page. - topFrame; - // The map of options for this command. This is a parsed, sanitized version of the user's options - // for this command. - options; - - constructor(o) { - Object.seal(this); - if (o) Object.assign(this, o); - } -} - -// This is intentionally a superset of valid modifiers (a, c, m, s). -const modifier = "(?:[a-zA-Z]-)"; -const namedKey = "(?:[a-z][a-z0-9]+)"; // E.g. "left" or "f12" (always two characters or more). -const modifiedKey = `(?:${modifier}+(?:.|${namedKey}))`; // E.g. "c-*" or "c-left". -const specialKeyRegexp = new RegExp(`^<(${namedKey}|${modifiedKey})>(.*)`, "i"); - -// Remove comments and leading/trailing whitespace from a list of lines, and merge lines where the -// last character on the preceding line is "\". -function parseLines(text) { - return text.replace(/\\\n/g, "") - .split("\n") - .map((line) => line.trim()) - .filter((line) => (line.length > 0) && !(Array.from('#"').includes(line[0]))); -} - -// Returns the index of the nth occurrence of the regexp in the string. -1 if not found. -function nthRegexIndex(str, regex, n) { - if (!regex.global) { - regex = new RegExp(regex.source, regex.flags + "g"); - } - let match; - let count = 0; - while ((match = regex.exec(str)) !== null) { - count++; - if (count === n) { - return match.index; - } - // Prevent infinite loop for zero-length matches. - if (match.index === regex.lastIndex) { - regex.lastIndex++; - } - } - return -1; -} - -const KeyMappingsParser = { - // Parses the text supplied by the user in their "keyMappings" setting. - // - shouldLogWarnings: if true, logs to the console when part of the user's config is invalid. - // Returns { keyToRegistryEntry, keyToMappedKey, validationErrors }. - parse(configText, shouldLogWarnings) { - let keyToRegistryEntry = {}; - let mapKeyRegistry = {}; - let errors = []; - const configLines = parseLines(configText); - const commandsByName = Utils.keyBy(allCommands, "name"); - - const validModifiers = ["a", "c", "m", "s"]; - const validateParsedKey = function (key) { - if (!key?.match(modifiedKey)) return; - // Check that the modifier is valid and not capitalized. - const mod = key.split("-")[0].slice(1); - if (!validModifiers.includes(mod)) { - return `${key} has an invalid modifier; valid modifiers are ${validModifiers}`; - } - }; - const validateUrl = function (str) { - try { - new URL(str); - return true; - } catch { - return false; - } - }; - - for (const line of configLines) { - const tokens = line.split(/\s+/); - const action = tokens[0].toLowerCase(); - switch (action) { - case "map": { - if (tokens.length < 3) { - errors.push(`"map requires at least 2 arguments on line ${line}`); - continue; - } - const [_, key, command] = tokens; - let optionString; - const optionsStart = nthRegexIndex(line, /\s+/, 3); - if (optionsStart == -1) { - optionString = ""; - } else { - optionString = line.slice(optionsStart).trim(); - } - const commandInfo = commandsByName[command]; - if (!commandInfo) { - errors.push(`"${command}" is not a valid command in the line: ${line}`); - continue; - } - const keySequence = this.parseKeySequence(key); - const keyErrors = keySequence.map((k) => validateParsedKey(k)).filter((e) => e); - if (keyErrors.length > 0) { - errors = errors.concat(keyErrors); - continue; - } - const options = this.parseCommandOptions(optionString); - const allowedOptions = Object.keys(commandInfo.options || {}); - if (!commandInfo.noRepeat) { - allowedOptions.push("count"); - } - let hasUnknownOption = false; - for (const option of Object.keys(options)) { - if (allowedOptions.includes(option)) continue; - if (allowedOptions.includes("(any url)")) { - // Since this command allows for any URL as an argument, we perform some basic - // validation to ensure the provided option string is indeed a URL. - if (validateUrl(option)) continue; - hasUnknownOption = true; - errors.push( - `Command ${command} does not support option ${option}. ` + - `Is this meant to be a valid URL?`, - ); - break; - } else { - hasUnknownOption = true; - errors.push(`Command ${command} does not support option ${option}`); - break; - } - } - if (hasUnknownOption) break; - keyToRegistryEntry[key] = new RegistryEntry({ - keySequence, - command, - noRepeat: commandInfo.noRepeat, - repeatLimit: commandInfo.repeatLimit, - background: commandInfo.background, - topFrame: commandInfo.topFrame, - options, - }); - break; - } - case "unmap": { - if (tokens.length != 2) { - errors.push(`Incorrect usage for unmap in the line: ${line}`); - continue; - } - const key = tokens[1]; - delete keyToRegistryEntry[key]; - delete mapKeyRegistry[key]; - break; - } - case "unmapall": { - keyToRegistryEntry = {}; - mapKeyRegistry = {}; - break; - } - case "mapkey": { - if (tokens.length != 3) { - errors.push(`Incorrect usage for mapKey in the line: ${line}`); - continue; - } - const fromChar = this.parseKeySequence(tokens[1]); - const toChar = this.parseKeySequence(tokens[2]); - // NOTE(philc): I'm not sure why we enforce that the fromChar and toChar have to be - // length one. It's been that way since this feature was introduced in 6596e30. - const isValid = fromChar.length == toChar.length && toChar.length === 1; - if (isValid) { - mapKeyRegistry[fromChar[0]] = toChar[0]; - } else { - errors.push( - `mapkey only supports mapping keys which are single characters. Line: ${line}`, - ); - } - break; - } - default: - errors.push(`"${action}" is not a valid config command in line: ${line}`); - } - } - - return { - keyToRegistryEntry, - keyToMappedKey: mapKeyRegistry, - validationErrors: errors, - }; - }, - - // Lower-case the appropriate portions of named keys. - // - // A key name is one of three forms exemplified by or (prefixed normal key, - // named key, or prefixed named key). Internally, for simplicity, we would like prefixes and key - // names to be lowercase, though humans may prefer other forms or . - // On the other hand, and are different named keys - for one of them you have to press - // "shift" as well. - // We sort modifiers here to match the order used in keyboard_utils.js. - // The return value is a sequence of keys: e.g. "b" -> ["", "", "b"]. - parseKeySequence(key) { - if (key.length === 0) { - return []; - // Parse "bcd" as "" and "bcd". - } else if (0 === key.search(specialKeyRegexp)) { - const array = RegExp.$1.split("-"); - const adjustedLength = Math.max(array.length, 1); - let modifiers = array.slice(0, adjustedLength - 1); - let keyChar = array[adjustedLength - 1]; - if (keyChar.length !== 1) { - keyChar = keyChar.toLowerCase(); - } - modifiers = modifiers.map((m) => m.toLowerCase()); - modifiers.sort(); - return [ - "<" + modifiers.concat([keyChar]).join("-") + ">", - ...this.parseKeySequence(RegExp.$2), - ]; - } else { - return [key[0], ...this.parseKeySequence(key.slice(1))]; - } - }, - - // Command options follow command mappings, and are of one of these forms: - // key=value - a value - // key="value" - a value surrounded by quotes - // key - a flag - parseCommandOptions(optionString) { - const options = {}; - while (optionString != "") { - // Note that option names are allowed to be letters only; no numbers. - let match, matchedString, key, value; - // Case: option value surrounded by quotes (key= "a b"). Spaces are allowed in the value. - if (match = optionString.match(/^([a-zA-Z]+)="([^"]+)"(\s+|$)/)) { - matchedString = match[0]; - key = match[1]; - value = match[2]; - } // Case: option value not surrounded by quotes (key=value). Spaces aren't allowed. - else if (match = optionString.match(/^([a-zA-Z]+)=(\S+)(\s+|$)/)) { - matchedString = match[0]; - key = match[1]; - value = match[2]; - } // Case: single option (flag), or "any URL". This correctly parses URLs because URLs cannot - // contain unescaped equals or space characters. The key will be the option's name (or the - // URL), and the value will be true. - else if (match = optionString.match(/^([^\s"]+)(\s+|$)/)) { - matchedString = match[0]; - key = match[1]; - value = true; - } - // NOTE(philc): If this string doesn't match any of our option regexps, we could throw an - // error here or use an assert. I think this might only happen in the case where there's a - // single equals sign. For now, just add the whole string as a flag option. If the command in - // question doesn't accept this option, then an error will get surfaced to the user. - if (match == null) { - console.log(`Warning: '${optionString}' isn't a valid option string.`); - options[optionString] = true; - break; - } - - options[key] = value; - optionString = optionString.slice(matchedString.length); - } - - // We parse any `count` option immediately (to avoid having to parse it repeatedly later). - if ("count" in options) { - options.count = parseInt(options.count); - if (isNaN(options.count)) { - delete options.count; - } - } - - return options; - }, -}; - -const Commands = { - // A map of keyString => RegistryEntry - keyToRegistryEntry: null, - // A map of typed key => key it's mapped to (via the `mapkey` config statement). - mapKeyRegistry: null, - - async init() { - await Settings.onLoaded(); - Settings.addEventListener("change", async () => { - await this.loadKeyMappings(Settings.get("keyMappings")); - }); - await this.loadKeyMappings(Settings.get("keyMappings")); - }, - - // Parses the user's keyMapping config text and persists the parsed key mappings into the - // extension's storage, for use by the other parts of this extension. - async loadKeyMappings(userKeyMappingsConfigText) { - let key, command; - this.keyToRegistryEntry = {}; - this.mapKeyRegistry = {}; - - const defaultKeyConfig = Object.keys(defaultKeyMappings).map((key) => - `map ${key} ${defaultKeyMappings[key]}` - ).join("\n"); - - const parsed = KeyMappingsParser.parse( - defaultKeyConfig + "\n" + userKeyMappingsConfigText, - true, - ); - this.mapKeyRegistry = parsed.keyToMappedKey; - this.keyToRegistryEntry = parsed.keyToRegistryEntry; - - await chrome.storage.session.set({ mapKeyRegistry: this.mapKeyRegistry }); - await this.installKeyStateMapping(); - this.prepareHelpPageData(); - - // Push the key mappings from any passNextKey commands into storage so that they're's available - // to the front end so they can be detected during insert mode. We exclude single-key mappings - // for this command (i.e. printable keys) because we're considering that a configuration error: - // when users press printable keys in insert mode, they expect that character to be input, not - // to be droppped into a special Vimium mode. - const passNextKeys = Object.entries(this.keyToRegistryEntry) - .filter(([key, v]) => v.command == "passNextKey" && key.length > 1) - .map(([key, v]) => key); - await chrome.storage.session.set({ passNextKeyKeys: passNextKeys }); - }, - - // This generates and installs a nested key-to-command mapping structure. There is an example in - // mode_key_handler.js. - async installKeyStateMapping() { - const keyStateMapping = {}; - for (const keys of Object.keys(this.keyToRegistryEntry || {})) { - const registryEntry = this.keyToRegistryEntry[keys]; - let currentMapping = keyStateMapping; - for (let index = 0; index < registryEntry.keySequence.length; index++) { - const key = registryEntry.keySequence[index]; - if (currentMapping[key] != null ? currentMapping[key].command : undefined) { - // Do not overwrite existing command bindings, they take priority. NOTE(smblott) This is - // the legacy behaviour. - break; - } else if (index < (registryEntry.keySequence.length - 1)) { - currentMapping = currentMapping[key] != null - ? currentMapping[key] - : (currentMapping[key] = {}); - } else { - currentMapping[key] = Object.assign({}, registryEntry); - // We don't need these properties in the content scripts. - for (const prop of ["keySequence"]) { - delete currentMapping[key][prop]; - } - } - } - } - await chrome.storage.session.set({ - normalModeKeyStateMapping: keyStateMapping, - // Inform `KeyboardUtils.isEscape()` whether `` should be interpreted as `Escape` (which it - // is by default). - useVimLikeEscape: !("" in keyStateMapping), - }); - }, - - // Build the "commandToOptionsToKeys" data structure and place it in chrome's session storage. - // This is used by the help page and commands listing. - prepareHelpPageData() { - /* - Map of commands to option sets to keys to trigger that command option set. - Commands with no options will have the empty string options set. - Example: - { - "zoomReset": { - "": ["z0", "zz"] // No options, with two key maps, ie: `map zz zoomReset` - }, - "setZoom": { - "1.1": ["z1"], // `map z1 setZoom 1.1` - "1.2": ["z2"], // `map z2 setZoom 1.2` - } - } - */ - const commandToOptionsToKeys = {}; - const formatOptionString = (options) => { - return Object.entries(options) - .map(([k, v]) => { - // When the value of an option is true, then it was parsed as a flag. - if (v === true) { - return k; - } else { - return `${k}=${v}`; - } - }) - .join(" "); - }; - for (const key of Object.keys(this.keyToRegistryEntry || {})) { - const registryEntry = this.keyToRegistryEntry[key]; - const optionString = formatOptionString(registryEntry.options || {}); - commandToOptionsToKeys[registryEntry.command] ||= {}; - commandToOptionsToKeys[registryEntry.command][optionString] ||= []; - commandToOptionsToKeys[registryEntry.command][optionString].push(key); - } - chrome.storage.session.set({ commandToOptionsToKeys }); - }, -}; - -const defaultKeyMappings = { - // Navigating the current page - "j": "scrollDown", - "k": "scrollUp", - "h": "scrollLeft", - "l": "scrollRight", - "gg": "scrollToTop", - "G": "scrollToBottom", - "zH": "scrollToLeft", - "zL": "scrollToRight", - "": "scrollDown", - "": "scrollUp", - "d": "scrollPageDown", - "u": "scrollPageUp", - "r": "reload", - "R": "reload hard", - "yy": "copyCurrentUrl", - "p": "openCopiedUrlInCurrentTab", - "P": "openCopiedUrlInNewTab", - "gi": "focusInput", - "[[": "goPrevious", - "]]": "goNext", - "gf": "nextFrame", - "gF": "mainFrame", - "gu": "goUp", - "gU": "goToRoot", - "i": "enterInsertMode", - "v": "enterVisualMode", - "V": "enterVisualLineMode", - - // Link hints - "f": "LinkHints.activateMode", - "F": "LinkHints.activateModeToOpenInNewTab", - "": "LinkHints.activateModeWithQueue", - "yf": "LinkHints.activateModeToCopyLinkUrl", - - // Using find - "/": "enterFindMode", - "n": "performFind", - "N": "performBackwardsFind", - "*": "findSelected", - "#": "findSelectedBackwards", - - // Vomnibar - "o": "Vomnibar.activate", - "O": "Vomnibar.activateInNewTab", - "T": "Vomnibar.activateTabSelection", - "b": "Vomnibar.activateBookmarks", - "B": "Vomnibar.activateBookmarksInNewTab", - "ge": "Vomnibar.activateEditUrl", - "gE": "Vomnibar.activateEditUrlInNewTab", - - // Navigating history - "H": "goBack", - "L": "goForward", - - // Manipulating tabs - "K": "nextTab", - "J": "previousTab", - "gt": "nextTab", - "gT": "previousTab", - "^": "visitPreviousTab", - "<<": "moveTabLeft", - ">>": "moveTabRight", - "g0": "firstTab", - "g$": "lastTab", - "W": "moveTabToNewWindow", - "t": "createTab", - "yt": "duplicateTab", - "x": "removeTab", - "X": "restoreTab", - "": "togglePinTab", - "": "toggleMuteTab", - "zi": "zoomIn", - "zo": "zoomOut", - "z0": "zoomReset", - - // Marks - "m": "Marks.activateCreateMode", - "`": "Marks.activateGotoMode", - - // Misc - "?": "showHelp", - "gs": "toggleViewSource", -}; - -export { - Commands, - // Exported for unit tests. - defaultKeyMappings, - KeyMappingsParser, - parseLines, -}; diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/completion/completers.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/completion/completers.js deleted file mode 100644 index fbd45c1..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/completion/completers.js +++ /dev/null @@ -1,811 +0,0 @@ -// This file contains the definition of the completers used for the Vomnibar's suggestion UI. A -// completer will take a query (whatever the user typed into the Vomnibar) and return a list of -// Suggestions, e.g. bookmarks, domains, URLs from history. -// -// The Vomnibar frontend script makes a "filterCompleter" request to the background page, which in -// turn calls filter() on each these completers. -// -// A completer is a class which has three functions: -// - filter(query): "query" will be whatever the user typed into the Vomnibar. -// - refresh(): (optional) refreshes the completer's data source (e.g. refetches the list of -// bookmarks). -// - cancel(): (optional) cancels any pending, cancelable action. - -import * as bgUtils from "./../bg_utils.js"; -import * as completionSearch from "./search_wrapper.js"; -import * as userSearchEngines from "../user_search_engines.js"; -import * as ranking from "./ranking.js"; -import { RegexpCache } from "./ranking.js"; - -// Set this to true to render relevancy when debugging the ranking scores. -const showRelevancy = false; - -// TODO(philc): Consider moving out the "computeRelevancy" function. -export class Suggestion { - queryTerms; - description; - url; - // A shortened URL (URI-decoded, protocol removed) suitable for dispaly purposes. - shortUrl; - title = ""; - // A computed relevancy value. - relevancy; - relevancyFunction; - relevancyData; - // When true, then this suggestion is automatically pre-selected in the vomnibar. This only affects - // the suggestion in slot 0 in the vomnibar. - autoSelect = false; - // When true, we highlight matched terms in the title and URL. Otherwise we don't. - highlightTerms = true; - - // The text to insert into the vomnibar input when this suggestion is selected. - insertText; - // This controls whether this suggestion is a candidate for deduplication after simplifying - // its URL. - deDuplicate = true; - // The tab represented by this suggestion. Populated by TabCompleter. - tabId; - // Whether this is a suggestion provided by a user's custom search engine. - isCustomSearch; - // Whether this is meant to be the first suggestion from the user's custom search engine which - // represents their query as typed, verbatim. - isPrimarySuggestion = false; - // The generated HTML string for showing this suggestion in the Vomnibar. - html; - searchUrl; - - constructor(options) { - Object.seal(this); - Object.assign(this, options); - } - - // Returns the relevancy score. - computeRelevancy() { - // We assume that, once the relevancy has been set, it won't change. Completers must set - // either @relevancy or @relevancyFunction. - if (this.relevancy == null) { - this.relevancy = this.relevancyFunction(this); - } - return this.relevancy; - } - - generateHtml() { - if (this.html) return this.html; - const relevancyHtml = showRelevancy - ? `${this.computeRelevancy()}` - : ""; - const insertTextClass = this.insertText ? "" : "no-insert-text"; - const insertTextIndicator = "↪"; // A right hooked arrow. - if (this.insertText && this.isCustomSearch) { - this.title = this.insertText; - } - let faviconHtml = ""; - if (this.description === "tab" && !bgUtils.isFirefox()) { - const faviconUrl = new URL(chrome.runtime.getURL("/_favicon/")); - faviconUrl.searchParams.set("pageUrl", this.url); - faviconUrl.searchParams.set("size", "16"); - faviconHtml = ``; - } - if (this.isCustomSearch) { - this.html = `\ -
- ${insertTextIndicator}${this.description} - ${this.highlightQueryTerms(Utils.escapeHtml(this.title))} - ${relevancyHtml} -
\ -`; - } else { - this.html = `\ -
- ${insertTextIndicator}${this.description} - ${this.highlightQueryTerms(Utils.escapeHtml(this.title))} -
-
- ${insertTextIndicator}${faviconHtml}${ - this.highlightQueryTerms(Utils.escapeHtml(this.shortenUrl())) - } - ${relevancyHtml} -
\ -`; - } - return this.html; - } - - // Use neat trick to snatch a domain (http://stackoverflow.com/a/8498668). - getUrlRoot(url) { - const a = document.createElement("a"); - a.href = url; - return a.protocol + "//" + a.hostname; - } - - getHostname(url) { - const a = document.createElement("a"); - a.href = url; - return a.hostname; - } - - stripTrailingSlash(url) { - if (url[url.length - 1] === "/") { - url = url.substring(url, url.length - 1); - } - return url; - } - - // Push the ranges within `string` which match `term` onto `ranges`. - pushMatchingRanges(string, term, ranges) { - let textPosition = 0; - // Split `string` into a (flat) list of pairs: - // - for i=0,2,4,6,... - // - splits[i] is unmatched text - // - splits[i+1] is the following matched text (matching `term`) - // (except for the final element, for which there is no following matched text). - // Example: - // - string = "Abacab" - // - term = "a" - // - splits = [ "", "A", "b", "a", "c", "a", b" ] - // UM M UM M UM M UM (M=Matched, UM=Unmatched) - const splits = string.split(RegexpCache.get(term, "(", ")")); - for (let index = 0, end = splits.length - 2; index <= end; index += 2) { - const unmatchedText = splits[index]; - const matchedText = splits[index + 1]; - // Add the indices spanning `matchedText` to `ranges`. - textPosition += unmatchedText.length; - ranges.push([textPosition, textPosition + matchedText.length]); - textPosition += matchedText.length; - } - } - - // Wraps each occurence of the query terms in the given string in a . - highlightQueryTerms(string) { - if (!this.highlightTerms) return string; - let ranges = []; - const escapedTerms = this.queryTerms.map((term) => Utils.escapeHtml(term)); - for (const term of escapedTerms) { - this.pushMatchingRanges(string, term, ranges); - } - - if (ranges.length === 0) { - return string; - } - - ranges = this.mergeRanges(ranges.sort((a, b) => a[0] - b[0])); - // Replace portions of the string from right to left. - ranges = ranges.sort((a, b) => b[0] - a[0]); - for (const [start, end] of ranges) { - string = string.substring(0, start) + - `${string.substring(start, end)}` + - string.substring(end); - } - return string; - } - - // Merges the given list of ranges such that any overlapping regions are combined. E.g. - // mergeRanges([0, 4], [3, 6]) => [0, 6]. A range is [startIndex, endIndex]. - mergeRanges(ranges) { - let previous = ranges.shift(); - const mergedRanges = [previous]; - for (const range of ranges) { - if (previous[1] >= range[0]) { - previous[1] = Math.max(range[1], previous[1]); - } else { - mergedRanges.push(range); - previous = range; - } - } - return mergedRanges; - } - - // Simplify a suggestion's URL (by removing those parts which aren't useful for display or - // comparison). - shortenUrl() { - if (this.shortUrl != null) { - return this.shortUrl; - } - // We get easier-to-read shortened URLs if we URI-decode them. - let url = (Utils.decodeURIByParts(this.url) || this.url).toLowerCase(); - for (const [filter, replacements] of Suggestion.stripPatterns) { - if (new RegExp(filter).test(url)) { - for (const replace of replacements) { - url = url.replace(replace, ""); - } - } - } - - this.shortUrl = url; - return this.shortUrl; - } - - // Boost a relevancy score by a factor (in the range (0,1.0)), while keeping the score in the - // range [0,1]. This makes greater adjustments to scores near the middle of the range (so, very - // poor relevancy scores remain very poor). - static boostRelevancyScore(factor, score) { - return score + (score < 0.5 ? score * factor : (1.0 - score) * factor); - } -} - -// Patterns to strip from URLs; of the form [ [ filter, replacements ], [ filter, replacements ], ... ] -// - filter is a regexp string; a URL must match this regexp first. -// - replacements (itself a list) is a list of regexp objects, each of which is removed from URLs -// matching the filter. -// -// Note. This includes site-specific patterns for very-popular sites with URLs which don't work well -// in the vomnibar. -// -Suggestion.stripPatterns = [ - // Google search specific replacements; this replaces query parameters which are known to not be - // helpful. There's some additional information here: - // http://www.teknoids.net/content/google-search-parameters-2012 - [ - "^https?://www\\.google\\.(com|ca|com\\.au|co\\.uk|ie)/.*[&?]q=", - "ei gws_rd url ved usg sa usg sig2 bih biw cd aqs ie sourceid es_sm" - .split(/\s+/).map((param) => new RegExp(`\&${param}=[^&]+`)), - ], - - // On Google maps, we get a new history entry for every pan and zoom event. - ["^https?://www\\.google\\.(com|ca|com\\.au|co\\.uk|ie)/maps/place/.*/@", [new RegExp("/@.*")]], - - // General replacements; replaces leading and trailing fluff. - [".", ["^https?://", "\\W+$"].map((re) => new RegExp(re))], -]; - -const folderSeparator = "/"; - -// If these names occur as top-level bookmark names, then they are not included in the names of -// bookmark folders. -const ignoredTopLevelBookmarks = { - "Other Bookmarks": true, - "Mobile Bookmarks": true, - "Bookmarks Bar": true, -}; - -// this.bookmarks are loaded asynchronously when refresh() is called. -export class BookmarkCompleter { - async filter({ queryTerms }) { - if (!this.bookmarks) await this.refresh(); - - // If the folder separator character is the first character in any query term, then use the - // bookmark's full path as its title. Otherwise, just use the its regular title. - let results; - const usePathAndTitle = queryTerms.reduce( - (prev, term) => prev || term.startsWith(folderSeparator), - false, - ); - if (queryTerms.length > 0) { - results = this.bookmarks.filter((bookmark) => { - const suggestionTitle = usePathAndTitle ? bookmark.pathAndTitle : bookmark.title; - if (bookmark.hasJavascriptProtocol == null) { - bookmark.hasJavascriptProtocol = UrlUtils.hasJavascriptProtocol(bookmark.url); - } - if (bookmark.hasJavascriptProtocol && bookmark.shortUrl == null) { - bookmark.shortUrl = "javascript:..."; - } - const suggestionUrl = bookmark.shortUrl != null ? bookmark.shortUrl : bookmark.url; - return ranking.matches(queryTerms, suggestionUrl, suggestionTitle); - }); - } else { - results = []; - } - const suggestions = results.map((bookmark) => { - return new Suggestion({ - queryTerms, - description: "bookmark", - url: bookmark.url, - title: usePathAndTitle ? bookmark.pathAndTitle : bookmark.title, - relevancyFunction: this.computeRelevancy, - shortUrl: bookmark.shortUrl, - deDuplicate: bookmark.shortUrl == null, - }); - }); - return suggestions; - } - - async refresh() { - // In case refresh() is called multiple times before chrome.bookmarks.getTree() completes, only - // call chrome.bookmarks.getTree() once. - if (this.bookmarksTreePromise) { - await this.bookmarksTreePromise; - return; - } - - this.bookmarksTreePromise = chrome.bookmarks.getTree(); - const bookmarksTree = await this.bookmarksTreePromise; - this.bookmarks = this.traverseBookmarks(bookmarksTree) - .filter((b) => b.url != null); - this.bookmarksTreePromise = null; - } - - // Traverses the bookmark hierarchy, and returns a flattened list of all bookmarks. - traverseBookmarks(bookmarks) { - const results = []; - for (const folder of bookmarks) { - this.traverseBookmarksRecursive(folder, results); - } - return results; - } - - // Recursive helper for `traverseBookmarks`. - traverseBookmarksRecursive(bookmark, results, parent) { - if (parent == null) { - parent = { pathAndTitle: "" }; - } - if ( - bookmark.title && - !((parent.pathAndTitle === "") && ignoredTopLevelBookmarks[bookmark.title]) - ) { - bookmark.pathAndTitle = parent.pathAndTitle + folderSeparator + bookmark.title; - } else { - bookmark.pathAndTitle = parent.pathAndTitle; - } - results.push(bookmark); - if (bookmark.children) { - for (const child of bookmark.children) { - this.traverseBookmarksRecursive(child, results, bookmark); - } - } - } - - computeRelevancy(suggestion) { - return ranking.wordRelevancy( - suggestion.queryTerms, - suggestion.shortUrl || suggestion.url, - suggestion.title, - ); - } -} - -export class HistoryCompleter { - // - seenTabToOpenCompletionList: true if the user has typed only , and nothing else. - // We interpret this to mean that they want to see all of their history in the Vomnibar, sorted - // by recency. - async filter({ queryTerms, seenTabToOpenCompletionList }) { - await HistoryCache.onLoaded(); - - let results; - if (queryTerms.length > 0) { - results = HistoryCache.history - .filter((entry) => ranking.matches(queryTerms, entry.url, entry.title)); - } else if (seenTabToOpenCompletionList) { - // The user has typed to open the entire history (sorted by recency). - results = HistoryCache.history; - } else { - results = []; - } - - const suggestions = results.map((entry) => { - return new Suggestion({ - queryTerms, - description: "history", - url: entry.url, - title: entry.title, - relevancyFunction: this.computeRelevancy, - relevancyData: entry, - }); - }); - return suggestions; - } - - computeRelevancy(suggestion) { - const historyEntry = suggestion.relevancyData; - const recencyScore = ranking.recencyScore(historyEntry.lastVisitTime); - // If there are no query terms, then relevancy is based on recency alone. - if (suggestion.queryTerms.length === 0) return recencyScore; - const wordRelevancy = ranking.wordRelevancy( - suggestion.queryTerms, - suggestion.url, - suggestion.title, - ); - // Average out the word score and the recency. Recency has the ability to pull the score up, but - // not down. - return (wordRelevancy + Math.max(recencyScore, wordRelevancy)) / 2; - } -} - -// The domain completer is designed to match a single-word query which looks like it is a domain. -// This supports the user experience where they quickly type a partial domain, hit tab -> enter, and -// expect to arrive there. -export class DomainCompleter { - // A map of domain -> { entry: , referenceCount: } - // - `entry` is the most recently accessed page in the History within this domain. - // - `referenceCount` is a count of the number of History entries within this domain. - // If `referenceCount` goes to zero, the domain entry can and should be deleted. - domains; - - async filter({ queryTerms, query }) { - const isMultiWordQuery = /\S\s/.test(query); - if ((queryTerms.length === 0) || isMultiWordQuery) return []; - if (!this.domains) await this.populateDomains(); - - const firstTerm = queryTerms[0]; - const domains = Object.keys(this.domains || []).filter((d) => d.includes(firstTerm)); - const domainsAndScores = this.sortDomainsByRelevancy(queryTerms, domains); - const result = new Suggestion({ - queryTerms, - description: "domain", - // This should be the URL or the domain, or an empty string, but not null. - url: domainsAndScores[0]?.[0] || "", - relevancy: 2.0, - }); - return result.url.length > 0 ? [result] : []; - } - - // Returns a list of domains of the form: [ [domain, relevancy], ... ] - sortDomainsByRelevancy(queryTerms, domainCandidates) { - const results = []; - for (const domain of domainCandidates) { - const recencyScore = ranking.recencyScore(this.domains[domain].entry.lastVisitTime || 0); - const wordRelevancy = ranking.wordRelevancy(queryTerms, domain, null); - const score = (wordRelevancy + Math.max(recencyScore, wordRelevancy)) / 2; - results.push([domain, score]); - } - results.sort((a, b) => b[1] - a[1]); - return results; - } - - async populateDomains() { - await HistoryCache.onLoaded(); - this.domains = {}; - for (const entry of HistoryCache.history) { - this.onVisited(entry); - } - chrome.history.onVisited.addListener(this.onVisited.bind(this)); - chrome.history.onVisitRemoved.addListener(this.onVisitRemoved.bind(this)); - } - - onVisited(newPage) { - const domain = this.parseDomainAndScheme(newPage.url); - if (domain) { - const slot = this.domains[domain] || - (this.domains[domain] = { entry: newPage, referenceCount: 0 }); - // We want each entry in our domains map to point to the most recent History entry for that - // domain. - if (slot.entry.lastVisitTime < newPage.lastVisitTime) { - slot.entry = newPage; - } - slot.referenceCount += 1; - } - } - - onVisitRemoved(toRemove) { - if (toRemove.allHistory) { - this.domains = {}; - } else { - for (const url of toRemove.urls) { - const domain = this.parseDomainAndScheme(url); - const entry = this.domains[domain]; - if (entry == null) continue; - entry.referenceCount--; - if (entry.referenceCount <= 0) { - delete this.domains[domain]; - } - } - } - } - - // Return something like "http://www.example.com" or false. - parseDomainAndScheme(url) { - if (UrlUtils.urlHasProtocol(url) && !UrlUtils.hasChromeProtocol(url)) { - return url.split("/", 3).join("/"); - } - } -} - -// Searches through all open tabs, matching on title and URL. -// If the query is empty, then return a list of open tabs, sorted by recency. -export class TabCompleter { - async filter({ queryTerms }) { - await bgUtils.tabRecency.init(); - // We search all tabs, not just those in the current window. - const tabs = await chrome.tabs.query({}); - const results = tabs.filter((tab) => ranking.matches(queryTerms, tab.url, tab.title)); - const suggestions = results - .map((tab) => { - const suggestion = new Suggestion({ - queryTerms, - description: "tab", - url: tab.url, - title: tab.title, - tabId: tab.id, - deDuplicate: false, - }); - suggestion.relevancy = this.computeRelevancy(suggestion); - return suggestion; - }) - .sort((a, b) => b.relevancy - a.relevancy); - // Boost relevancy with a multiplier so a relevant tab doesn't get crowded out by results from - // competing completers. To prevent tabs from crowding out everything else in turn, penalize - // them for being further down the results list by scaling on a hyperbola starting at 1 and - // approaching 0 asymptotically for higher indexes. The multiplier and the curve fall-off were - // subjectively chosen on the grounds that they seem to work pretty well. - suggestions.forEach(function (suggestion, i) { - suggestion.relevancy *= 8; - suggestion.relevancy /= (i / 4) + 1; - }); - return suggestions; - } - - computeRelevancy(suggestion) { - if (suggestion.queryTerms.length > 0) { - return ranking.wordRelevancy(suggestion.queryTerms, suggestion.url, suggestion.title); - } else { - return bgUtils.tabRecency.recencyScore(suggestion.tabId); - } - } -} - -export class SearchEngineCompleter { - cancel() { - completionSearch.cancel(); - } - - // Returns the UserSearchEngine for the given query. Returns null if the query does not begin with - // a keyword from one of the user's search engines. - getUserSearchEngineForQuery(query) { - const parts = query.trimStart().split(/\s+/); - // For a keyword "w", we match "w search terms" and "w ", but not "w" on its own. - const keyword = parts[0]; - if (parts.length <= 1) return null; - // Don't match queries for built-in properties like "constructor". See #4396. - if (Object.hasOwn(userSearchEngines.keywordToEngine, keyword)) { - return userSearchEngines.keywordToEngine[keyword]; - } - return null; - } - - refresh() { - userSearchEngines.set(Settings.get("searchEngines")); - } - - async filter(request) { - const { queryTerms } = request; - - const keyword = queryTerms[0]; - const queryTermsWithoutKeyword = queryTerms.slice(1); - - const userSearchEngine = userSearchEngines.keywordToEngine[keyword]; - if (!userSearchEngine) return []; - - const searchUrl = userSearchEngine.url; - - const completions = await completionSearch.complete(searchUrl, queryTermsWithoutKeyword); - - const makeSuggestion = (query) => { - const url = UrlUtils.createSearchUrl(query, searchUrl); - return new Suggestion({ - queryTerms, - description: userSearchEngine.description, - url, - title: query, - searchUrl, - highlightTerms: false, - isCustomSearch: true, - relevancy: null, - relevancyFunction: this.computeRelevancy, - }); - }; - - const suggestions = completions.map((completion) => { - const s = makeSuggestion(completion); - s.insertText = completion; - return s; - }); - - if (suggestions[0]) suggestions[0].relevancy = 1.0; - - // This is a suggestion which contains the user's query. It's the "search for exactly what I - // just typed" option. It should always appear first in the list. - const primarySuggestion = makeSuggestion(queryTermsWithoutKeyword.join(" ")); - primarySuggestion.relevancy = 2; - primarySuggestion.isPrimarySuggestion = true; - primarySuggestion.autoSelect = true; - suggestions.unshift(primarySuggestion); - - return suggestions; - } - - computeRelevancy({ queryTerms, title }) { - // Tweaks: - // - Calibration: we boost relevancy scores to try to achieve an appropriate balance between - // relevancy scores here, and those provided by other completers. - // - Relevancy depends only on the title (which is the search terms), and not on the URL. - return Suggestion.boostRelevancyScore( - 0.5, - 0.7 * ranking.wordRelevancy(queryTerms, title, title), - ); - } -} - -SearchEngineCompleter.debug = false; - -// A completer which calls filter() on many completers, aggregates the results, ranks them, and -// returns the top 10. All queries from the vomnibar come through a multi completer. -const maxResults = 10; - -export class MultiCompleter { - constructor(completers) { - this.completers = completers; - } - - refresh() { - for (const c of this.completers) { - if (c.refresh) c.refresh(); - } - } - - cancel() { - for (const c of this.completers) { - c.cancel?.(); - } - } - - async filter(request) { - const searchEngineCompleter = this.completers.find((c) => c instanceof SearchEngineCompleter); - const query = request.query; - const queryTerms = request.queryTerms; - - // The only UX where we support showing results when there are no query terms is via - // Vomnibar.activateTabSelection, where we show the list of open tabs by recency. - const isTabCompleter = this.completers.length == 1 && - this.completers[0] instanceof TabCompleter; - if (queryTerms.length == 0 && !isTabCompleter) { - return []; - } - - const queryMatchesUserSearchEngine = searchEngineCompleter?.getUserSearchEngineForQuery(query); - - // If the user's query matches one of their custom search engines, then use only that engine to - // provide completions for their query. - const completers = queryMatchesUserSearchEngine - ? [searchEngineCompleter] - : this.completers.filter((c) => c != searchEngineCompleter); - - RegexpCache.clear(); - - const promises = completers.map((c) => c.filter(request)); - let results = (await Promise.all(promises)).flat(1); - results = this.postProcessSuggestions(request, queryTerms, results); - return results; - } - - // Rank them, simplify the URLs, and de-duplicate suggestions with the same simplified URL. - postProcessSuggestions(request, queryTerms, suggestions) { - for (const s of suggestions) { - s.computeRelevancy(queryTerms); - } - suggestions.sort((a, b) => b.relevancy - a.relevancy); - - // Simplify URLs and remove duplicates (duplicate simplified URLs, that is). - let count = 0; - const seenUrls = {}; - - const dedupedSuggestions = []; - for (const s of suggestions) { - const url = s.shortenUrl(); - if (s.deDuplicate && seenUrls[url]) continue; - if (count++ === maxResults) break; - seenUrls[url] = s; - dedupedSuggestions.push(s); - } - - // Give each completer the opportunity to tweak the suggestions. - for (const completer of this.completers) { - if (completer.postProcessSuggestions) { - completer.postProcessSuggestions(request, dedupedSuggestions); - } - } - - // Generate HTML for the remaining suggestions and return them. - for (const s of dedupedSuggestions) { - s.generateHtml(request); - } - - return dedupedSuggestions; - } -} - -// Provides cached access to Chrome's history. As the user browses to new pages, we add those pages -// to this history cache. -export const HistoryCache = { - size: 20000, - // An array of History items returned from Chrome. - history: null, - - reset() { - this.history = null; - chrome.history.onVisited.removeListener(this._onVisitedListener); - chrome.history.onVisitRemoved.removeListener(this._onVisitRemovedListener); - }, - - async onLoaded() { - if (this.history) return; - await this.fetchHistory(); - }, - - async fetchHistory() { - if (this.chromeHistoryPromise) { - await this.chromeHistoryPromise; - return; - } - this.chromeHistoryPromise = chrome.history.search({ - text: "", - maxResults: this.size, - startTime: 0, - }); - - const history = await this.chromeHistoryPromise; - - // On Firefox, some history entries do not have titles. - for (const entry of history) { - if (entry.title == null) entry.title = ""; - } - history.sort(this.compareHistoryByUrl); - this.history = history; - chrome.history.onVisited.addListener(this._onVisitedListener); - chrome.history.onVisitRemoved.addListener(this._onVisitRemovedListener); - this.chromeHistoryPromise = null; - }, - - compareHistoryByUrl(a, b) { - if (a.url === b.url) return 0; - if (a.url > b.url) return 1; - return -1; - }, - - // When a page we've seen before has been visited again, be sure to replace our History item so it - // has the correct "lastVisitTime". That's crucial for ranking Vomnibar suggestions. - onVisited(newPage) { - // On Firefox, some history entries do not have titles. - if (newPage.title == null) newPage.title = ""; - const i = HistoryCache.binarySearch(newPage, this.history, this.compareHistoryByUrl); - const pageWasFound = this.history[i]?.url == newPage.url; - if (pageWasFound) { - this.history[i] = newPage; - } else { - this.history.splice(i, 0, newPage); - } - }, - - // When a page is removed from the chrome history, remove it from the vimium history too. - onVisitRemoved(toRemove) { - if (toRemove.allHistory) { - this.history = []; - } else { - for (const url of toRemove.urls) { - const i = HistoryCache.binarySearch({ url }, this.history, this.compareHistoryByUrl); - if ((i < this.history.length) && (this.history[i].url === url)) { - this.history.splice(i, 1); - } - } - } - }, -}; - -HistoryCache._onVisitedListener = HistoryCache.onVisited.bind(HistoryCache); -HistoryCache._onVisitRemovedListener = HistoryCache.onVisitRemoved.bind(HistoryCache); - -// Returns the matching index or the closest matching index if the element is not found. That means -// you must check the element at the returned index to know whether the element was actually found. -// This method is used for quickly searching through our history cache. -HistoryCache.binarySearch = function (targetElement, array, compareFunction) { - let element, middle; - let high = array.length - 1; - let low = 0; - - while (low <= high) { - middle = Math.floor((low + high) / 2); - element = array[middle]; - const compareResult = compareFunction(element, targetElement); - if (compareResult > 0) { - high = middle - 1; - } else if (compareResult < 0) { - low = middle + 1; - } else { - return middle; - } - } - // We didn't find the element. Return the position where it should be in this array. - if (compareFunction(element, targetElement) < 0) { - return middle + 1; - } else { - return middle; - } -}; diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/completion/ranking.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/completion/ranking.js deleted file mode 100644 index 006c692..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/completion/ranking.js +++ /dev/null @@ -1,165 +0,0 @@ -// Utilities which help us compute a relevancy score for a given item. - -// Whether the given things (usually URLs or titles) match any one of the query terms. -// This is used to prune out irrelevant suggestions before we try to rank them, and for -// calculating word relevancy. Every term must match at least one thing. -export function matches(queryTerms, ...things) { - for (const term of queryTerms) { - const regexp = RegexpCache.get(term); - let matchedTerm = false; - for (const thing of things) { - if (!matchedTerm) { - matchedTerm = thing.match(regexp); - } - } - if (!matchedTerm) return false; - } - return true; -} - -// Weights used for scoring matches. -const matchWeights = { - matchAnywhere: 1, - matchStartOfWord: 1, - matchWholeWord: 1, - // The following must be the sum of the three weights above; it is used for normalization. - maximumScore: 3, - // - // Calibration factor for balancing word relevancy and recency. - recencyCalibrator: 2.0 / 3.0, -}; - -// The current value of 2.0/3.0 has the effect of: -// - favoring the contribution of recency when matches are not on word boundaries ( because 2.0/3.0 > (1)/3 ) -// - favoring the contribution of word relevance when matches are on whole words ( because 2.0/3.0 < (1+1+1)/3 ) - -// Calculate a score for matching term against string. -// The score is in the range [0, matchWeights.maximumScore], see above. -// Returns: [ score, count ], where count is the number of matched characters in string. -function scoreTerm(term, string) { - let score = 0; - let count = 0; - const nonMatching = string.split(RegexpCache.get(term)); - if (nonMatching.length > 1) { - // Have match. - score = matchWeights.matchAnywhere; - count = nonMatching.reduce((p, c) => p - c.length, string.length); - if (RegexpCache.get(term, "\\b").test(string)) { - // Have match at start of word. - score += matchWeights.matchStartOfWord; - if (RegexpCache.get(term, "\\b", "\\b").test(string)) { - // Have match of whole word. - score += matchWeights.matchWholeWord; - } - } - } - return [score, count < string.length ? count : string.length]; -} - -// Returns a number between [0, 1] indicating how often the query terms appear in the url and title. -export function wordRelevancy(queryTerms, url, title) { - let titleCount, titleScore; - let urlScore = (titleScore = 0.0); - let urlCount = (titleCount = 0); - // Calculate initial scores. - for (const term of queryTerms) { - let [s, c] = scoreTerm(term, url); - urlScore += s; - urlCount += c; - if (title) { - [s, c] = scoreTerm(term, title); - titleScore += s; - titleCount += c; - } - } - - const maximumPossibleScore = matchWeights.maximumScore * queryTerms.length; - - // Normalize scores. - urlScore /= maximumPossibleScore; - urlScore *= normalizeDifference(urlCount, url.length); - - if (title) { - titleScore /= maximumPossibleScore; - titleScore *= normalizeDifference(titleCount, title.length); - } else { - titleScore = urlScore; - } - - // Prefer matches in the title over matches in the URL. - // In other words, don't let a poor urlScore pull down the titleScore. - // For example, urlScore can be unreasonably poor if the URL is very long. - if (urlScore < titleScore) { - urlScore = titleScore; - } - - // Return the average. - return (urlScore + titleScore) / 2; -} - -// Untested alternative to the above: -// - Don't let a poor urlScore pull down a good titleScore, and don't let a poor titleScore pull -// down a good urlScore. -// -// return Math.max(urlScore, titleScore) - -let oneMonthAgo = 1000 * 60 * 60 * 24 * 30; - -// Returns a score between [0, 1] which indicates how recent the given timestamp is. Items which -// are over a month old are counted as 0. This range is quadratic, so an item from one day ago has -// a much stronger score than an item from two days ago. -export function recencyScore(lastAccessedTime) { - const recency = Date.now() - lastAccessedTime; - const recencyDifference = Math.max(0, oneMonthAgo - recency) / oneMonthAgo; - - // recencyScore is between [0, 1]. It is 1 when recenyDifference is 0. This quadratic equation - // will incresingly discount older history entries. - let recencyScore = recencyDifference * recencyDifference * recencyDifference; - - // Calibrate recencyScore vis-a-vis word-relevancy scores. - return recencyScore *= matchWeights.recencyCalibrator; -} - -// Takes the difference of two numbers and returns a number between [0, 1] (the percentage difference). -function normalizeDifference(a, b) { - const max = Math.max(a, b); - return (max - Math.abs(a - b)) / max; -} - -// We cache regexps because we use them frequently when comparing a query to history entries and -// bookmarks, and we don't want to create fresh objects for every comparison. -export const RegexpCache = { - init() { - this.initialized = true; - this.clear(); - }, - - clear() { - this.cache = {}; - }, - - // Get rexexp for `string` from cache, creating it if necessary. - // Regexp meta-characters in `string` are escaped. - // Regexp is wrapped in `prefix`/`suffix`, which may contain meta-characters (these are not - // escaped). - // With their default values, `prefix` and `suffix` have no effect. - // Example: - // - string="go", prefix="\b", suffix="" - // - this returns regexp matching "google", but not "agog" (the "go" must occur at the start of - // a word) - // TODO: `prefix` and `suffix` might be useful in richer word-relevancy scoring. - get(string, prefix, suffix) { - if (prefix == null) prefix = ""; - if (suffix == null) suffix = ""; - if (!this.initialized) this.init(); - let regexpString = Utils.escapeRegexSpecialCharacters(string); - // Avoid cost of constructing new strings if prefix/suffix are empty (which is expected to be a - // common case). - if (prefix) regexpString = prefix + regexpString; - if (suffix) regexpString = regexpString + suffix; - // Smartcase: Regexp is case insensitive, unless `string` contains a capital letter (testing - // `string`, not `regexpString`). - return this.cache[regexpString] || - (this.cache[regexpString] = new RegExp(regexpString, Utils.hasUpperCase(string) ? "" : "i")); - }, -}; diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/completion/search_engines.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/completion/search_engines.js deleted file mode 100644 index 5056db7..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/completion/search_engines.js +++ /dev/null @@ -1,266 +0,0 @@ -// An engine provides search suggestions for a online search engine. -// -// An "engineUrl" is used for fetching suggestions, whereas a "searchUrl" is used for the actual -// search itself. -// -// Each engine defines: -// -// 1. An "engineUrl". This is the URL to use for search completions and is passed as the option -// "engineUrl" to the "BaseEngine" constructor. -// -// 2. One or more regular expressions which define the custom search engine URLs for which the -// completion engine will be used. This is passed as the "regexps" option to the "BaseEngine" -// constructor. -// -// 3. A "parse" function. This takes the text body of an HTTP response and returns a list of -// suggestions (a list of strings). This method is always executed within the context of a -// try/catch block, so errors do not propagate. -// -// 4. Each completion engine *must* include an example custom search engine. The example must -// include an example "keyword" and an example "searchUrl", and may include an example -// "description" and an "explanation". This info is shown as documentation to the user. -// -// Each new completion engine must be added to the list "CompletionEngines" at the bottom of this -// file. -// -// The lookup logic which uses these completion engines is in "./completers.js". -// - -// A base class for common regexp-based matching engines. "options" must define: -// options.engineUrl: the URL to use for the completion engine. This must be a string. -// options.regexps: one or regular expressions. This may either a single string or a list of -// strings. -// options.example: an example object containing at least "keyword" and "searchUrl", and optional -// "description". -// TODO(philc): This base class is doing very little. We should remove it and use composition. -class BaseEngine { - constructor(options) { - Object.assign(this, options); - this.regexps = this.regexps.map((regexp) => new RegExp(regexp)); - } - - match(searchUrl) { - return Utils.matchesAnyRegexp(this.regexps, searchUrl); - } - getUrl(queryTerms) { - return UrlUtils.createSearchUrl(queryTerms.join(" "), this.engineUrl); - } -} - -export class Google extends BaseEngine { - constructor() { - super({ - engineUrl: "http://suggestqueries.google.com/complete/search?client=chrome&q=%s", - regexps: ["^https?://[a-z]+\\.google\\.(com|ie|co\\.(uk|jp)|ca|com\\.au)/"], - example: { - searchUrl: "https://www.google.com/search?q=%s", - keyword: "g", - }, - }); - } - - parse(text) { - return JSON.parse(text)[1]; - } -} - -const googleMapsPrefix = "map of "; - -export class GoogleMaps extends BaseEngine { - constructor() { - super({ - engineUrl: - `http://suggestqueries.google.com/complete/search?client=chrome&ds=yt&q=${googleMapsPrefix}%s`, - regexps: ["^https?://[a-z]+\\.google\\.(com|ie|co\\.(uk|jp)|ca|com\\.au)/maps"], - example: { - searchUrl: "https://www.google.com/maps?q=%s", - keyword: "m", - explanation: `\ -This uses regular Google completion, but prepends the text "map of " to the query. It works -well for places, countries, states, geographical regions and the like, but will not perform address -search.\ -`, - }, - }); - } - - parse(text) { - return JSON.parse(text)[1] - .filter((suggestion) => suggestion.startsWith(googleMapsPrefix)) - .map((suggestion) => suggestion.slice(googleMapsPrefix)); - } -} - -export class Youtube extends BaseEngine { - constructor() { - super({ - engineUrl: "http://suggestqueries.google.com/complete/search?client=chrome&ds=yt&q=%s", - regexps: ["^https?://[a-z]+\\.youtube\\.com/results"], - example: { - searchUrl: "https://www.youtube.com/results?search_query=%s", - keyword: "y", - }, - }); - } - - parse(text) { - return JSON.parse(text)[1]; - } -} - -export class Wikipedia extends BaseEngine { - constructor() { - super({ - engineUrl: "https://en.wikipedia.org/w/api.php?action=opensearch&format=json&search=%s", - regexps: ["^https?://[a-z]+\\.wikipedia\\.org/"], - example: { - searchUrl: "https://www.wikipedia.org/w/index.php?title=Special:Search&search=%s", - keyword: "w", - }, - }); - } - - parse(text) { - return JSON.parse(text)[1]; - } -} - -export class Bing extends BaseEngine { - constructor() { - super({ - engineUrl: "https://api.bing.com/osjson.aspx?query=%s", - regexps: ["^https?://www\\.bing\\.com/search"], - example: { - searchUrl: "https://www.bing.com/search?q=%s", - keyword: "b", - }, - }); - } - - parse(text) { - return JSON.parse(text)[1]; - } -} - -export class Amazon extends BaseEngine { - constructor() { - super({ - engineUrl: - "https://completion.amazon.com/api/2017/suggestions?mid=ATVPDKIKX0DER&alias=aps&prefix=%s", - regexps: ["^https?://(www|smile)\\.amazon\\.(com|co\\.uk|ca|de|com\\.au)/s/"], - example: { - searchUrl: "https://www.amazon.com/s/?field-keywords=%s", - keyword: "a", - }, - }); - } - - parse(text) { - return JSON.parse(text).suggestions.map((suggestion) => suggestion.value); - } -} - -export class DuckDuckGo extends BaseEngine { - constructor() { - super({ - engineUrl: "https://duckduckgo.com/ac/?q=%s", - regexps: ["^https?://([a-z]+\\.)?duckduckgo\\.com/"], - example: { - searchUrl: "https://duckduckgo.com/?q=%s", - keyword: "d", - }, - }); - } - - parse(text) { - return JSON.parse(text).map((suggestion) => suggestion.phrase); - } -} - -export class Webster extends BaseEngine { - constructor() { - super({ - engineUrl: "https://www.merriam-webster.com/lapi/v1/mwol-search/autocomplete?search=%s", - regexps: ["^https?://www.merriam-webster.com/dictionary/"], - example: { - searchUrl: "https://www.merriam-webster.com/dictionary/%s", - keyword: "dw", - description: "Dictionary", - }, - }); - } - - parse(text) { - return JSON.parse(text).docs.map((suggestion) => suggestion.word); - } -} - -// Qwant is a privacy-friendly search engine. -export class Qwant extends BaseEngine { - constructor() { - super({ - engineUrl: "https://api.qwant.com/api/suggest?q=%s", - regexps: ["^https?://www\\.qwant\\.com/"], - example: { - searchUrl: "https://www.qwant.com/?q=%s", - keyword: "qw", - }, - }); - } - - parse(text) { - return JSON.parse(text).data.items.map((suggestion) => suggestion.value); - } -} - -// Brave is a privacy-friendly search engine. -export class Brave extends BaseEngine { - constructor() { - super({ - engineUrl: "https://search.brave.com/api/suggest?rich=false&q=%s", - regexps: ["^https?://search\\.brave\\.com/"], - example: { - searchUrl: "https://search.brave.com/search?q=%s", - keyword: "br", - }, - }); - } - - parse(text) { - return JSON.parse(text)[1]; - } -} - -// Kagi is a paid ad-free search engine -export class Kagi extends BaseEngine { - constructor() { - super({ - engineUrl: "https://kagi.com/autosuggest?q=%s", - regexps: ["^https?://www\\.kagi\\.com/"], - example: { - searchUrl: "https://www.kagi.com/search?q=%s", - keyword: "k", - }, - }); - } - - parse(text) { - return JSON.parse(text).map((suggestion) => suggestion.t); - } -} - -// On the user-facing documentation page pages/doc_search_completion.html, the completion search -// engines will be shown in this order. -export const list = [ - Youtube, - GoogleMaps, - Google, - DuckDuckGo, - Wikipedia, - Bing, - Amazon, - Webster, - Brave, - Qwant, - Kagi, -]; diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/completion/search_wrapper.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/completion/search_wrapper.js deleted file mode 100644 index a89c221..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/completion/search_wrapper.js +++ /dev/null @@ -1,171 +0,0 @@ -import * as searchEngines from "./search_engines.js"; - -// This is a wrapper class for completion engines. It handles the case where a custom search engine -// includes a prefix query term (or terms). For example: -// -// https://www.google.com/search?q=javascript+%s -// -// In this case, we get better suggestions if we include the term "javascript" in queries sent to -// the completion engine. This wrapper handles adding such prefixes to completion-engine queries and -// removing them from the resulting suggestions. -class EnginePrefixWrapper { - constructor(searchUrl, engine) { - this.searchUrl = searchUrl; - this.engine = engine; - } - - getUrl(queryTerms) { - // This tests whether @searchUrl contains something of the form "...=abc+def+%s...", from which - // we extract a prefix of the form "abc def ". - if (/\=.+\+%s/.test(this.searchUrl)) { - let terms = this.searchUrl.replace(/\+%s.*/, ""); - terms = terms.replace(/.*=/, ""); - terms = terms.replace(/\+/g, " "); - - queryTerms = [...terms.split(" "), ...queryTerms]; - const prefix = `${terms} `; - - this.transformSuggestionsFn = (suggestions) => { - return suggestions - .filter((s) => s.startsWith(prefix)) - .map((s) => s.slice(prefix.length)); - }; - } - - return this.engine.getUrl(queryTerms); - } - - parse(responseText) { - const suggestions = this.engine.parse(responseText); - return this.transformSuggestionsFn ? this.transformSuggestionsFn(suggestions) : suggestions; - } -} - -let debug = false; -const inTransit = {}; -const completionCache = new SimpleCache(2 * 60 * 60 * 1000, 5000); // Two hours, 5000 entries. -const engineCache = new SimpleCache(1000 * 60 * 60 * 1000); // 1000 hours. - -// The amount of time to wait for new requests before launching the current request (for example, -// if the user is still typing). -const DELAY = 100; - -// This gets incremented each time we make a request to the completion engine. This allows us to -// dedupe requets which overlap, which is the case when the user is typing fast. -let requestId = 0; - -async function get(url) { - const timeoutDuration = 2500; - const controller = new AbortController(); - let isError = false; - let responseText; - const timer = Utils.setTimeout(timeoutDuration, () => controller.abort()); - - try { - const response = await fetch(url, { signal: controller.signal }); - responseText = await response.text(); - } catch { - // Fetch throws an error if the network is unreachable, etc. - isError = true; - } - - clearTimeout(timer); - - return isError ? null : responseText; -} - -// Look up the completion engine for this searchUrl. -function lookupEngine(searchUrl) { - if (engineCache.has(searchUrl)) { - return engineCache.get(searchUrl); - } else { - for (const engineClass of searchEngines.list) { - const engine = new engineClass(); - if (engine.match(searchUrl)) { - return engineCache.set(searchUrl, engine); - } - } - } -} - -// This is the main entry point. -// - searchUrl is the search engine's URL, e.g. Settings.get("searchUrl"), or a custom search -// engine's URL. This is only used as a key for determining the relevant completion engine. -// - queryTerms are the query terms. -export async function complete(searchUrl, queryTerms) { - const query = queryTerms.join(" ").toLowerCase(); - - // We don't complete queries which are too short: the results are usually useless. - if (query.length < 4) return []; - - // We don't complete regular URLs or Javascript URLs. - if (queryTerms.length == 1 && await UrlUtils.isUrl(query)) return []; - if (UrlUtils.hasJavascriptProtocol(query)) return []; - - const engine = lookupEngine(searchUrl); - if (!engine) return []; - - const completionCacheKey = JSON.stringify([searchUrl, queryTerms]); - if (completionCache.has(completionCacheKey)) { - if (debug) console.log("hit", completionCacheKey); - return completionCache.get(completionCacheKey); - } - - const createTimeoutPromise = (ms) => { - return new Promise((resolve) => { - setTimeout(() => { - resolve(); - }, ms); - }); - }; - - requestId++; - const lastRequestId = requestId; - - // We delay sending a completion request in case the user is still typing. - await createTimeoutPromise(DELAY); - - // If the user has issued a new query while we were waiting, then this query is old; abort it. - if (lastRequestId != requestId) return []; - - const engineWrapper = new EnginePrefixWrapper(searchUrl, engine); - const url = engineWrapper.getUrl(queryTerms); - - if (debug) console.log("GET", url); - const responseText = await get(url); - - // Parsing the response may fail if we receive an unexpectedly-formatted response. In all cases, - // we fall back to the catch clause, below. Therefore, we "fail safe" in the case of incorrect - // or out-of-date completion engine implementations. - let suggestions = []; - let isError = responseText == null; - if (!isError) { - try { - suggestions = engineWrapper.parse(responseText) - // Make all suggestions lower case. It looks odd when suggestions from one - // completion engine are upper case, and those from another are lower case. - .map((s) => s.toLowerCase()) - // Filter out the query itself. It's not adding anything. - .filter((s) => s !== query); - } catch (error) { - if (debug) console.log("error:", error); - isError = true; - } - } - if (isError) { - // We allow failures to be cached too, but remove them after just thirty seconds. - Utils.setTimeout( - 30 * 1000, - () => completionCache.set(completionCacheKey, null), - ); - } - - completionCache.set(completionCacheKey, suggestions); - return suggestions; -} - -// Cancel any pending (ie. blocked on @delay) queries. Does not cancel in-flight queries. This is -// called whenever the user is typing. -export function cancel() { - requestId++; -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/exclusions.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/exclusions.js deleted file mode 100644 index aaa2444..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/exclusions.js +++ /dev/null @@ -1,78 +0,0 @@ -// This module manages manages the exclusion rule setting. An exclusion is an object with two -// attributes: pattern and passKeys. The exclusion rules are an array of such objects. - -const ExclusionRegexpCache = { - cache: {}, - clear(cache) { - this.cache = cache || {}; - }, - get(pattern) { - if (pattern in this.cache) { - return this.cache[pattern]; - } else { - let result; - // We use try/catch to ensure that a broken regexp doesn't wholly cripple Vimium. - try { - result = new RegExp("^" + pattern.replace(/\*/g, ".*") + "$"); - } catch { - if (!globalThis.isUnitTests) { - console.log(`bad regexp in exclusion rule: ${pattern}`); - } - result = /^$/; // Match the empty string. - } - this.cache[pattern] = result; - return result; - } - }, -}; - -// Make RegexpCache, which is required on the page popup, accessible via the Exclusions object. -const RegexpCache = ExclusionRegexpCache; - -// Merge the matching rules for URL, or null. In the normal case, we use the configured @rules; -// hence, this is the default. However, when called from the page popup, we are testing what -// effect candidate new rules would have on the current tab. In this case, the candidate rules are -// provided by the caller. -function getRule(url, rules) { - if (rules == null) { - rules = Settings.get("exclusionRules"); - } - const matchingRules = rules.filter((r) => - r.pattern && (url.search(ExclusionRegexpCache.get(r.pattern)) >= 0) - ); - // An absolute exclusion rule (one with no passKeys) takes priority. - for (const rule of matchingRules) { - if (!rule.passKeys) return rule; - } - // Strip whitespace from all matching passKeys strings, and join them together. - const passKeys = matchingRules.map((r) => r.passKeys.split(/\s+/).join("")).join(""); - // TODO(philc): Remove this commented out code. - // passKeys = (rule.passKeys.split(/\s+/).join "" for rule in matchingRules).join "" - if (matchingRules.length > 0) { - return { passKeys: Utils.distinctCharacters(passKeys) }; - } else { - return null; - } -} - -export function isEnabledForUrl(url) { - const rule = getRule(url); - return { - isEnabledForUrl: !rule || (rule.passKeys.length > 0), - passKeys: rule ? rule.passKeys : "", - }; -} - -function setRules(rules) { - // Callers map a rule to null to have it deleted, and rules without a pattern are useless. - const newRules = rules.filter((rule) => rule?.pattern); - Settings.set("exclusionRules", newRules); -} - -function onSettingsUpdated() { - // NOTE(mrmr1993): In FF, the |rules| argument will be garbage collected when the exclusions - // popup is closed. Do NOT store it/use it asynchronously. - ExclusionRegexpCache.clear(); -} - -Settings.addEventListener("change", () => onSettingsUpdated()); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/main.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/main.js deleted file mode 100644 index 7d37e6b..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/main.js +++ /dev/null @@ -1,933 +0,0 @@ -import "../lib/utils.js"; -import "../lib/settings.js"; -import "../lib/url_utils.js"; -import "../background_scripts/tab_recency.js"; -import * as bgUtils from "../background_scripts/bg_utils.js"; -import "../background_scripts/all_commands.js"; -import { Commands } from "../background_scripts/commands.js"; -import * as exclusions from "../background_scripts/exclusions.js"; -import "../background_scripts/completion/search_engines.js"; -import "../background_scripts/completion/search_wrapper.js"; -import "../background_scripts/completion/completers.js"; -import "../background_scripts/tab_operations.js"; -import * as marks from "../background_scripts/marks.js"; - -import { - BookmarkCompleter, - DomainCompleter, - HistoryCompleter, - MultiCompleter, - SearchEngineCompleter, - TabCompleter, -} from "./completion/completers.js"; - -// NOTE(philc): This file has many superfluous return statements in its functions, as a result of -// converting from coffeescript to es6. Many can be removed, but I didn't take the time to -// diligently track down precisely which return statements could be removed when I was doing the -// conversion. - -import * as TabOperations from "./tab_operations.js"; - -// Allow Vimium's content scripts to access chrome.storage.session. Otherwise, -// chrome.storage.session will be null in content scripts. -chrome.storage.session.setAccessLevel({ accessLevel: "TRUSTED_AND_UNTRUSTED_CONTEXTS" }); - -// This is exported for use by "marks.js". -globalThis.tabLoadedHandlers = {}; // tabId -> function() - -// A Vimium secret, available only within the current browser session. The secret is a generated -// strong random string. -const randomArray = globalThis.crypto.getRandomValues(new Uint8Array(32)); // 32-byte random token. -const secretToken = randomArray.reduce((a, b) => a.toString(16) + b.toString(16)); -chrome.storage.session.set({ vimiumSecret: secretToken }); - -const completionSources = { - bookmarks: new BookmarkCompleter(), - history: new HistoryCompleter(), - domains: new DomainCompleter(), - tabs: new TabCompleter(), - searchEngines: new SearchEngineCompleter(), -}; - -const completers = { - omni: new MultiCompleter([ - completionSources.bookmarks, - completionSources.history, - completionSources.domains, - completionSources.tabs, - completionSources.searchEngines, - ]), - bookmarks: new MultiCompleter([completionSources.bookmarks]), - tabs: new MultiCompleter([completionSources.tabs]), -}; - -// A query dictionary for `chrome.tabs.query` that will return only the visible tabs. -const visibleTabsQueryArgs = { currentWindow: true }; -if (bgUtils.isFirefox()) { - // Only Firefox supports hidden tabs. - visibleTabsQueryArgs.hidden = false; -} - -function onURLChange(details) { - // sendMessage will throw "Error: Could not establish connection. Receiving end does not exist." - // if there is no Vimium content script loaded in the given tab. This can occur if the user - // navigated to a page where Vimium doesn't have permissions, like chrome:// URLs. This error is - // noisy and mysterious (it usually doesn't have a valid line number), so we silence it. - const message = { - handler: "checkEnabledAfterURLChange", - silenceLogging: true, - }; - chrome.tabs.sendMessage(details.tabId, message, { frameId: details.frameId }) - .catch(() => {}); -} - -// Re-check whether Vimium is enabled for a frame when the URL changes without a reload. -// There's no reliable way to detect when the URL has changed in the content script, so we -// have to use the webNavigation API in our background script. -chrome.webNavigation.onHistoryStateUpdated.addListener(onURLChange); // history.pushState. -chrome.webNavigation.onReferenceFragmentUpdated.addListener(onURLChange); // Hash changed. - -if (!globalThis.isUnitTests) { - // Cache "content_scripts/vimium.css" in chrome.storage.session for UI components. - (function () { - const url = chrome.runtime.getURL("content_scripts/vimium.css"); - fetch(url).then(async (response) => { - if (response.ok) { - chrome.storage.session.set({ vimiumCSSInChromeStorage: await response.text() }); - } - }); - })(); -} - -function muteTab(tab) { - chrome.tabs.update(tab.id, { muted: !tab.mutedInfo.muted }); -} - -function toggleMuteTab(request, sender) { - const currentTab = request.tab; - const tabId = request.tabId; - const registryEntry = request.registryEntry; - - if ((registryEntry.options.all != null) || (registryEntry.options.other != null)) { - // If there are any audible, unmuted tabs, then we mute them; otherwise we unmute any muted tabs. - chrome.tabs.query({ audible: true }, function (tabs) { - let tab; - if (registryEntry.options.other != null) { - tabs = tabs.filter((t) => t.id !== currentTab.id); - } - const audibleUnmutedTabs = tabs.filter((t) => t.audible && !t.mutedInfo.muted); - if (audibleUnmutedTabs.length >= 0) { - chrome.tabs.sendMessage(tabId, { - frameId: sender.frameId, - handler: "showMessage", - message: `Muting ${audibleUnmutedTabs.length} tab(s).`, - }); - for (tab of audibleUnmutedTabs) { - muteTab(tab); - } - } else { - chrome.tabs.sendMessage(tabId, { - frameId: sender.frameId, - handler: "showMessage", - message: "Unmuting all muted tabs.", - }); - for (tab of tabs) { - if (tab.mutedInfo.muted) { - muteTab(tab); - } - } - } - }); - } else { - if (currentTab.mutedInfo.muted) { - chrome.tabs.sendMessage(tabId, { - frameId: sender.frameId, - handler: "showMessage", - message: "Unmuted tab.", - }); - } else { - chrome.tabs.sendMessage(tabId, { - frameId: sender.frameId, - handler: "showMessage", - message: "Muted tab.", - }); - } - muteTab(currentTab); - } -} - -// Find a tab's actual index in a given tab array returned by chrome.tabs.query. In Firefox, there -// may be hidden tabs, so tab.tabIndex may not be the actual index into the array of visible tabs. -function getTabIndex(tab, tabs) { - // First check if the tab is where we expect it, to avoid searching the array. - if (tabs.length > tab.index && tabs[tab.index].index === tab.index) { - return tab.index; - } else { - return tabs.findIndex((t) => t.index === tab.index); - } -} - -// -// Selects the tab with the ID specified in request.id -// -async function selectSpecificTab(request) { - const tab = await chrome.tabs.get(request.id); - // Focus the tab's window. TODO(philc): Why are we null-checking chrome.windows here? - if (chrome.windows != null) { - await chrome.windows.update(tab.windowId, { focused: true }); - } - await chrome.tabs.update(request.id, { active: true }); -} - -function moveTab({ count, tab, registryEntry }) { - if (registryEntry.command === "moveTabLeft") { - count = -count; - } - return chrome.tabs.query(visibleTabsQueryArgs, function (tabs) { - const pinnedCount = (tabs.filter((tab) => tab.pinned)).length; - const minIndex = tab.pinned ? 0 : pinnedCount; - const maxIndex = (tab.pinned ? pinnedCount : tabs.length) - 1; - // The tabs array index of the new position. - const moveIndex = Math.max(minIndex, Math.min(maxIndex, getTabIndex(tab, tabs) + count)); - return chrome.tabs.move(tab.id, { - index: tabs[moveIndex].index, - }); - }); -} - -function createRepeatCommand(command) { - return async function (request) { - let i = request.count - 1; - const r = Object.assign({}, request); - delete r.count; - while (i >= 0) { - i--; - await command(r); - } - }; -} - -function nextZoomLevel(currentZoom, steps) { - // Chrome's default zoom levels. - const chromeLevels = [0.25, 0.33, 0.5, 0.75, 0.8, 0.9, 1, 1.1, 1.25, 1.5, 1.75, 2, 2.5, 3, 4, 5]; - // Firefox's default zoom levels. - const firefoxLevels = [0.3, 0.5, 0.67, 0.8, 0.9, 1, 1.1, 1.2, 1.33, 1.5, 1.7, 2, 2.4, 3, 4, 5]; - - let zoomLevels = chromeLevels; // Chrome by default - if (bgUtils.isFirefox()) { - zoomLevels = firefoxLevels; - } - - if (steps === 0) { // Nothing - return currentZoom; - } else if (steps > 0) { // In - // Chrome sometimes returns values with floating point errors. - // Example: Chrome gives 0.32999999999999996 instead of 0.33. - currentZoom += 0.0000001; // This is needed to solve floating point bugs in Chrome. - const nextIndex = zoomLevels.findIndex((level) => level > currentZoom); - const floorIndex = nextIndex == -1 ? zoomLevels.length : nextIndex - 1; - return zoomLevels[Math.min(zoomLevels.length - 1, floorIndex + steps)]; - } else if (steps < 0) { // Out - currentZoom -= 0.0000001; // This is needed to solve floating point bugs in Chrome. - let ceilIndex = zoomLevels.findIndex((level) => level >= currentZoom); - ceilIndex = ceilIndex == -1 ? zoomLevels.length : ceilIndex; - return zoomLevels[Math.max(0, ceilIndex + steps)]; - } -} - -// These are commands which are bound to keystrokes which must be handled by the background page. -// They are mapped in commands.js. -const BackgroundCommands = { - // Create a new tab. Also, with: - // map X createTab http://www.bbc.com/news - // create a new tab with the given URL. - createTab: createRepeatCommand(async function (request) { - if (request.urls == null) { - if (request.url) { - // If the request contains a URL, then use it. - request.urls = [request.url]; - } else { - // Otherwise, if we have a registryEntry containing URLs, then use them. - const options = Object.keys(request.registryEntry.options); - const promises = options.map((opt) => UrlUtils.isUrl(opt)); - const isUrl = await Promise.all(promises); - const urlList = options.filter((_, i) => isUrl[i]); - if (urlList.length > 0) { - request.urls = urlList; - } else { - // Otherwise, just create a new tab. - let url; - const destination = Settings.get("newTabDestination"); - const customUrl = Settings.get("newTabCustomUrl"); - if (destination == Settings.newTabDestinations.vimiumNewTabPage) { - url = Settings.vimiumNewTabPageUrl; - } else if (destination == Settings.newTabDestinations.customUrl && customUrl.length > 0) { - url = customUrl; - } else { - url = UrlUtils.chromeNewTabUrl; - } - request.urls = [url]; - } - } - } - if (request.registryEntry.options.incognito || request.registryEntry.options.window) { - // Firefox does not allow an incognito window to be created with the URL about:newtab. It - // throws this error: "Illegal URL: about:newtab". - const urls = request.urls.filter((u) => u != UrlUtils.chromeNewTabUrl); - const windowConfig = { - url: urls, - incognito: request.registryEntry.options.incognito || false, - }; - await chrome.windows.create(windowConfig); - } else { - const urls = request.urls.slice().reverse(); - if (request.position == null) { - request.position = request.registryEntry.options.position; - } - while (urls.length > 0) { - const url = urls.pop(); - const tab = await TabOperations.openUrlInNewTab(Object.assign(request, { url })); - // Ensure subsequent invocations of this command place the next tab directly after this one. - Object.assign(request, { tab, position: "after", active: false }); - } - } - }), - - duplicateTab: createRepeatCommand(async (request) => { - const tab = await chrome.tabs.duplicate(request.tabId); - // Ensure subsequent invocations of this command place the next tab directly after this one. - request.tabId = tab.id; - }), - - moveTabToNewWindow({ count, tab }) { - // TODO(philc): Switch to the promise API of chrome.tabs.query. - chrome.tabs.query(visibleTabsQueryArgs, function (tabs) { - const activeTabIndex = getTabIndex(tab, tabs); - const startTabIndex = Math.max(0, Math.min(activeTabIndex, tabs.length - count)); - [tab, ...tabs] = tabs.slice(startTabIndex, startTabIndex + count); - chrome.windows.create({ tabId: tab.id, incognito: tab.incognito }, function (window) { - chrome.tabs.move(tabs.map((t) => t.id), { windowId: window.id, index: -1 }); - }); - }); - }, - - nextTab(request) { - return selectTab("next", request); - }, - previousTab(request) { - return selectTab("previous", request); - }, - firstTab(request) { - return selectTab("first", request); - }, - lastTab(request) { - return selectTab("last", request); - }, - async removeTab({ count, tab }) { - await forCountTabs(count, tab, (tab) => { - // In Firefox, Ctrl-W will not close a pinned tab, but on Chrome, it will. We try to be - // consistent with each browser's UX for pinned tabs. - if (tab.pinned && bgUtils.isFirefox()) return; - chrome.tabs.remove(tab.id); - }); - }, - restoreTab: createRepeatCommand(async (request) => { - await chrome.sessions.restore(null); - }), - async togglePinTab({ count, tab }) { - await forCountTabs(count, tab, (tab) => { - chrome.tabs.update(tab.id, { pinned: !tab.pinned }); - }); - }, - toggleMuteTab, - moveTabLeft: moveTab, - moveTabRight: moveTab, - - async setZoom({ tabId, registryEntry }) { - const level = registryEntry.options?.["level"] ?? "1"; - const newZoom = parseFloat(level); - if (!isNaN(newZoom)) { - chrome.tabs.setZoom(tabId, newZoom); - } - }, - async zoomIn({ count, tabId }) { - const currentZoom = await chrome.tabs.getZoom(tabId); - const newZoom = nextZoomLevel(currentZoom, count); - chrome.tabs.setZoom(tabId, newZoom); - }, - async zoomOut({ count, tabId }) { - const currentZoom = await chrome.tabs.getZoom(tabId); - const newZoom = nextZoomLevel(currentZoom, -count); - chrome.tabs.setZoom(tabId, newZoom); - }, - async zoomReset({ tabId }) { - chrome.tabs.setZoom(tabId, 0); // setZoom of 0 sets to the tab default. - }, - - async nextFrame({ count, tabId }) { - // We're assuming that these frames are returned in the order that they appear on the page. This - // seems to be the case empirically. If it's ever needed, we could also sort by frameId. - let frameIds = await getFrameIdsForTab(tabId); - const promises = frameIds.map(async (frameId) => { - // It is possible that this sendMessage call fails, if a frame gets unloaded while the request - // is in flight. - let isError = false; - const status = await (chrome.tabs.sendMessage(tabId, { handler: "getFocusStatus" }, { - frameId: frameId, - }).catch((_) => { - isError = true; - })); - return { frameId, status, isError }; - }); - - const frameResponses = (await Promise.all(promises)).filter((r) => !r.isError); - - const focusedFrameId = frameResponses.find(({ status }) => status.focused)?.frameId; - // It's theoretically possible that focusedFrameId is null if the user switched tabs or away - // from the browser while the request is in flight. - if (focusedFrameId == null) return; - - // Prune any frames which gave an error response (i.e. they disappeared). - frameIds = frameResponses.filter((r) => r.status.focusable).map((r) => r.frameId); - - const index = frameIds.indexOf(focusedFrameId); - count = count ?? 1; - const nextIndex = (index + count) % frameIds.length; - if (index == nextIndex) return; - await chrome.tabs.sendMessage(tabId, { handler: "focusFrame", highlight: true }, { - frameId: frameIds[nextIndex], - }); - }, - - async closeTabsOnLeft(request) { - await removeTabsRelative("before", request); - }, - async closeTabsOnRight(request) { - await removeTabsRelative("after", request); - }, - async closeOtherTabs(request) { - await removeTabsRelative("both", request); - }, - - async visitPreviousTab({ count, tab }) { - await bgUtils.tabRecency.init(); - let tabIds = bgUtils.tabRecency.getTabsByRecency(); - tabIds = tabIds.filter((tabId) => tabId !== tab.id); - if (tabIds.length > 0) { - const id = tabIds[(count - 1) % tabIds.length]; - selectSpecificTab({ id }); - } - }, - - async reload({ count, tab, registryEntry }) { - const bypassCache = registryEntry.options.hard != null ? registryEntry.options.hard : false; - await forCountTabs(count, tab, (tab) => { - chrome.tabs.reload(tab.id, { bypassCache }); - }); - }, -}; - -async function forCountTabs(count, currentTab, callback) { - const tabs = await chrome.tabs.query(visibleTabsQueryArgs); - const activeTabIndex = getTabIndex(currentTab, tabs); - const startTabIndex = Math.max(0, Math.min(activeTabIndex, tabs.length - count)); - for (const tab of tabs.slice(startTabIndex, startTabIndex + count)) { - callback(tab); - } -} - -// Remove tabs before, after, or either side of the currently active tab -async function removeTabsRelative(direction, { count, tab }) { - // count is null if the user didn't type a count prefix before issuing this command and didn't - // specify a count=n option in their keymapping settings. Interpret this as closing all tabs on - // either side. - if (count == null) count = 99999; - const activeTab = tab; - const tabs = await chrome.tabs.query(visibleTabsQueryArgs); - const activeIndex = getTabIndex(activeTab, tabs); - const toRemove = tabs.filter((tab, tabIndex) => { - if (tab.pinned || tab.id == activeTab.id) { - return false; - } - switch (direction) { - case "before": - return tabIndex < activeIndex && - tabIndex >= activeIndex - count; - case "after": - return tabIndex > activeIndex && - tabIndex <= activeIndex + count; - case "both": - return true; - } - }); - - await chrome.tabs.remove(toRemove.map((t) => t.id)); -} - -// Selects a tab before or after the currently selected tab. -// - direction: "next", "previous", "first" or "last". -function selectTab(direction, { count, tab }) { - chrome.tabs.query(visibleTabsQueryArgs, function (tabs) { - if (tabs.length > 1) { - const toSelect = (() => { - switch (direction) { - case "next": - return (getTabIndex(tab, tabs) + count) % tabs.length; - case "previous": - return ((getTabIndex(tab, tabs) - count) + (count * tabs.length)) % tabs.length; - case "first": - return Math.min(tabs.length - 1, count - 1); - case "last": - return Math.max(0, tabs.length - count); - } - })(); - chrome.tabs.update(tabs[toSelect].id, { active: true }); - } - }); -} - -chrome.webNavigation.onCommitted.addListener(async ({ tabId, frameId }) => { - // Vimium can't run on all tabs (e.g. chrome:// URLs). insertCSS will throw an error on such tabs, - // which is expected, and noise. Swallow that error. - const swallowError = () => {}; - await Settings.onLoaded(); - await chrome.scripting.insertCSS({ - css: Settings.get("userDefinedLinkHintCss"), - target: { - tabId: tabId, - frameIds: [frameId], - }, - }).catch(swallowError); -}); - -// Returns all frame IDs for the given tab. Note that in Chrome, this will omit frame IDs for frames -// or iFrames which contain chrome-extension:// URLs, even if those pages are listed in Vimium's -// web_accessible_resources in manifest.json. -async function getFrameIdsForTab(tabId) { - // getAllFrames unfortunately excludes frames and iframes from chrome-extension:// URLs. - // In Firefox, by contrast, pages with moz-extension:// URLs are included. - const frames = await chrome.webNavigation.getAllFrames({ tabId: tabId }); - return frames.map((f) => f.frameId); -} - -const HintCoordinator = { - // Forward the message in "request" to all frames the in sender's tab. - broadcastLinkHintsMessage(request, sender) { - chrome.tabs.sendMessage( - sender.tab.id, - Object.assign(request, { handler: "linkHintsMessage" }), - ); - }, - - // This is sent by the content script once the user issues the link hints command. - async prepareToActivateLinkHintsMode( - tabId, - originatingFrameId, - { modeIndex, requestedByHelpDialog, isExtensionPage }, - ) { - const frameIds = await getFrameIdsForTab(tabId); - // If link hints was triggered on a Vimium extension page (like the vimium help dialog or - // options page), we cannot directly retrieve the frameIds for those pages using the - // getFrameIdsForTab. However, as a workaround, if those pages were the pages activating hints, - // their frameId is equal to originatingFrameId. - if (isExtensionPage && !frameIds.includes(originatingFrameId)) { - frameIds.push(originatingFrameId); - } - const timeout = 3000; - let promises = frameIds.map(async (frameId) => { - let promise = chrome.tabs.sendMessage( - tabId, - { - handler: "linkHintsMessage", - messageType: "getHintDescriptors", - modeIndex, - requestedByHelpDialog, - }, - { frameId }, - ); - - promise = Utils.promiseWithTimeout(promise, timeout) - .catch((error) => Utils.debugLog("Swallowed getHintDescriptors error:", error)); - - const descriptors = await promise; - - return { - frameId, - descriptors, - }; - }); - - const responses = (await Promise.all(promises)) - .filter((r) => r.descriptors != null); - - const frameIdToDescriptors = {}; - for (const { frameId, descriptors } of responses) { - frameIdToDescriptors[frameId] = descriptors; - } - - promises = responses.map(({ frameId }) => { - // Don't send this frame's own link hints back to it -- they're already stored in that frame's - // content script. At the time that we wrote this, this resulted in a 150% speedup for link - // busy sites like Reddit. - const outgoingFrameIdToHintDescriptors = Object.assign({}, frameIdToDescriptors); - delete outgoingFrameIdToHintDescriptors[frameId]; - return chrome.tabs.sendMessage( - tabId, - { - handler: "linkHintsMessage", - messageType: "activateMode", - frameId: frameId, - originatingFrameId: originatingFrameId, - frameIdToHintDescriptors: outgoingFrameIdToHintDescriptors, - modeIndex: modeIndex, - }, - { frameId }, - ).catch((error) => { - Utils.debugLog( - "Swallowed linkHints activateMode error:", - error, - "tabId", - tabId, - "frameId", - frameId, - ); - }); - }); - await Promise.all(promises); - }, -}; - -const sendRequestHandlers = { - runBackgroundCommand(request, sender) { - return BackgroundCommands[request.registryEntry.command](request, sender); - }, - // getCurrentTabUrl is used by the content scripts to get their full URL, because window.location - // cannot help with Chrome-specific URLs like "view-source:http:..". - getCurrentTabUrl({ tab }) { - return tab.url; - }, - openUrlInNewTab: createRepeatCommand(async (request, callback) => { - await TabOperations.openUrlInNewTab(request, callback); - }), - async openUrlInNewWindow(request) { - await TabOperations.openUrlInNewWindow(request); - }, - async openUrlInIncognito(request) { - await chrome.windows.create({ - incognito: true, - url: await UrlUtils.convertToUrl(request.url), - }); - }, - openUrlInCurrentTab: TabOperations.openUrlInCurrentTab, - openOptionsPageInNewTab(request) { - return chrome.tabs.create({ - url: chrome.runtime.getURL("pages/options.html"), - index: request.tab.index + 1, - }); - }, - - launchSearchQuery({ query, openInNewTab }) { - const disposition = openInNewTab ? "NEW_TAB" : "CURRENT_TAB"; - chrome.search.query({ disposition, text: query }); - }, - - domReady(_, sender) { - const isTopFrame = sender.frameId == 0; - if (!isTopFrame) return; - const tabId = sender.tab.id; - // The only feature that uses tabLoadedHandlers is marks. - if (tabLoadedHandlers[tabId]) tabLoadedHandlers[tabId](); - delete tabLoadedHandlers[tabId]; - }, - - nextFrame: BackgroundCommands.nextFrame, - selectSpecificTab, - createMark: marks.create, - gotoMark: marks.goto, - // Send a message to all frames in the current tab. If request.frameId is provided, then send - // messages to only the frame with that ID. - sendMessageToFrames(request, sender) { - const newRequest = Object.assign({}, request.message); - const options = request.frameId != null ? { frameId: request.frameId } : {}; - chrome.tabs.sendMessage(sender.tab.id, newRequest, options); - }, - broadcastLinkHintsMessage(request, sender) { - HintCoordinator.broadcastLinkHintsMessage(request, sender); - }, - prepareToActivateLinkHintsMode(request, sender) { - HintCoordinator.prepareToActivateLinkHintsMode(sender.tab.id, sender.frameId, request); - }, - - async initializeFrame(request, sender) { - // Check whether the extension is enabled for the top frame's URL, rather than the URL of the - // specific frame that sent this request. - const enabledState = exclusions.isEnabledForUrl(sender.tab.url); - - const isTopFrame = sender.frameId == 0; - if (isTopFrame) { - let whichIcon; - if (!enabledState.isEnabledForUrl) { - whichIcon = "disabled"; - } else if (enabledState.passKeys.length > 0) { - whichIcon = "partial"; - } else { - whichIcon = "enabled"; - } - - let iconSet = { - "enabled": { - "16": "../icons/action_enabled_16.png", - "32": "../icons/action_enabled_32.png", - }, - "partial": { - "16": "../icons/action_partial_16.png", - "32": "../icons/action_partial_32.png", - }, - "disabled": { - "16": "../icons/action_disabled_16.png", - "32": "../icons/action_disabled_32.png", - }, - }; - - if (bgUtils.isFirefox()) { - // Only Firefox supports SVG icons. - iconSet = { - "enabled": "../icons/action_enabled.svg", - "partial": "../icons/action_partial.svg", - "disabled": "../icons/action_disabled.svg", - }; - } - - chrome.action.setIcon({ path: iconSet[whichIcon], tabId: sender.tab.id }); - } - - const response = Object.assign({ - isFirefox: bgUtils.isFirefox(), - firefoxVersion: await bgUtils.getFirefoxVersion(), - frameId: sender.frameId, - }, enabledState); - - return response; - }, - - async getBrowserInfo() { - return { - isFirefox: bgUtils.isFirefox(), - firefoxVersion: await bgUtils.getFirefoxVersion(), - }; - }, - - async filterCompletions(request) { - const completer = completers[request.completerName]; - let response = await completer.filter(request); - - // NOTE(smblott): response contains `relevancyFunction` (function) properties which cause - // postMessage, below, to fail in Firefox. See #2576. We cannot simply delete these methods, - // as they're needed elsewhere. Converting the response to JSON and back is a quick and easy - // way to sanitize the object. - response = JSON.parse(JSON.stringify(response)); - - return response; - }, - - refreshCompletions(request) { - const completer = completers[request.completerName]; - completer.refresh(); - }, - - cancelCompletions(request) { - const completer = completers[request.completerName]; - completer.cancel(); - }, -}; - -Utils.addChromeRuntimeOnMessageListener( - Object.keys(sendRequestHandlers), - async function (request, sender) { - Utils.debugLog( - "main.js: onMessage:%ourl:%otab:%oframe:%o", - request.handler, - sender.url.replace(/https?:\/\//, ""), - sender.tab?.id, - sender.frameId, - // request // Often useful for debugging. - ); - // NOTE(philc): We expect all messages to come from a content script in a tab. I've observed in - // Firefox when the extension is first installed, domReady and initializeFrame messages come from - // content scripts in about:blank URLs, which have a null sender.tab. I don't know what this - // corresponds to. Since we expect a valid sender.tab, ignore those messages. - if (sender.tab == null) return; - await Settings.onLoaded(); - request = Object.assign({ count: 1 }, request, { - tab: sender.tab, - tabId: sender.tab.id, - }); - const handler = sendRequestHandlers[request.handler]; - const result = handler ? await handler(request, sender) : null; - return result; - }, -); - -// Remove chrome.storage.local/findModeRawQueryListIncognito if there are no remaining -// incognito-mode windows. Since the common case is that there are none to begin with, we first -// check whether the key is set at all. -chrome.tabs.onRemoved.addListener(function (tabId) { - if (tabLoadedHandlers[tabId]) { - delete tabLoadedHandlers[tabId]; - } - chrome.storage.session.get("findModeRawQueryListIncognito", function (items) { - if (items.findModeRawQueryListIncognito) { - return chrome.windows != null - ? chrome.windows.getAll(null, function (windows) { - for (const window of windows) { - if (window.incognito) return; - } - // There are no remaining incognito-mode tabs, and findModeRawQueryListIncognito is set. - return chrome.storage.session.remove("findModeRawQueryListIncognito"); - }) - : undefined; - } - }); -}); - -// Convenience function for development use. -globalThis.runTests = () => open(chrome.runtime.getURL("tests/dom_tests/dom_tests.html")); - -// -// Begin initialization. -// - -// True if the major version of Vimium has changed. -// - previousVersion: this will be null for new installs. -function majorVersionHasIncreased(previousVersion) { - const currentVersion = Utils.getCurrentVersion(); - if (previousVersion == null) return false; - const currentMajorVersion = currentVersion.split(".").slice(0, 2).join("."); - const previousMajorVersion = previousVersion.split(".").slice(0, 2).join("."); - return Utils.compareVersions(currentMajorVersion, previousMajorVersion) == 1; -} - -// Show notification on upgrade. -async function showUpgradeMessageIfNecessary(onInstalledDetails) { - const currentVersion = Utils.getCurrentVersion(); - // We do not show an upgrade message for patch/silent releases. Such releases have the same - // major and minor version numbers. - if ( - !majorVersionHasIncreased(onInstalledDetails.previousVersion) || - Settings.get("hideUpdateNotifications") - ) { - return; - } - - // NOTE(philc): These notifications use the system notification UI. So, if you don't have - // notifications enabled from your browser (e.g. in Notification Settings in OSX), then - // chrome.notification.create will succeed, but you won't see it. - const notificationId = "VimiumUpgradeNotification"; - await chrome.notifications.create( - notificationId, - { - type: "basic", - iconUrl: chrome.runtime.getURL("icons/icon128.png"), - title: "Vimium Upgrade", - message: - `Vimium has been upgraded to version ${currentVersion}. Click here for more information.`, - isClickable: true, - }, - ); - if (!chrome.runtime.lastError) { - chrome.notifications.onClicked.addListener(async function (id) { - if (id != notificationId) return; - const tabs = await chrome.tabs.query({ active: true, currentWindow: true }); - const tab = tabs[0]; - TabOperations.openUrlInNewTab({ - tab, - tabId: tab.id, - url: "https://github.com/philc/vimium/blob/master/CHANGELOG.md", - }); - }); - } -} - -async function injectContentScriptsAndCSSIntoExistingTabs() { - const manifest = chrome.runtime.getManifest(); - const contentScriptConfig = manifest.content_scripts[0]; - const contentScripts = contentScriptConfig.js; - const cssFiles = contentScriptConfig.css; - - // The scripting.executeScript and scripting.insertCSS APIs can fail if we don't have permissions - // to run scripts in a given tab. Examples are: chrome:// URLs, file:// pages (if the user hasn't - // granted Vimium access to file URLs), and probably incognito tabs (unconfirmed). Calling these - // APIs on such tabs results in an error getting logged on the background page. To avoid this - // noise, we swallow the failures. We could instead try to determine if the tab is scriptable by - // checking its URL scheme before calling these APIs, but that approach has some nuance to it. - // This is simpler. - const swallowError = (_) => {}; - - const tabs = await chrome.tabs.query({ status: "complete" }); - for (const tab of tabs) { - const target = { tabId: tab.id, allFrames: true }; - - // Inject all of our content javascripts. - chrome.scripting.executeScript({ - files: contentScripts, - target: target, - }).catch(swallowError); - - // Inject our extension's CSS. - chrome.scripting.insertCSS({ - files: cssFiles, - target: target, - }).catch(swallowError); - - // Inject the user's link hint CSS. - chrome.scripting.insertCSS({ - css: Settings.get("userDefinedLinkHintCss"), - target: target, - }).catch(swallowError); - } -} - -async function initializeExtension() { - await Settings.onLoaded(); - await Commands.init(); -} - -// The browser may have tabs already open. We inject the content scripts and Vimium's CSS -// immediately so that the extension is running on the pages immediately after install, rather than -// having to reload those pages. -chrome.runtime.onInstalled.addListener(async (details) => { - Utils.debugLog("chrome.runtime.onInstalled"); - - // NOTE(philc): In my testing, when the onInstalled event occurs, the onStartup event does not - // also occur, so we need to initialize Vimium here. - await initializeExtension(); - - const shouldInjectContentScripts = - // NOTE(philc): 2023-06-16: we do not install the content scripts in all tabs on Firefox. - // I believe this is because Firefox does this already. See https://stackoverflow.com/a/37132144 - // for commentary. - !bgUtils.isFirefox() && - (["chrome_update", "shared_module_update"].includes(details.reason)); - if (shouldInjectContentScripts) injectContentScriptsAndCSSIntoExistingTabs(); - - await showUpgradeMessageIfNecessary(details); -}); - -// Note that this event is not fired when an incognito profile is started. -chrome.runtime.onStartup.addListener(async () => { - Utils.debugLog("chrome.runtime.onStartup"); - await initializeExtension(); -}); - -Object.assign(globalThis, { - TabOperations, - // Exported for tests: - HintCoordinator, - BackgroundCommands, - majorVersionHasIncreased, - nextZoomLevel, -}); - -// The chrome.runtime.onStartup and onInstalled events are not fired when disabling and then -// re-enabling the extension in developer mode, so we also initialize the extension here. -initializeExtension(); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/marks.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/marks.js deleted file mode 100644 index 27b7662..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/marks.js +++ /dev/null @@ -1,131 +0,0 @@ -import * as TabOperations from "./tab_operations.js"; - -// This returns the key which is used for storing mark locations in chrome.storage.sync. -// Exported for tests. -export function getLocationKey(markName) { - return `vimiumGlobalMark|${markName}`; -} - -// Get the part of a URL we use for matching here (that is, everything up to the first anchor). -function getBaseUrl(url) { - return url.split("#")[0]; -} - -// Create a global mark. We record vimiumSecret with the mark so that we can tell later, when the -// mark is used, whether this is the original Vimium session or a subsequent session. This affects -// whether or not tabId can be considered valid. -export async function create(req, sender) { - const items = await chrome.storage.session.get("vimiumSecret"); - const markInfo = { - vimiumSecret: items.vimiumSecret, - markName: req.markName, - url: getBaseUrl(sender.tab.url), - tabId: sender.tab.id, - scrollX: req.scrollX, - scrollY: req.scrollY, - }; - - if ((markInfo.scrollX != null) && (markInfo.scrollY != null)) { - saveMark(markInfo); - } else { - // The front-end frame hasn't provided the scroll position (because it's not the top frame - // within its tab). We need to ask the top frame what its scroll position is. - chrome.tabs.sendMessage(sender.tab.id, { handler: "getScrollPosition" }, (response) => { - saveMark(Object.assign(markInfo, { scrollX: response.scrollX, scrollY: response.scrollY })); - }); - } -} - -function saveMark(markInfo) { - const item = {}; - item[getLocationKey(markInfo.markName)] = markInfo; - chrome.storage.local.set(item); -} - -// Goto a global mark. We try to find the original tab. If we can't find that, then we try to find -// another tab with the original URL, and use that. And if we can't find such an existing tab, then -// we create a new one. Whichever of those we do, we then set the scroll position to the original -// scroll position. -export async function goto(req) { - const vimiumSecret = (await chrome.storage.session.get("vimiumSecret"))["vimiumSecret"]; - const key = getLocationKey(req.markName); - const items = await chrome.storage.local.get(key); - const markInfo = items[key]; - if (markInfo.vimiumSecret !== vimiumSecret) { - // This is a different Vimium instantiation, so markInfo.tabId is definitely out of date. - Utils.debugLog("marks: vimiumSecret is incorrect."); - await focusOrLaunch(markInfo, req); - } else { - // Check whether markInfo.tabId still exists. According to - // https://developer.chrome.com/extensions/tabs, tab Ids are unqiue within a Chrome - // session. So, if we find a match, we can use it. - let tab; - // This will throw an error if the tab doesn't exist. - try { - tab = await chrome.tabs.get(markInfo.tabId); - } catch { - // Swallow. - } - const originalTabStillExists = tab?.url && (markInfo.url === getBaseUrl(tab.url)); - if (originalTabStillExists) { - await gotoPositionInTab(markInfo); - } else { - await focusOrLaunch(markInfo, req); - } - } -} - -// Focus an existing tab and scroll to the given position within it. -async function gotoPositionInTab({ tabId, scrollX, scrollY }) { - const tab = await chrome.tabs.update(tabId, { active: true }); - chrome.windows.update(tab.windowId, { focused: true }); - chrome.tabs.sendMessage(tabId, { handler: "setScrollPosition", scrollX, scrollY }); -} - -// The tab we're trying to find no longer exists. We either find another tab with a matching URL and -// use it, or we create a new tab. -async function focusOrLaunch(markInfo, req) { - // If we're not going to be scrolling to a particular position in the tab, then we choose all tabs - // with a matching URL prefix. Otherwise, we require an exact match (because it doesn't make sense - // to scroll unless there's an exact URL match). - const markIsScrolled = markInfo.scrollX > 0 || markInfo.scrollY > 0; - const query = markIsScrolled ? markInfo.url : `${markInfo.url}*`; - const tabs = await chrome.tabs.query({ url: query }); - if (tabs.length > 0) { - // There is at least one matching tab. Pick one and go to it. - const tab = await pickTab(tabs); - gotoPositionInTab(Object.assign(markInfo, { tabId: tab.id })); - } else { - // There is no existing matching tab. We'll have to create one. - TabOperations.openUrlInNewTab( - Object.assign(req, { url: getBaseUrl(markInfo.url) }), - (tab) => { - // Note. tabLoadedHandlers is defined in "main.js". The handler below will be called when - // the tab is loaded, its DOM is ready and it registers with the background page. - return tabLoadedHandlers[tab.id] = () => - gotoPositionInTab(Object.assign(markInfo, { tabId: tab.id })); - }, - ); - } -} - -// Given a list of tabs candidate tabs, pick one. Prefer tabs in the current window and tabs with -// shorter (matching) URLs. -async function pickTab(tabs) { - // NOTE(philc): We assume getCurrent() can return null, but I didn't confirm this. Also, it should - // be impossible for the user to invoke Vimium-related keys if all windows are closed. - const window = await chrome.windows.getCurrent(); - const windowId = window?.id; - // Prefer tabs in the current window, if there are any. - const tabsInWindow = tabs.filter((tab) => tab.windowId === windowId); - if (tabsInWindow.length > 0) tabs = tabsInWindow; - // If more than one tab remains and the current tab is still a candidate, then don't pick the - // current tab (because jumping to it does nothing). - if (tabs.length > 1) { - tabs = tabs.filter((t) => !t.active); - } - - // Prefer shorter URLs. - tabs.sort((a, b) => a.url.length - b.url.length); - return tabs[0]; -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/tab_operations.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/tab_operations.js deleted file mode 100644 index 7e9ee93..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/tab_operations.js +++ /dev/null @@ -1,118 +0,0 @@ -// -// Functions for opening URLs in tabs. -// - -import * as bgUtils from "../background_scripts/bg_utils.js"; -import "../lib/url_utils.js"; - -// Opens request.url in the current tab. If the URL is keywords, search for them in the default -// search engine. If the URL is a javascript: snippet, execute it in the current tab. -export async function openUrlInCurrentTab(request) { - const urlStr = await UrlUtils.convertToUrl(request.url); - if (urlStr == null) { - // The requested destination is not a URL, so treat it like a search query. - chrome.search.query({ text: request.url }); - } else if (UrlUtils.hasJavascriptProtocol(urlStr)) { - // Note that when injecting JavaScript, it's subject to the site's CSP. Sites with strict CSPs - // (like github.com, developer.mozilla.org) will raise an error when we try to run this code. - // See https://github.com/philc/vimium/issues/4331. - const scriptingArgs = { - target: { tabId: request.tabId }, - func: (text) => { - const prefix = "javascript:"; - text = text.slice(prefix.length).trim(); - // TODO(philc): Why do we try to double decode here? Discover and then document it. - text = decodeURIComponent(text); - try { - text = decodeURIComponent(text); - } catch { - // Swallow - } - const el = document.createElement("script"); - el.textContent = text; - document.head.appendChild(el); - }, - args: [urlStr], - }; - if (!bgUtils.isFirefox()) { - // The MAIN world -- where the webpage runs -- is less privileged than the ISOLATED world. - // Specifying a world is required for Chrome, but not Firefox. - // As of Firefox 118, specifying "MAIN" as the world is not yet supported. - scriptingArgs.world = "MAIN"; - } - chrome.scripting.executeScript(scriptingArgs); - } else { - // The requested destination is a regular URL. - chrome.tabs.update(request.tabId, { url: urlStr }); - } -} - -// Opens request.url in new tab and switches to it. -// Returns the created tab. -export async function openUrlInNewTab(request) { - const urlStr = await UrlUtils.convertToUrl(request.url); - const tabConfig = { windowId: request.tab.windowId }; - const position = request.position; - let tabIndex = null; - switch (position) { - case "start": - tabIndex = 0; - break; - case "before": - tabIndex = request.tab.index; - break; - // if on Chrome or on Firefox but without openerTabId, `tabs.create` opens a tab at the end. - // but on Firefox and with openerTabId, it opens a new tab next to the opener tab - case "end": - tabIndex = bgUtils.isFirefox() ? 9999 : null; - break; - // "after" is the default case when there are no options. - default: - tabIndex = request.tab.index + 1; - } - tabConfig.index = tabIndex; - tabConfig.active = request.active ?? true; - tabConfig.openerTabId = request.tab.id; - - let newTab; - - if (urlStr == null) { - // The requested destination is not a URL, so treat it like a search query. - // - // The chrome.search.query API lets us open the search in a new tab, but it doesn't let us - // control the precise position of that tab. So, we open a new blank tab using our position - // parameter, and then execute the search in that tab. - - // In Chrome, if we create a blank tab and call chrome.search.query, the omnibar is focused, - // which we don't want. To work around that, first create an empty page. This is not needed in - // Firefox. And in fact, firefox doesn't support a data:text URL to the chrome.tab.create API. - tabConfig.url = bgUtils.isFirefox() ? null : "data:text/html,"; - newTab = await chrome.tabs.create(tabConfig); - const query = request.url; - await chrome.search.query({ text: query, tabId: newTab.id }); - } else { - // The requested destination is a regular URL. - // Firefox does not support "about:newtab" in chrome.tabs.create, so omit it. - if (urlStr != UrlUtils.chromeNewTabUrl) { - tabConfig.url = urlStr; - } - newTab = await chrome.tabs.create(tabConfig); - } - return newTab; -} - -// Open request.url in new window and switch to it. -export async function openUrlInNewWindow(request) { - const winConfig = { - url: await UrlUtils.convertToUrl(request.url), - active: true, - }; - if (request.active != null) { - winConfig.active = request.active; - } - // Firefox does not support "about:newtab" in chrome.tabs.create, so omit it. - if (tabConfig["url"] === UrlUtils.chromeNewTabUrl) { - delete winConfig["url"]; - } - await chrome.windows.create(winConfig); -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/tab_recency.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/tab_recency.js deleted file mode 100644 index f4fed61..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/tab_recency.js +++ /dev/null @@ -1,139 +0,0 @@ -// TabRecency associates an integer with each tab id representing how recently it has been accessed. -// The order of tabs as tracked by TabRecency is used to provide a recency-based ordering in the -// tabs vomnibar. -// -// The values are persisted to chrome.storage.session so that they're not lost when the extension's -// background page is unloaded. -// -// Callers must await TabRecency.init before calling recencyScore or getTabsByRecency. -// -// In theory, the browser's tab.lastAccessed timestamp field should allow us to sort tabs by -// recency, but in practice it does not work across several edge cases. See the comments on #4368. -class TabRecency { - constructor() { - this.counter = 1; - this.tabIdToCounter = {}; - this.loaded = false; - this.queuedActions = []; - } - - // Add listeners to chrome.tabs, and load the index from session storage. - async init() { - if (this.initPromise) { - await this.initPromise; - return; - } - let resolveFn; - this.initPromise = new Promise((resolve, _reject) => { - resolveFn = resolve; - }); - - chrome.tabs.onActivated.addListener((activeInfo) => { - this.queueAction("register", activeInfo.tabId); - }); - chrome.tabs.onRemoved.addListener((tabId) => { - this.queueAction("deregister", tabId); - }); - - chrome.tabs.onReplaced.addListener((addedTabId, removedTabId) => { - this.queueAction("deregister", removedTabId); - this.queueAction("register", addedTabId); - }); - - chrome.windows.onFocusChanged.addListener(async (windowId) => { - if (windowId == chrome.windows.WINDOW_ID_NONE) return; - const tabs = await chrome.tabs.query({ windowId, active: true }); - if (tabs[0]) { - this.queueAction("register", tabs[0].id); - } - }); - - await this.loadFromStorage(); - while (this.queuedActions.length > 0) { - const [action, tabId] = this.queuedActions.shift(); - this.handleAction(action, tabId); - } - this.loaded = true; - resolveFn(); - } - - // Loads the index from session storage. - async loadFromStorage() { - const tabsPromise = chrome.tabs.query({}); - const storagePromise = chrome.storage.session.get("tabRecency"); - const [tabs, storage] = await Promise.all([tabsPromise, storagePromise]); - if (storage.tabRecency == null) return; - - let maxCounter = 0; - for (const counter of Object.values(storage.tabRecency)) { - if (maxCounter < counter) maxCounter = counter; - } - if (this.counter < maxCounter) { - this.counter = maxCounter; - } - - this.tabIdToCounter = Object.assign({}, storage.tabRecency); - - // Remove any tab IDs which aren't currently loaded. - const tabIds = new Set(tabs.map((t) => t.id)); - for (const id in this.tabIdToCounter) { - if (!tabIds.has(parseInt(id))) { - delete this.tabIdToCounter[id]; - } - } - } - - async saveToStorage() { - await chrome.storage.session.set({ tabRecency: this.tabIdToCounter }); - } - - // - action: "register" or "unregister". - queueAction(action, tabId) { - if (!this.loaded) { - this.queuedActions.push([action, tabId]); - } else { - this.handleAction(action, tabId); - } - } - - // - action: "register" or "unregister". - handleAction(action, tabId) { - if (action == "register") { - this.register(tabId); - } else if (action == "deregister") { - this.deregister(tabId); - } else { - throw new Error(`Unexpected action type: ${action}`); - } - } - - register(tabId) { - this.counter++; - this.tabIdToCounter[tabId] = this.counter; - this.saveToStorage(); - } - - deregister(tabId) { - delete this.tabIdToCounter[tabId]; - this.saveToStorage(); - } - - // Recently-visited tabs get a higher score (except the current tab, which gets a low score). - recencyScore(tabId) { - if (!this.loaded) throw new Error("TabRecency hasn't yet been loaded."); - const tabCounter = this.tabIdToCounter[tabId]; - const isCurrentTab = tabCounter == this.counter; - if (isCurrentTab) return 0; - return (tabCounter ?? 1) / this.counter; // tabCounter may be null. - } - - // Returns a list of tab Ids sorted by recency, most recent tab first. - getTabsByRecency() { - if (!this.loaded) throw new Error("TabRecency hasn't yet been loaded."); - const ids = Object.keys(this.tabIdToCounter); - ids.sort((a, b) => this.tabIdToCounter[b] - this.tabIdToCounter[a]); - return ids.map((id) => parseInt(id)); - } -} - -export { TabRecency }; diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/user_search_engines.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/user_search_engines.js deleted file mode 100644 index 4ca1c80..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/background_scripts/user_search_engines.js +++ /dev/null @@ -1,53 +0,0 @@ -import "../lib/url_utils.js"; -import * as commands from "./commands.js"; - -// A struct representing a search engine entry in the "searchEngine" setting. -export class UserSearchEngine { - keyword; - url; - description; - constructor(o) { - Object.seal(this); - if (o) Object.assign(this, o); - } -} - -// Parses a user's search engine configuration from Settings, and stores the parsed results. -// TODO(philc): Should this be responsible for updating itself when Settings changes, rather than -// the callers doing so? Or, remove this class and re-parse the configuration every keystroke in -// Vomnibar, so we don't introduce another layer of caching in the code. -export let keywordToEngine = {}; - -// Returns a result of the shape: { keywordToEngine, validationErrors }. -export function parseConfig(configText) { - const results = {}; - const errors = []; - for (const line of commands.parseLines(configText)) { - const tokens = line.split(/\s+/); - if (tokens.length < 2) { - errors.push(`This line has less than two tokens: ${line}`); - continue; - } - if (!tokens[0].includes(":")) { - errors.push(`This line doesn't include a ":" character: ${line}`); - continue; - } - const keyword = tokens[0].split(":")[0]; - const url = tokens[1]; - const description = tokens.length > 2 ? tokens.slice(2).join(" ") : `search (${keyword})`; - - if (!UrlUtils.urlHasProtocol(url) && !UrlUtils.hasJavascriptProtocol(url)) { - errors.push(`This search engine doesn't have a valid URL: ${line}`); - continue; - } - results[keyword] = new UserSearchEngine({ keyword, url, description }); - } - return { - keywordToEngine: results, - validationErrors: errors, - }; -} - -export function set(searchEnginesConfigText) { - keywordToEngine = parseConfig(searchEnginesConfigText).keywordToEngine; -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/file_urls.css b/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/file_urls.css deleted file mode 100644 index 21c890c..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/file_urls.css +++ /dev/null @@ -1,6 +0,0 @@ -/* Chrome file:// URLs set draggable=true for links to files (CSS selector .icon.file). This - * automatically sets -webkit-user-select: none, which disables selecting the file names and so - * prevents Vimium's search from working as expected. Here, we reset the value back to default. */ -.icon.file { - -webkit-user-select: auto !important; -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/hud.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/hud.js deleted file mode 100644 index 18ff31a..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/dbepggeogbaibhgnhhndojpepiihcmeb/2.4.2_0/content_scripts/hud.js +++ /dev/null @@ -1,278 +0,0 @@ -// -// A heads-up-display (HUD) for showing Vimium page operations. -// Note: you cannot interact with the HUD until document.body is available. -// -const HUD = { - tween: null, - hudUI: null, - findMode: null, - abandon() { - if (this.hudUI) { - this.hudUI.hide(false); - } - }, - - // Set by @pasteFromClipboard to handle the value returned by pasteResponse - pasteListener: null, - - // This HUD is styled to precisely mimick the chrome HUD on Mac. Use the - // "has_popup_and_link_hud.html" test harness to tweak these styles to match Chrome's. One - // limitation of our HUD display is that it doesn't sit on top of horizontal scrollbars like - // Chrome's HUD does. - - handleUIComponentMessage({ data }) { - const handlers = { - hideFindMode: this.hideFindMode, - search: this.search, - unfocusIfFocused: this.unfocusIfFocused, - pasteResponse: this.pasteResponse, - showClipboardUnavailableMessage: this.showClipboardUnavailableMessage, - }; - const handler = handlers[data.name]; - if (handler) { - return handler.bind(this)(data); - } - }, - - async init(focusable) { - await Settings.onLoaded(); - if (focusable == null) { - focusable = true; - } - if (this.hudUI == null) { - const queryString = globalThis.vimiumDomTestsAreRunning ? "?dom_tests=true" : ""; - this.hudUI = new UIComponent(); - this.hudUI.load( - `pages/hud_page.html${queryString}`, - "vimium-hud-frame", - this.handleUIComponentMessage.bind(this), - ); - } - // this[data.name]? data - if (this.tween == null) { - this.tween = new Tween( - "iframe.vimium-hud-frame.vimium-ui-component-visible", - this.hudUI.shadowDOM, - ); - } - const classList = this.hudUI.iframeElement.classList; - if (focusable) { - classList.remove("vimium-non-clickable"); - classList.add("vimium-clickable"); - // Note(gdh1995): Chrome 74 only acknowledges text selection when a frame has been visible. - // See more in #3277. - // Note(mrmr1993): Show the HUD frame, so Firefox will actually perform the paste. - this.hudUI.setIframeVisible(true); - // Force the re-computation of styles, so Chrome sends a visibility change message to the - // child frame. See https://github.com/philc/vimium/pull/3277#issuecomment-487363284 - getComputedStyle(this.hudUI.iframeElement).display; - } else { - classList.remove("vimium-non-clickable"); - classList.add("vimium-clickable"); - } - }, - - // duration - if omitted, the message will show until dismissed. - async show(text, duration) { - await DomUtils.documentComplete(); - clearTimeout(this._showForDurationTimerId); - // @hudUI.activate will take charge of making it visible - await this.init(false); - this.hudUI.show({ name: "show", text }); - this.tween.fade(1.0, 150); - - if (duration != null) { - this._showForDurationTimerId = setTimeout(() => this.hide(), duration); - } - }, - - async showFindMode(findMode = null) { - this.findMode = findMode; - await DomUtils.documentComplete(); - await this.init(); - this.hudUI.show({ name: "showFindMode" }); - this.tween.fade(1.0, 150); - }, - - search(data) { - // NOTE(mrmr1993): On Firefox, window.find moves the window focus away from the HUD. We use - // postFindFocus to put it back, so the user can continue typing. - this.findMode.findInPlace(data.query, { - "postFindFocus": this.hudUI.iframeElement.contentWindow, - }); - - // Show the number of matches in the HUD UI. - const matchCount = FindMode.query.parsedQuery.length > 0 ? FindMode.query.matchCount : 0; - const showMatchText = FindMode.query.rawQuery.length > 0; - this.hudUI.postMessage({ name: "updateMatchesCount", matchCount, showMatchText }); - }, - - // Hide the HUD. - // If :immediate is falsy, then the HUD is faded out smoothly (otherwise it is hidden - // immediately). - // If :updateIndicator is truthy, then we also refresh the mode indicator. The only time we don't - // update the mode indicator, is when hide() is called for the mode indicator itself. - hide(immediate, updateIndicator) { - if (immediate == null) { - immediate = false; - } - if (updateIndicator == null) { - updateIndicator = true; - } - if ((this.hudUI != null) && (this.tween != null)) { - clearTimeout(this._showForDurationTimerId); - this.tween.stop(); - if (immediate) { - if (updateIndicator) { - Mode.setIndicator(); - } else { - this.hudUI.hide(); - } - } else { - this.tween.fade(0, 150, () => this.hide(true, updateIndicator)); - } - } - }, - - // These parameters describe the reason find mode is exiting, and come from the HUD UI component. - hideFindMode({ exitEventIsEnter, exitEventIsEscape }) { - let postExit; - this.findMode.checkReturnToViewPort(); - - // An element won't receive a focus event if the search landed on it while we were in the HUD - // iframe. To end up with the correct modes active, we create a focus/blur event manually after - // refocusing this window. - globalThis.focus(); - - const focusNode = DomUtils.getSelectionFocusElement(); - if (document.activeElement != null) { - document.activeElement.blur(); - } - - if (focusNode && focusNode.focus) { - focusNode.focus(); - } - - if (exitEventIsEnter) { - FindMode.handleEnter(); - if (FindMode.query.hasResults) { - postExit = () => newPostFindMode(); - } - } else if (exitEventIsEscape) { - // We don't want FindMode to handle the click events that FindMode.handleEscape can generate, - // so we wait until the mode is closed before running it. - postExit = FindMode.handleEscape; - } - - this.findMode.exit(); - if (postExit) { - postExit(); - } - }, - - // These commands manage copying and pasting from the clipboard in the HUD frame. - // NOTE(mrmr1993): We need this to copy and paste on Firefox: - // * an element can't be focused in the background page, so copying/pasting doesn't work - // * we don't want to disrupt the focus in the page, in case the page is listening for focus/blur - // * events. - // * the HUD shouldn't be active for this frame while any of the copy/paste commands are running. - async copyToClipboard(text) { - await DomUtils.documentComplete(); - await this.init(); - this.hudUI.postMessage({ name: "copyToClipboard", data: text }); - }, - - async pasteFromClipboard(pasteListener) { - this.pasteListener = pasteListener; - await DomUtils.documentComplete(); - await this.init(); - this.tween.fade(0, 0); - this.hudUI.postMessage({ name: "pasteFromClipboard" }); - }, - - pasteResponse({ data }) { - // Hide the HUD frame again. - this.hudUI.setIframeVisible(false); - this.unfocusIfFocused(); - this.pasteListener(data); - }, - - unfocusIfFocused() { - // On Firefox, if an - - - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/hosts-files.html b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/hosts-files.html deleted file mode 100644 index b3aac5e..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/hosts-files.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - -uMatrix — Hosts files - - - - - - - -
- -

- - - -

-
    -
  • -
-
-
-
-

 info-circle

-

-
    -
  • -
-
-
- -
-
-
-

 info-circle

-
    -
  • -
  • -
-
-
- - - -
- - - - - - - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-0.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-0.png deleted file mode 100644 index da3bb57..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-0.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-1.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-1.png deleted file mode 100644 index d3aea61..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-1.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-10.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-10.png deleted file mode 100644 index 96c0cfa..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-10.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-11.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-11.png deleted file mode 100644 index 9412e32..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-11.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-12.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-12.png deleted file mode 100644 index a7f46c8..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-12.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-13.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-13.png deleted file mode 100644 index 556c74c..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-13.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-14.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-14.png deleted file mode 100644 index dcf0c7c..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-14.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-15.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-15.png deleted file mode 100644 index 8a86409..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-15.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-16.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-16.png deleted file mode 100644 index 124bd8d..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-16.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-17.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-17.png deleted file mode 100644 index c913b41..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-17.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-18.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-18.png deleted file mode 100644 index 0288d92..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-18.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-19.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-19.png deleted file mode 100644 index a56bd43..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-19.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-2.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-2.png deleted file mode 100644 index 46e3495..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-2.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-3.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-3.png deleted file mode 100644 index 4730ef6..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-3.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-4.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-4.png deleted file mode 100644 index da44b73..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-4.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-5.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-5.png deleted file mode 100644 index a4303ae..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-5.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-6.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-6.png deleted file mode 100644 index 5507d36..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-6.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-7.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-7.png deleted file mode 100644 index 7b3980c..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-7.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-8.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-8.png deleted file mode 100644 index cee49d9..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-8.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-9.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-9.png deleted file mode 100644 index afa60d7..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-9.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-off.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-off.png deleted file mode 100644 index 036a7a3..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon19-off.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon38-off.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon38-off.png deleted file mode 100644 index 1c03c65..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/browsericons/icon38-off.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/cloud.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/cloud.png deleted file mode 100644 index 6c78dde..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/cloud.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/fontawesome/LICENSE.txt b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/fontawesome/LICENSE.txt deleted file mode 100644 index 2784b8c..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/fontawesome/LICENSE.txt +++ /dev/null @@ -1,25 +0,0 @@ -# [Font Awesome v4.7.0](http://fontawesome.io) -### The iconic font and CSS framework - -Font Awesome is a full suite of 675 pictographic icons for easy scalable vector graphics on websites, -created and maintained by [Dave Gandy](https://twitter.com/davegandy). -Stay up to date with the latest release and announcements on Twitter: -[@fontawesome](http://twitter.com/fontawesome). - -Get started at http://fontawesome.io! - -## License -- The Font Awesome font is licensed under the SIL OFL 1.1: - - http://scripts.sil.org/OFL -- Font Awesome CSS, LESS, and Sass files are licensed under the MIT License: - - https://opensource.org/licenses/mit-license.html -- The Font Awesome documentation is licensed under the CC BY 3.0 License: - - http://creativecommons.org/licenses/by/3.0/ -- Attribution is no longer required as of Font Awesome 3.0, but much appreciated: - - `Font Awesome by Dave Gandy - http://fontawesome.io` -- Full details: http://fontawesome.io/license/ - -## Author -- Email: dave@fontawesome.io -- Twitter: http://twitter.com/davegandy -- GitHub: https://github.com/davegandy diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/fontawesome/fontawesome-defs.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/fontawesome/fontawesome-defs.svg deleted file mode 100644 index a09a015..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/fontawesome/fontawesome-defs.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/icon_128.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/icon_128.png deleted file mode 100644 index 8d117e5..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/icon_128.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/icon_16.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/icon_16.png deleted file mode 100644 index 8631085..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/icon_16.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/icon_64.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/icon_64.png deleted file mode 100644 index 3901388..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/icon_64.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/matrix-group-hide.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/matrix-group-hide.png deleted file mode 100644 index d6e618e..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/matrix-group-hide.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/matrix-group-hline.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/matrix-group-hline.png deleted file mode 100644 index 395610e..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/matrix-group-hline.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/matrix-group-show.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/matrix-group-show.png deleted file mode 100644 index 295ddab..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/matrix-group-show.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/permanent-black-small-cb.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/permanent-black-small-cb.png deleted file mode 100644 index de45e78..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/permanent-black-small-cb.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/permanent-black-small.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/permanent-black-small.png deleted file mode 100644 index 3cc3df2..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/permanent-black-small.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/permanent-white-small-cb.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/permanent-white-small-cb.png deleted file mode 100644 index a774fd3..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/permanent-white-small-cb.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/permanent-white-small.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/permanent-white-small.png deleted file mode 100644 index aa00073..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/img/permanent-white-small.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/about.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/about.js deleted file mode 100644 index 1d16b8a..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/about.js +++ /dev/null @@ -1,146 +0,0 @@ -/******************************************************************************* - - uMatrix - a Chromium browser extension to black/white list requests. - Copyright (C) 2014-2018 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -/* global uDom */ - -'use strict'; - -/******************************************************************************/ - -uDom.onLoad(function() { - -/******************************************************************************/ - -var backupUserDataToFile = function() { - var userDataReady = function(userData) { - vAPI.download({ - 'url': 'data:text/plain,' + encodeURIComponent(JSON.stringify(userData, null, 2)), - 'filename': uDom('[data-i18n="aboutBackupFilename"]').text() - }); - }; - - vAPI.messaging.send('about.js', { what: 'getAllUserData' }, userDataReady); -}; - -/******************************************************************************/ - -function restoreUserDataFromFile() { - var validateBackup = function(s) { - var userData = null; - try { - userData = JSON.parse(s); - } - catch (e) { - userData = null; - } - if ( userData === null ) { - return null; - } - if ( - typeof userData !== 'object' || - typeof userData.app !== 'string' || - typeof userData.version !== 'string' || - typeof userData.when !== 'number' || - typeof userData.settings !== 'object' || - (typeof userData.rules !== 'string' && - Array.isArray(userData.rules) === false) - ) { - return null; - } - return userData; - }; - - var fileReaderOnLoadHandler = function() { - var userData = validateBackup(this.result); - if ( !userData ) { - window.alert(uDom('[data-i18n="aboutRestoreError"]').text()); - return; - } - var time = new Date(userData.when); - var msg = uDom('[data-i18n="aboutRestoreConfirm"]').text() - .replace('{{time}}', time.toLocaleString()); - var proceed = window.confirm(msg); - if ( proceed ) { - vAPI.messaging.send( - 'about.js', - { what: 'restoreAllUserData', userData: userData } - ); - } - }; - - var file = this.files[0]; - if ( file === undefined || file.name === '' ) { - return; - } - if ( file.type.indexOf('text') !== 0 ) { - return; - } - var fr = new FileReader(); - fr.onload = fileReaderOnLoadHandler; - fr.readAsText(file); -} - -/******************************************************************************/ - -var startRestoreFilePicker = function() { - var input = document.getElementById('restoreFilePicker'); - // Reset to empty string, this will ensure an change event is properly - // triggered if the user pick a file, even if it is the same as the last - // one picked. - input.value = ''; - input.click(); -}; - -/******************************************************************************/ - -var resetUserData = function() { - var proceed = window.confirm(uDom('[data-i18n="aboutResetConfirm"]').text()); - if ( proceed ) { - vAPI.messaging.send('about.js', { what: 'resetAllUserData' }); - } -}; - -/******************************************************************************/ - -(function() { - var renderStats = function(details) { - document.getElementById('aboutVersion').textContent = details.version; - var template = uDom('[data-i18n="aboutStorageUsed"]').text(); - var storageUsed = '?'; - if ( typeof details.storageUsed === 'number' ) { - storageUsed = details.storageUsed.toLocaleString(); - } - document.getElementById('aboutStorageUsed').textContent = - template.replace('{{storageUsed}}', storageUsed); - }; - vAPI.messaging.send('about.js', { what: 'getSomeStats' }, renderStats); -})(); - -/******************************************************************************/ - -uDom('#backupUserDataButton').on('click', backupUserDataToFile); -uDom('#restoreUserDataButton').on('click', startRestoreFilePicker); -uDom('#restoreFilePicker').on('change', restoreUserDataFromFile); -uDom('#resetUserDataButton').on('click', resetUserData); - -/******************************************************************************/ - -}); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/asset-viewer.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/asset-viewer.js deleted file mode 100644 index 2f1be73..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/asset-viewer.js +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - - uMatrix - a Chromium browser extension to block requests. - Copyright (C) 2014-2017 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -'use strict'; - -/******************************************************************************/ - -(function() { - - var onAssetContentReceived = function(details) { - document.getElementById('content').textContent = - details && (details.content || ''); - }; - - var q = window.location.search; - var matches = q.match(/^\?url=([^&]+)/); - if ( !matches || matches.length !== 2 ) { - return; - } - - vAPI.messaging.send( - 'asset-viewer.js', - { what : 'getAssetContent', url: matches[1] }, - onAssetContentReceived - ); - -})(); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/assets.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/assets.js deleted file mode 100644 index 195b014..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/assets.js +++ /dev/null @@ -1,935 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to black/white list requests. - Copyright (C) 2013-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -'use strict'; - -/******************************************************************************/ - -µMatrix.assets = (function() { - -/******************************************************************************/ - -var reIsExternalPath = /^(?:[a-z-]+):\/\//, - errorCantConnectTo = vAPI.i18n('errorCantConnectTo'), - noopfunc = function(){}; - -var api = { -}; - -/******************************************************************************/ - -var observers = []; - -api.addObserver = function(observer) { - if ( observers.indexOf(observer) === -1 ) { - observers.push(observer); - } -}; - -api.removeObserver = function(observer) { - var pos; - while ( (pos = observers.indexOf(observer)) !== -1 ) { - observers.splice(pos, 1); - } -}; - -var fireNotification = function(topic, details) { - var result; - for ( let i = 0; i < observers.length; i++ ) { - let r = observers[i](topic, details); - if ( r !== undefined && result === undefined ) { - result = r; - } - } - return result; -}; - -/******************************************************************************/ - -api.fetchText = function(url, onLoad, onError) { - var actualUrl = reIsExternalPath.test(url) ? url : vAPI.getURL(url); - - if ( typeof onError !== 'function' ) { - onError = onLoad; - } - - // https://github.com/gorhill/uMatrix/issues/15 - var onResponseReceived = function() { - this.onload = this.onerror = this.ontimeout = null; - // xhr for local files gives status 0, but actually succeeds - var details = { - url: url, - content: '', - statusCode: this.status || 200, - statusText: this.statusText || '' - }; - if ( details.statusCode < 200 || details.statusCode >= 300 ) { - return onError.call(null, details); - } - // consider an empty result to be an error - if ( stringIsNotEmpty(this.responseText) === false ) { - return onError.call(null, details); - } - // we never download anything else than plain text: discard if response - // appears to be a HTML document: could happen when server serves - // some kind of error page I suppose - var text = this.responseText.trim(); - if ( text.startsWith('<') && text.endsWith('>') ) { - return onError.call(null, details); - } - details.content = this.responseText; - return onLoad.call(null, details); - }; - - var onErrorReceived = function() { - this.onload = this.onerror = this.ontimeout = null; - µMatrix.logger.writeOne({ - error: errorCantConnectTo.replace('{{url}}', actualUrl) - }); - onError.call(null, { url: url, content: '' }); - }; - - // Be ready for thrown exceptions: - // I am pretty sure it used to work, but now using a URL such as - // `file:///` on Chromium 40 results in an exception being thrown. - var xhr = new XMLHttpRequest(); - try { - xhr.open('get', actualUrl, true); - xhr.timeout = 30000; - xhr.onload = onResponseReceived; - xhr.onerror = onErrorReceived; - xhr.ontimeout = onErrorReceived; - xhr.responseType = 'text'; - xhr.send(); - } catch (e) { - onErrorReceived.call(xhr); - } -}; - -/******************************************************************************* - - TODO(seamless migration): - This block of code will be removed when I am confident all users have - moved to a version of uBO which does not require the old way of caching - assets. - - api.listKeyAliases: a map of old asset keys to new asset keys. - - migrate(): to seamlessly migrate the old cache manager to the new one: - - attempt to preserve and move content of cached assets to new locations; - - removes all traces of now obsolete cache manager entries in cacheStorage. - - This code will typically execute only once, when the newer version of uBO - is first installed and executed. - -**/ - -api.listKeyAliases = { - "assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat": "public_suffix_list.dat", - "assets/thirdparties/hosts-file.net/ad-servers": "hphosts", - "assets/thirdparties/www.malwaredomainlist.com/hostslist/hosts.txt": "malware-0", - "assets/thirdparties/mirror1.malwaredomains.com/files/justdomains": "malware-1", - "assets/thirdparties/pgl.yoyo.org/as/serverlist": "plowe-0", - "assets/thirdparties/someonewhocares.org/hosts/hosts": "dpollock-0", - "assets/thirdparties/winhelp2002.mvps.org/hosts.txt": "mvps-0" -}; - -var migrate = function(callback) { - var entries, - moveCount = 0, - toRemove = []; - - var countdown = function(change) { - moveCount -= (change || 0); - if ( moveCount !== 0 ) { return; } - vAPI.cacheStorage.remove(toRemove); - saveAssetCacheRegistry(); - callback(); - }; - - var onContentRead = function(oldKey, newKey, bin) { - var content = bin && bin['cached_asset_content://' + oldKey] || undefined; - if ( content ) { - assetCacheRegistry[newKey] = { - readTime: Date.now(), - writeTime: entries[oldKey] - }; - if ( reIsExternalPath.test(oldKey) ) { - assetCacheRegistry[newKey].remoteURL = oldKey; - } - bin = {}; - bin['cache/' + newKey] = content; - vAPI.cacheStorage.set(bin); - } - countdown(1); - }; - - var onEntries = function(bin) { - entries = bin && bin.cached_asset_entries; - if ( !entries ) { return callback(); } - if ( bin && bin.assetCacheRegistry ) { - assetCacheRegistry = bin.assetCacheRegistry; - } - var aliases = api.listKeyAliases; - for ( var oldKey in entries ) { - var newKey = aliases[oldKey]; - if ( !newKey && /^https?:\/\//.test(oldKey) ) { - newKey = oldKey; - } - if ( newKey ) { - vAPI.cacheStorage.get( - 'cached_asset_content://' + oldKey, - onContentRead.bind(null, oldKey, newKey) - ); - moveCount += 1; - } - toRemove.push('cached_asset_content://' + oldKey); - } - toRemove.push('cached_asset_entries', 'extensionLastVersion'); - countdown(); - }; - - vAPI.cacheStorage.get( - [ 'cached_asset_entries', 'assetCacheRegistry' ], - onEntries - ); -}; - -/******************************************************************************* - - The purpose of the asset source registry is to keep key detail information - about an asset: - - Where to load it from: this may consist of one or more URLs, either local - or remote. - - After how many days an asset should be deemed obsolete -- i.e. in need of - an update. - - The origin and type of an asset. - - The last time an asset was registered. - -**/ - -var assetSourceRegistryStatus, - assetSourceRegistry = Object.create(null); - -var registerAssetSource = function(assetKey, dict) { - var entry = assetSourceRegistry[assetKey] || {}; - for ( var prop in dict ) { - if ( dict.hasOwnProperty(prop) === false ) { continue; } - if ( dict[prop] === undefined ) { - delete entry[prop]; - } else { - entry[prop] = dict[prop]; - } - } - // `content` property => `type` property - if ( entry.type === undefined && entry.content !== undefined ) { - entry.type = entry.content; - entry.content = undefined; - } - var contentURL = dict.contentURL; - if ( contentURL !== undefined ) { - if ( typeof contentURL === 'string' ) { - contentURL = entry.contentURL = [ contentURL ]; - } else if ( Array.isArray(contentURL) === false ) { - contentURL = entry.contentURL = []; - } - var remoteURLCount = 0; - for ( var i = 0; i < contentURL.length; i++ ) { - if ( reIsExternalPath.test(contentURL[i]) ) { - remoteURLCount += 1; - } - } - entry.hasLocalURL = remoteURLCount !== contentURL.length; - entry.hasRemoteURL = remoteURLCount !== 0; - } else if ( entry.contentURL === undefined ) { - entry.contentURL = []; - } - if ( typeof entry.updateAfter !== 'number' ) { - entry.updateAfter = 13; - } - if ( entry.submitter ) { - entry.submitTime = Date.now(); // To detect stale entries - } - assetSourceRegistry[assetKey] = entry; -}; - -var unregisterAssetSource = function(assetKey) { - assetCacheRemove(assetKey); - delete assetSourceRegistry[assetKey]; -}; - -var saveAssetSourceRegistry = (function() { - var timer; - var save = function() { - timer = undefined; - vAPI.cacheStorage.set({ assetSourceRegistry: assetSourceRegistry }); - }; - return function(lazily) { - if ( timer !== undefined ) { - clearTimeout(timer); - } - if ( lazily ) { - timer = vAPI.setTimeout(save, 500); - } else { - save(); - } - }; -})(); - -var updateAssetSourceRegistry = function(json, silent) { - var newDict; - try { - newDict = JSON.parse(json); - } catch (ex) { - } - if ( newDict instanceof Object === false ) { return; } - - var oldDict = assetSourceRegistry, - assetKey; - - // Remove obsolete entries (only those which were built-in). - for ( assetKey in oldDict ) { - if ( - newDict[assetKey] === undefined && - oldDict[assetKey].submitter === undefined - ) { - unregisterAssetSource(assetKey); - } - } - // Add/update existing entries. Notify of new asset sources. - for ( assetKey in newDict ) { - if ( oldDict[assetKey] === undefined && !silent ) { - fireNotification( - 'builtin-asset-source-added', - { assetKey: assetKey, entry: newDict[assetKey] } - ); - } - registerAssetSource(assetKey, newDict[assetKey]); - } - saveAssetSourceRegistry(); -}; - -var getAssetSourceRegistry = function(callback) { - // Already loaded. - if ( assetSourceRegistryStatus === 'ready' ) { - callback(assetSourceRegistry); - return; - } - - // Being loaded. - if ( Array.isArray(assetSourceRegistryStatus) ) { - assetSourceRegistryStatus.push(callback); - return; - } - - // Not loaded: load it. - assetSourceRegistryStatus = [ callback ]; - - var registryReady = function() { - // `content` property => `type` property - for ( let key in assetSourceRegistry ) { - let entry = assetSourceRegistry[key]; - if ( entry.type === undefined && entry.content !== undefined ) { - entry.type = entry.content; - entry.content = undefined; - } - } - - var callers = assetSourceRegistryStatus; - assetSourceRegistryStatus = 'ready'; - var fn; - while ( (fn = callers.shift()) ) { - fn(assetSourceRegistry); - } - }; - - // First-install case. - var createRegistry = function() { - api.fetchText( - µMatrix.assetsBootstrapLocation || 'assets/assets.json', - function(details) { - updateAssetSourceRegistry(details.content, true); - registryReady(); - } - ); - }; - - vAPI.cacheStorage.get('assetSourceRegistry', function(bin) { - if ( !bin || !bin.assetSourceRegistry ) { - createRegistry(); - return; - } - assetSourceRegistry = bin.assetSourceRegistry; - registryReady(); - }); -}; - -api.registerAssetSource = function(assetKey, details) { - getAssetSourceRegistry(function() { - registerAssetSource(assetKey, details); - saveAssetSourceRegistry(true); - }); -}; - -api.unregisterAssetSource = function(assetKey) { - getAssetSourceRegistry(function() { - unregisterAssetSource(assetKey); - saveAssetSourceRegistry(true); - }); -}; - -/******************************************************************************* - - The purpose of the asset cache registry is to keep track of all assets - which have been persisted into the local cache. - -**/ - -var assetCacheRegistryStatus, - assetCacheRegistryStartTime = Date.now(), - assetCacheRegistry = {}; - -var getAssetCacheRegistry = function(callback) { - // Already loaded. - if ( assetCacheRegistryStatus === 'ready' ) { - callback(assetCacheRegistry); - return; - } - - // Being loaded. - if ( Array.isArray(assetCacheRegistryStatus) ) { - assetCacheRegistryStatus.push(callback); - return; - } - - // Not loaded: load it. - assetCacheRegistryStatus = [ callback ]; - - var registryReady = function() { - var callers = assetCacheRegistryStatus; - assetCacheRegistryStatus = 'ready'; - var fn; - while ( (fn = callers.shift()) ) { - fn(assetCacheRegistry); - } - }; - - var migrationDone = function() { - vAPI.cacheStorage.get('assetCacheRegistry', function(bin) { - if ( bin && bin.assetCacheRegistry ) { - assetCacheRegistry = bin.assetCacheRegistry; - } - registryReady(); - }); - }; - - migrate(migrationDone); -}; - -var saveAssetCacheRegistry = (function() { - var timer; - var save = function() { - timer = undefined; - vAPI.cacheStorage.set({ assetCacheRegistry: assetCacheRegistry }); - }; - return function(lazily) { - if ( timer !== undefined ) { clearTimeout(timer); } - if ( lazily ) { - timer = vAPI.setTimeout(save, 500); - } else { - save(); - } - }; -})(); - -var assetCacheRead = function(assetKey, callback) { - var internalKey = 'cache/' + assetKey; - - var reportBack = function(content, err) { - var details = { assetKey: assetKey, content: content }; - if ( err ) { details.error = err; } - callback(details); - }; - - var onAssetRead = function(bin) { - if ( !bin || !bin[internalKey] ) { - return reportBack('', 'E_NOTFOUND'); - } - var entry = assetCacheRegistry[assetKey]; - if ( entry === undefined ) { - return reportBack('', 'E_NOTFOUND'); - } - entry.readTime = Date.now(); - saveAssetCacheRegistry(true); - reportBack(bin[internalKey]); - }; - - var onReady = function() { - vAPI.cacheStorage.get(internalKey, onAssetRead); - }; - - getAssetCacheRegistry(onReady); -}; - -var assetCacheWrite = function(assetKey, details, callback) { - var internalKey = 'cache/' + assetKey; - var content = ''; - if ( typeof details === 'string' ) { - content = details; - } else if ( details instanceof Object ) { - content = details.content || ''; - } - - if ( content === '' ) { - return assetCacheRemove(assetKey, callback); - } - - var reportBack = function(content) { - var details = { assetKey: assetKey, content: content }; - if ( typeof callback === 'function' ) { - callback(details); - } - fireNotification('after-asset-updated', details); - }; - - var onReady = function() { - var entry = assetCacheRegistry[assetKey]; - if ( entry === undefined ) { - entry = assetCacheRegistry[assetKey] = {}; - } - entry.writeTime = entry.readTime = Date.now(); - if ( details instanceof Object && typeof details.url === 'string' ) { - entry.remoteURL = details.url; - } - var bin = { assetCacheRegistry: assetCacheRegistry }; - bin[internalKey] = content; - vAPI.cacheStorage.set(bin); - reportBack(content); - }; - getAssetCacheRegistry(onReady); -}; - -var assetCacheRemove = function(pattern, callback) { - var onReady = function() { - var cacheDict = assetCacheRegistry, - removedEntries = [], - removedContent = []; - for ( var assetKey in cacheDict ) { - if ( pattern instanceof RegExp && !pattern.test(assetKey) ) { - continue; - } - if ( typeof pattern === 'string' && assetKey !== pattern ) { - continue; - } - removedEntries.push(assetKey); - removedContent.push('cache/' + assetKey); - delete cacheDict[assetKey]; - } - if ( removedContent.length !== 0 ) { - vAPI.cacheStorage.remove(removedContent); - var bin = { assetCacheRegistry: assetCacheRegistry }; - vAPI.cacheStorage.set(bin); - } - if ( typeof callback === 'function' ) { - callback(); - } - for ( var i = 0; i < removedEntries.length; i++ ) { - fireNotification('after-asset-updated', { assetKey: removedEntries[i] }); - } - }; - - getAssetCacheRegistry(onReady); -}; - -var assetCacheMarkAsDirty = function(pattern, exclude, callback) { - var onReady = function() { - var cacheDict = assetCacheRegistry, - cacheEntry, - mustSave = false; - for ( var assetKey in cacheDict ) { - if ( pattern instanceof RegExp ) { - if ( pattern.test(assetKey) === false ) { continue; } - } else if ( typeof pattern === 'string' ) { - if ( assetKey !== pattern ) { continue; } - } else if ( Array.isArray(pattern) ) { - if ( pattern.indexOf(assetKey) === -1 ) { continue; } - } - if ( exclude instanceof RegExp ) { - if ( exclude.test(assetKey) ) { continue; } - } else if ( typeof exclude === 'string' ) { - if ( assetKey === exclude ) { continue; } - } else if ( Array.isArray(exclude) ) { - if ( exclude.indexOf(assetKey) !== -1 ) { continue; } - } - cacheEntry = cacheDict[assetKey]; - if ( !cacheEntry.writeTime ) { continue; } - cacheDict[assetKey].writeTime = 0; - mustSave = true; - } - if ( mustSave ) { - var bin = { assetCacheRegistry: assetCacheRegistry }; - vAPI.cacheStorage.set(bin); - } - if ( typeof callback === 'function' ) { - callback(); - } - }; - if ( typeof exclude === 'function' ) { - callback = exclude; - exclude = undefined; - } - getAssetCacheRegistry(onReady); -}; - -/******************************************************************************/ - -var stringIsNotEmpty = function(s) { - return typeof s === 'string' && s !== ''; -}; - -/******************************************************************************/ - -api.get = function(assetKey, options, callback) { - if ( typeof options === 'function' ) { - callback = options; - options = {}; - } else if ( typeof callback !== 'function' ) { - callback = noopfunc; - } - - var assetDetails = {}, - contentURLs, - contentURL; - - var reportBack = function(content, err) { - var details = { assetKey: assetKey, content: content }; - if ( err ) { - details.error = assetDetails.lastError = err; - } else { - assetDetails.lastError = undefined; - } - callback(details); - }; - - var onContentNotLoaded = function() { - var isExternal; - while ( (contentURL = contentURLs.shift()) ) { - isExternal = reIsExternalPath.test(contentURL); - if ( isExternal === false || assetDetails.hasLocalURL !== true ) { - break; - } - } - if ( !contentURL ) { - return reportBack('', 'E_NOTFOUND'); - } - api.fetchText(contentURL, onContentLoaded, onContentNotLoaded); - }; - - var onContentLoaded = function(details) { - if ( stringIsNotEmpty(details.content) === false ) { - onContentNotLoaded(); - return; - } - if ( reIsExternalPath.test(contentURL) && options.dontCache !== true ) { - assetCacheWrite(assetKey, { - content: details.content, - url: contentURL - }); - } - reportBack(details.content); - }; - - var onCachedContentLoaded = function(details) { - if ( details.content !== '' ) { - return reportBack(details.content); - } - getAssetSourceRegistry(function(registry) { - assetDetails = registry[assetKey] || {}; - if ( typeof assetDetails.contentURL === 'string' ) { - contentURLs = [ assetDetails.contentURL ]; - } else if ( Array.isArray(assetDetails.contentURL) ) { - contentURLs = assetDetails.contentURL.slice(0); - } else { - contentURLs = []; - } - onContentNotLoaded(); - }); - }; - - assetCacheRead(assetKey, onCachedContentLoaded); -}; - -/******************************************************************************/ - -var getRemote = function(assetKey, callback) { - var assetDetails = {}, - contentURLs, - contentURL; - - var reportBack = function(content, err) { - var details = { assetKey: assetKey, content: content }; - if ( err ) { - details.error = assetDetails.lastError = err; - } else { - assetDetails.lastError = undefined; - } - callback(details); - }; - - var onRemoteContentLoaded = function(details) { - if ( stringIsNotEmpty(details.content) === false ) { - registerAssetSource(assetKey, { error: { time: Date.now(), error: 'No content' } }); - tryLoading(); - return; - } - assetCacheWrite(assetKey, { - content: details.content, - url: contentURL - }); - registerAssetSource(assetKey, { error: undefined }); - reportBack(details.content); - }; - - var onRemoteContentError = function(details) { - var text = details.statusText; - if ( details.statusCode === 0 ) { - text = 'network error'; - } - registerAssetSource(assetKey, { error: { time: Date.now(), error: text } }); - tryLoading(); - }; - - var tryLoading = function() { - while ( (contentURL = contentURLs.shift()) ) { - if ( reIsExternalPath.test(contentURL) ) { break; } - } - if ( !contentURL ) { - return reportBack('', 'E_NOTFOUND'); - } - api.fetchText(contentURL, onRemoteContentLoaded, onRemoteContentError); - }; - - getAssetSourceRegistry(function(registry) { - assetDetails = registry[assetKey] || {}; - if ( typeof assetDetails.contentURL === 'string' ) { - contentURLs = [ assetDetails.contentURL ]; - } else if ( Array.isArray(assetDetails.contentURL) ) { - contentURLs = assetDetails.contentURL.slice(0); - } else { - contentURLs = []; - } - tryLoading(); - }); -}; - -/******************************************************************************/ - -api.put = function(assetKey, content, callback) { - assetCacheWrite(assetKey, content, callback); -}; - -/******************************************************************************/ - -api.metadata = function(callback) { - var assetRegistryReady = false, - cacheRegistryReady = false; - - var onReady = function() { - var assetDict = JSON.parse(JSON.stringify(assetSourceRegistry)), - cacheDict = assetCacheRegistry, - assetEntry, cacheEntry, - now = Date.now(), obsoleteAfter; - for ( var assetKey in assetDict ) { - assetEntry = assetDict[assetKey]; - cacheEntry = cacheDict[assetKey]; - if ( cacheEntry ) { - assetEntry.cached = true; - assetEntry.writeTime = cacheEntry.writeTime; - obsoleteAfter = cacheEntry.writeTime + assetEntry.updateAfter * 86400000; - assetEntry.obsolete = obsoleteAfter < now; - assetEntry.remoteURL = cacheEntry.remoteURL; - } else { - assetEntry.writeTime = 0; - obsoleteAfter = 0; - assetEntry.obsolete = true; - } - } - callback(assetDict); - }; - - getAssetSourceRegistry(function() { - assetRegistryReady = true; - if ( cacheRegistryReady ) { onReady(); } - }); - - getAssetCacheRegistry(function() { - cacheRegistryReady = true; - if ( assetRegistryReady ) { onReady(); } - }); -}; - -/******************************************************************************/ - -api.purge = assetCacheMarkAsDirty; - -api.remove = function(pattern, callback) { - assetCacheRemove(pattern, callback); -}; - -api.rmrf = function() { - assetCacheRemove(/./); -}; - -/******************************************************************************/ - -// Asset updater area. -var updaterStatus, - updaterTimer, - updaterAssetDelayDefault = 120000, - updaterAssetDelay = updaterAssetDelayDefault, - updaterUpdated = [], - updaterFetched = new Set(); - -var updateFirst = function() { - updaterStatus = 'updating'; - updaterFetched.clear(); - updaterUpdated = []; - fireNotification('before-assets-updated'); - updateNext(); -}; - -var updateNext = function() { - var assetDict, cacheDict; - - // This will remove a cached asset when it's no longer in use. - var garbageCollectOne = function(assetKey) { - var cacheEntry = cacheDict[assetKey]; - if ( cacheEntry && cacheEntry.readTime < assetCacheRegistryStartTime ) { - assetCacheRemove(assetKey); - } - }; - - var findOne = function() { - var now = Date.now(), - assetEntry, cacheEntry; - for ( var assetKey in assetDict ) { - assetEntry = assetDict[assetKey]; - if ( assetEntry.hasRemoteURL !== true ) { continue; } - if ( updaterFetched.has(assetKey) ) { continue; } - cacheEntry = cacheDict[assetKey]; - if ( cacheEntry && (cacheEntry.writeTime + assetEntry.updateAfter * 86400000) > now ) { - continue; - } - if ( - fireNotification( - 'before-asset-updated', - { - assetKey: assetKey, - type: assetEntry.type - } - ) - ) { - return assetKey; - } - garbageCollectOne(assetKey); - } - }; - - var updatedOne = function(details) { - if ( details.content !== '' ) { - updaterUpdated.push(details.assetKey); - if ( details.assetKey === 'assets.json' ) { - updateAssetSourceRegistry(details.content); - } - } else { - fireNotification('asset-update-failed', { assetKey: details.assetKey }); - } - if ( findOne() !== undefined ) { - vAPI.setTimeout(updateNext, updaterAssetDelay); - } else { - updateDone(); - } - }; - - var updateOne = function() { - var assetKey = findOne(); - if ( assetKey === undefined ) { - return updateDone(); - } - updaterFetched.add(assetKey); - getRemote(assetKey, updatedOne); - }; - - getAssetSourceRegistry(function(dict) { - assetDict = dict; - if ( !cacheDict ) { return; } - updateOne(); - }); - - getAssetCacheRegistry(function(dict) { - cacheDict = dict; - if ( !assetDict ) { return; } - updateOne(); - }); -}; - -var updateDone = function() { - var assetKeys = updaterUpdated.slice(0); - updaterFetched.clear(); - updaterUpdated = []; - updaterStatus = undefined; - updaterAssetDelay = updaterAssetDelayDefault; - fireNotification('after-assets-updated', { assetKeys: assetKeys }); -}; - -api.updateStart = function(details) { - var oldUpdateDelay = updaterAssetDelay, - newUpdateDelay = details.delay || updaterAssetDelayDefault; - updaterAssetDelay = Math.min(oldUpdateDelay, newUpdateDelay); - if ( updaterStatus !== undefined ) { - if ( newUpdateDelay < oldUpdateDelay ) { - clearTimeout(updaterTimer); - updaterTimer = vAPI.setTimeout(updateNext, updaterAssetDelay); - } - return; - } - updateFirst(); -}; - -api.updateStop = function() { - if ( updaterTimer ) { - clearTimeout(updaterTimer); - updaterTimer = undefined; - } - if ( updaterStatus !== undefined ) { - updateDone(); - } -}; - -/******************************************************************************/ - -return api; - -/******************************************************************************/ - -})(); - -/******************************************************************************/ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/background.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/background.js deleted file mode 100644 index 6c1f8ba..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/background.js +++ /dev/null @@ -1,227 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to black/white list requests. - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -'use strict'; - -/******************************************************************************/ - -const µMatrix = (function() { // jshint ignore:line - -/******************************************************************************/ - -const oneSecond = 1000; -const oneMinute = 60 * oneSecond; -const oneHour = 60 * oneMinute; -const oneDay = 24 * oneHour; - -/******************************************************************************* - - SVG-based icons below were extracted from - fontawesome-webfont.svg v4.7. Excerpt of copyright notice at - the top of the file: - - > Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 - > By ,,, - > Copyright Dave Gandy 2016. All rights reserved. - - Excerpt of the license information in the fontawesome CSS - file bundled with the package: - - > Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome - > License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - - Font icons: - - glyph-name: "external_link" - -*/ - -const rawSettingsDefault = { - contributorMode: false, - disableCSPReportInjection: false, - enforceEscapedFragment: true, - placeholderBackground: - [ - 'url("data:image/png;base64,', - 'iVBORw0KGgoAAAANSUhEUgAAAAoAAAAK', - 'CAAAAACoWZBhAAAABGdBTUEAALGPC/xh', - 'BQAAAAJiS0dEAP+Hj8y/AAAAB3RJTUUH', - '3wwIAAgyL/YaPAAAACJJREFUCFtjfMbO', - 'AAQ/gZiFnQPEBAEmGIMIJgtIL8QEgtoA', - 'In4D/96X1KAAAAAldEVYdGRhdGU6Y3Jl', - 'YXRlADIwMTUtMTItMDhUMDA6MDg6NTAr', - 'MDM6MDAasuuJAAAAJXRFWHRkYXRlOm1v', - 'ZGlmeQAyMDE1LTEyLTA4VDAwOjA4OjUw', - 'KzAzOjAwa+9TNQAAAABJRU5ErkJggg==', - '") ', - 'repeat scroll #fff' - ].join(''), - placeholderBorder: '1px solid rgba(0, 0, 0, 0.1)', - imagePlaceholder: true, - imagePlaceholderBackground: 'default', - imagePlaceholderBorder: 'default', - framePlaceholder: true, - framePlaceholderDocument: - [ - '', - '', - '', - '', - '', - '{{url}}', - '' - ].join(''), - framePlaceholderBackground: 'default', - suspendTabsUntilReady: false -}; - -/******************************************************************************/ - -return { - onBeforeStartQueue: [], - - userSettings: { - alwaysDetachLogger: false, - autoUpdate: true, - clearBrowserCache: true, - clearBrowserCacheAfter: 60, - cloudStorageEnabled: false, - collapseBlacklisted: true, - collapseBlocked: false, - colorBlindFriendly: false, - deleteCookies: false, - deleteUnusedSessionCookies: false, - deleteUnusedSessionCookiesAfter: 60, - deleteLocalStorage: false, - displayTextSize: '14px', - externalHostsFiles: [], - externalRecipeFiles: [], - iconBadgeEnabled: true, - maxLoggedRequests: 1000, - noTooltips: false, - popupCollapseAllDomains: false, - popupCollapseBlacklistedDomains: false, - popupScopeLevel: 'domain', - processHyperlinkAuditing: true, - selectedHostsFiles: [ '' ], - selectedRecipeFiles: [ '' ], - userHosts: { - enabled: false, - content: '' - }, - userRecipes: { - enabled: false, - content: '' - } - }, - - rawSettingsDefault: rawSettingsDefault, - rawSettings: (function() { - let out = Object.assign({}, rawSettingsDefault), - json = vAPI.localStorage.getItem('immediateRawSettings'); - if ( typeof json === 'string' ) { - try { - let o = JSON.parse(json); - if ( o instanceof Object ) { - for ( const k in o ) { - if ( out.hasOwnProperty(k) ) { - out[k] = o[k]; - } - } - } - } - catch(ex) { - } - } - return out; - })(), - rawSettingsWriteTime: 0, - - clearBrowserCacheCycle: 0, - cspNoInlineScript: "script-src 'unsafe-eval' blob: *", - cspNoInlineStyle: "style-src blob: *", - cspNoWorker: "worker-src 'none'; report-uri about:blank", - cantMergeCSPHeaders: false, - updateAssetsEvery: 11 * oneDay + 1 * oneHour + 1 * oneMinute + 1 * oneSecond, - firstUpdateAfter: 11 * oneMinute, - nextUpdateAfter: 11 * oneHour, - assetsBootstrapLocation: 'assets/assets.json', - pslAssetKey: 'public_suffix_list.dat', - - // list of live hosts files - liveHostsFiles: new Map(), - - // urls stats are kept on the back burner while waiting to be reactivated - // in a tab or another. - pageStores: new Map(), - pageStoresToken: 0, - pageStoreCemetery: new Map(), - - // page url => permission scope - tMatrix: null, - pMatrix: null, - - ubiquitousBlacklist: null, - - // various stats - cookieRemovedCounter: 0, - localStorageRemovedCounter: 0, - cookieHeaderFoiledCounter: 0, - hyperlinkAuditingFoiledCounter: 0, - browserCacheClearedCounter: 0, - storageUsed: 0, - - // record what the browser is doing behind the scene - behindTheSceneScope: 'behind-the-scene', - - noopFunc: function(){}, - - // so that I don't have to care for last comma - dummy: 0 -}; - -/******************************************************************************/ - -})(); - -/******************************************************************************/ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/browsercache.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/browsercache.js deleted file mode 100644 index 6f9cb8c..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/browsercache.js +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to black/white list requests. - Copyright (C) 2015-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -'use strict'; - -/******************************************************************************/ - -(function() { - -/******************************************************************************/ - -// Browser data jobs - -var clearCache = function() { - vAPI.setTimeout(clearCache, 15 * 60 * 1000); - - var µm = µMatrix; - if ( !µm.userSettings.clearBrowserCache ) { - return; - } - - µm.clearBrowserCacheCycle -= 15; - if ( µm.clearBrowserCacheCycle > 0 ) { - return; - } - - vAPI.browserData.clearCache(); - - µm.clearBrowserCacheCycle = µm.userSettings.clearBrowserCacheAfter; - µm.browserCacheClearedCounter++; - - // TODO: i18n - µm.logger.writeOne({ info: vAPI.i18n('loggerEntryBrowserCacheCleared') }); - - //console.debug('clearBrowserCacheCallback()> vAPI.browserData.clearCache() called'); -}; - -vAPI.setTimeout(clearCache, 15 * 60 * 1000); - -/******************************************************************************/ - -})(); - -/******************************************************************************/ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/cloud-ui.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/cloud-ui.js deleted file mode 100644 index 4394d58..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/cloud-ui.js +++ /dev/null @@ -1,209 +0,0 @@ -/******************************************************************************* - - uBlock Origin - a browser extension to block requests. - Copyright (C) 2015-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/* global uDom, faIconsInit */ - -'use strict'; - -/******************************************************************************/ - -(function() { - -/******************************************************************************/ - -self.cloud = { - options: {}, - datakey: '', - data: undefined, - onPush: null, - onPull: null -}; - -/******************************************************************************/ - -var widget = uDom.nodeFromId('cloudWidget'); -if ( widget === null ) { - return; -} - -self.cloud.datakey = widget.getAttribute('data-cloud-entry') || ''; -if ( self.cloud.datakey === '' ) { - return; -} - -/******************************************************************************/ - -var onCloudDataReceived = function(entry) { - if ( entry instanceof Object === false ) { return; } - - self.cloud.data = entry.data; - - uDom.nodeFromId('cloudPull').removeAttribute('disabled'); - uDom.nodeFromId('cloudPullAndMerge').removeAttribute('disabled'); - - let timeOptions = { - weekday: 'short', - year: 'numeric', - month: 'short', - day: 'numeric', - hour: 'numeric', - minute: 'numeric', - second: 'numeric', - timeZoneName: 'short' - }; - - let time = new Date(entry.tstamp); - widget.querySelector('[data-i18n="cloudNoData"]').textContent = - entry.source + '\n' + - time.toLocaleString('fullwide', timeOptions); -}; - -/******************************************************************************/ - -var fetchCloudData = function() { - vAPI.messaging.send( - 'cloud-ui.js', - { - what: 'cloudPull', - datakey: self.cloud.datakey - }, - onCloudDataReceived - ); -}; - -/******************************************************************************/ - -var pushData = function() { - if ( typeof self.cloud.onPush !== 'function' ) { - return; - } - vAPI.messaging.send( - 'cloud-ui.js', - { - what: 'cloudPush', - datakey: self.cloud.datakey, - data: self.cloud.onPush() - }, - fetchCloudData - ); -}; - -/******************************************************************************/ - -var pullData = function(ev) { - if ( typeof self.cloud.onPull === 'function' ) { - self.cloud.onPull(self.cloud.data, ev.shiftKey); - } -}; - -/******************************************************************************/ - -var pullAndMergeData = function() { - if ( typeof self.cloud.onPull === 'function' ) { - self.cloud.onPull(self.cloud.data, true); - } -}; - -/******************************************************************************/ - -var openOptions = function() { - let input = uDom.nodeFromId('cloudDeviceName'); - input.value = self.cloud.options.deviceName; - input.setAttribute('placeholder', self.cloud.options.defaultDeviceName); - uDom.nodeFromId('cloudOptions').classList.add('show'); -}; - -/******************************************************************************/ - -var closeOptions = function(ev) { - let root = uDom.nodeFromId('cloudOptions'); - if ( ev.target !== root ) { - return; - } - root.classList.remove('show'); -}; - -/******************************************************************************/ - -var submitOptions = function() { - let onOptions = function(options) { - if ( typeof options !== 'object' || options === null ) { - return; - } - self.cloud.options = options; - }; - - vAPI.messaging.send('cloud-ui.js', { - what: 'cloudSetOptions', - options: { - deviceName: uDom.nodeFromId('cloudDeviceName').value - } - }, onOptions); - uDom.nodeFromId('cloudOptions').classList.remove('show'); -}; - -/******************************************************************************/ - -var onInitialize = function(options) { - if ( typeof options !== 'object' || options === null ) { return; } - - if ( !options.enabled ) { return; } - self.cloud.options = options; - - let xhr = new XMLHttpRequest(); - xhr.open('GET', 'cloud-ui.html', true); - xhr.overrideMimeType('text/html;charset=utf-8'); - xhr.responseType = 'text'; - xhr.onload = function() { - this.onload = null; - let parser = new DOMParser(), - parsed = parser.parseFromString(this.responseText, 'text/html'), - fromParent = parsed.body; - while ( fromParent.firstElementChild !== null ) { - widget.appendChild( - document.adoptNode(fromParent.firstElementChild) - ); - } - - faIconsInit(widget); - - vAPI.i18n.render(widget); - widget.classList.remove('hide'); - - uDom('#cloudPush').on('click', pushData); - uDom('#cloudPull').on('click', pullData); - uDom('#cloudPullAndMerge').on('click', pullAndMergeData); - uDom('#cloudCog').on('click', openOptions); - uDom('#cloudOptions').on('click', closeOptions); - uDom('#cloudOptionsSubmit').on('click', submitOptions); - - fetchCloudData(); - }; - xhr.send(); -}; - -vAPI.messaging.send('cloud-ui.js', { what: 'cloudGetOptions' }, onInitialize); - -/******************************************************************************/ - -// https://www.youtube.com/watch?v=aQFp67VoiDA - -})(); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/contentscript-no-inline-script.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/contentscript-no-inline-script.js deleted file mode 100644 index 746d744..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/contentscript-no-inline-script.js +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************************* - - uMatrix - a Chromium browser extension to black/white list requests. - Copyright (C) 2018 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -'use strict'; - -// The idea of using to enforce CSP directive has been -// borrowed from NoScript: -// https://github.com/hackademix/noscript/commit/6e80d3f130773fc9a9123c5c4c2e97d63e90fa2a - -(function() { - let html = document.documentElement; - if ( html instanceof HTMLElement === false ) { return; } - - let meta; - try { - meta = document.createElement('meta'); - } catch(ex) { - } - if ( meta === undefined ) { return; } - meta.setAttribute('http-equiv', 'content-security-policy'); - meta.setAttribute('content', "script-src 'unsafe-eval' blob: *"); - - // https://html.spec.whatwg.org/multipage/semantics.html#attr-meta-http-equiv-content-security-policy - // - // Only a head element can be parent: - // > If the meta element is not a child of a head element, return. - // - // The CSP directive is enforced as soon as the meta tag is inserted: - // > Enforce the policy policy. - let head = document.head, - parent = head; - if ( parent === null ) { - parent = document.createElement('head'); - html.appendChild(parent); - } - parent.appendChild(meta); - - // Restore DOM to its original state. - if ( head === null ) { - html.removeChild(parent); - } else { - parent.removeChild(meta); - } -})(); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/contentscript-no-workers.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/contentscript-no-workers.js deleted file mode 100644 index 5f951a8..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/contentscript-no-workers.js +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************************* - - uMatrix - a Chromium browser extension to black/white list requests. - Copyright (C) 2018 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -'use strict'; - -// The idea of using to enforce CSP directive has been -// borrowed from NoScript: -// https://github.com/hackademix/noscript/commit/6e80d3f130773fc9a9123c5c4c2e97d63e90fa2a - -(function() { - let html = document.documentElement; - if ( html instanceof HTMLElement === false ) { return; } - - let meta; - try { - meta = document.createElement('meta'); - } catch(ex) { - } - if ( meta === undefined ) { return; } - meta.setAttribute('http-equiv', 'content-security-policy'); - meta.setAttribute('content', "worker-src 'none'"); - - // https://html.spec.whatwg.org/multipage/semantics.html#attr-meta-http-equiv-content-security-policy - // - // Only a head element can be parent: - // > If the meta element is not a child of a head element, return. - // - // The CSP directive is enforced as soon as the meta tag is inserted: - // > Enforce the policy policy. - let head = document.head, - parent = head; - if ( parent === null ) { - parent = document.createElement('head'); - html.appendChild(parent); - } - parent.appendChild(meta); - - // Restore DOM to its original state. - if ( head === null ) { - html.removeChild(parent); - } else { - parent.removeChild(meta); - } -})(); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/contentscript-start.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/contentscript-start.js deleted file mode 100644 index 2a9b2e3..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/contentscript-start.js +++ /dev/null @@ -1,96 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to black/white list requests. - Copyright (C) 2017-2018 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -'use strict'; - -/******************************************************************************/ -/******************************************************************************/ - -// Injected into content pages - -(function() { - - if ( typeof vAPI !== 'object' ) { return; } - - vAPI.selfWorkerSrcReported = vAPI.selfWorkerSrcReported || false; - - var reGoodWorkerSrc = /(?:child|worker)-src[^;,]+?'none'/; - - var handler = function(ev) { - if ( - ev.isTrusted !== true || - ev.originalPolicy.includes('report-uri about:blank') === false - ) { - return false; - } - - // Firefox and Chromium differs in how they fill the - // 'effectiveDirective' property. - if ( - ev.effectiveDirective.startsWith('worker-src') === false && - ev.effectiveDirective.startsWith('child-src') === false - ) { - return false; - } - - // Further validate that the policy violation is relevant to uMatrix: - // the event still could have been fired as a result of a CSP header - // not injected by uMatrix. - if ( reGoodWorkerSrc.test(ev.originalPolicy) === false ) { - return false; - } - - // We do not want to report internal resources more than once. - // However, we do want to report external resources each time. - // TODO: this could eventually lead to duplicated reports for external - // resources if another extension uses the same approach as - // uMatrix. Think about what could be done to avoid duplicate - // reports. - if ( ev.blockedURI.includes('://') === false ) { - if ( vAPI.selfWorkerSrcReported ) { return true; } - vAPI.selfWorkerSrcReported = true; - } - - vAPI.messaging.send( - 'contentscript.js', - { - what: 'securityPolicyViolation', - directive: 'worker-src', - blockedURI: ev.blockedURI, - documentURI: ev.documentURI, - blocked: ev.disposition === 'enforce' - } - ); - - return true; - }; - - document.addEventListener( - 'securitypolicyviolation', - function(ev) { - if ( !handler(ev) ) { return; } - ev.stopPropagation(); - ev.preventDefault(); - }, - true - ); - -})(); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/contentscript.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/contentscript.js deleted file mode 100644 index 7ad0be8..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/contentscript.js +++ /dev/null @@ -1,552 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to black/white list requests. - Copyright (C) 2014-2018 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -/* global HTMLDocument, XMLDocument */ - -'use strict'; - -/******************************************************************************/ -/******************************************************************************/ - -// Injected into content pages - -(function() { - -/******************************************************************************/ - -// https://github.com/chrisaljoudi/uBlock/issues/464 -// https://github.com/gorhill/uMatrix/issues/621 -if ( - document instanceof HTMLDocument === false && - document instanceof XMLDocument === false -) { - return; -} - -// This can also happen (for example if script injected into a `data:` URI doc) -if ( !window.location ) { - return; -} - -// This can happen -if ( typeof vAPI !== 'object' ) { - //console.debug('contentscript.js > vAPI not found'); - return; -} - -// https://github.com/chrisaljoudi/uBlock/issues/456 -// Already injected? -if ( vAPI.contentscriptEndInjected ) { - //console.debug('contentscript.js > content script already injected'); - return; -} -vAPI.contentscriptEndInjected = true; - -/******************************************************************************/ -/******************************************************************************/ - -// Executed only once. - -(function() { - var localStorageHandler = function(mustRemove) { - if ( mustRemove ) { - window.localStorage.clear(); - window.sessionStorage.clear(); - } - }; - - // Check with extension whether local storage must be emptied - // rhill 2014-03-28: we need an exception handler in case 3rd-party access - // to site data is disabled. - // https://github.com/gorhill/httpswitchboard/issues/215 - try { - var hasLocalStorage = - window.localStorage && window.localStorage.length !== 0; - var hasSessionStorage = - window.sessionStorage && window.sessionStorage.length !== 0; - if ( hasLocalStorage || hasSessionStorage ) { - vAPI.messaging.send('contentscript.js', { - what: 'contentScriptHasLocalStorage', - originURL: window.location.origin - }, localStorageHandler); - } - - // TODO: indexedDB - //if ( window.indexedDB && !!window.indexedDB.webkitGetDatabaseNames ) { - // var db = window.indexedDB.webkitGetDatabaseNames().onsuccess = function(sender) { - // console.debug('webkitGetDatabaseNames(): result=%o', sender.target.result); - // }; - //} - - // TODO: Web SQL - // if ( window.openDatabase ) { - // Sad: - // "There is no way to enumerate or delete the databases available for an origin from this API." - // Ref.: http://www.w3.org/TR/webdatabase/#databases - // } - } - catch (e) { - } -})(); - -/******************************************************************************/ -/******************************************************************************/ - -// https://github.com/gorhill/uMatrix/issues/45 - -var collapser = (function() { - var resquestIdGenerator = 1, - processTimer, - toProcess = [], - toFilter = [], - toCollapse = new Map(), - cachedBlockedMap, - cachedBlockedMapHash, - cachedBlockedMapTimer, - reURLPlaceholder = /\{\{url\}\}/g; - var src1stProps = { - 'embed': 'src', - 'frame': 'src', - 'iframe': 'src', - 'img': 'src', - 'object': 'data' - }; - var src2ndProps = { - 'img': 'srcset' - }; - var tagToTypeMap = { - embed: 'media', - frame: 'frame', - iframe: 'frame', - img: 'image', - object: 'media' - }; - var cachedBlockedSetClear = function() { - cachedBlockedMap = - cachedBlockedMapHash = - cachedBlockedMapTimer = undefined; - }; - - // https://github.com/chrisaljoudi/uBlock/issues/174 - // Do not remove fragment from src URL - var onProcessed = function(response) { - if ( !response ) { // This happens if uBO is disabled or restarted. - toCollapse.clear(); - return; - } - - var targets = toCollapse.get(response.id); - if ( targets === undefined ) { return; } - toCollapse.delete(response.id); - if ( cachedBlockedMapHash !== response.hash ) { - cachedBlockedMap = new Map(response.blockedResources); - cachedBlockedMapHash = response.hash; - if ( cachedBlockedMapTimer !== undefined ) { - clearTimeout(cachedBlockedMapTimer); - } - cachedBlockedMapTimer = vAPI.setTimeout(cachedBlockedSetClear, 30000); - } - if ( cachedBlockedMap === undefined || cachedBlockedMap.size === 0 ) { - return; - } - - let placeholders = response.placeholders; - - for ( let target of targets ) { - let tag = target.localName; - let prop = src1stProps[tag]; - if ( prop === undefined ) { continue; } - let src = target[prop]; - if ( typeof src !== 'string' || src.length === 0 ) { - prop = src2ndProps[tag]; - if ( prop === undefined ) { continue; } - src = target[prop]; - if ( typeof src !== 'string' || src.length === 0 ) { continue; } - } - let collapsed = cachedBlockedMap.get(tagToTypeMap[tag] + ' ' + src); - if ( collapsed === undefined ) { continue; } - if ( collapsed ) { - target.style.setProperty('display', 'none', 'important'); - target.hidden = true; - continue; - } - switch ( tag ) { - case 'frame': - case 'iframe': - if ( placeholders.frame !== true ) { break; } - let docurl = - 'data:text/html,' + - encodeURIComponent( - placeholders.frameDocument.replace( - reURLPlaceholder, - src - ) - ); - let replaced = false; - // Using contentWindow.location prevent tainting browser - // history -- i.e. breaking back button (seen on Chromium). - if ( target.contentWindow ) { - try { - target.contentWindow.location.replace(docurl); - replaced = true; - } catch(ex) { - } - } - if ( !replaced ) { - target.setAttribute('src', docurl); - } - break; - case 'img': - if ( placeholders.image !== true ) { break; } - // Do not insert placeholder if the image was actually loaded. - // This can happen if an allow rule was created while the - // document was loading. - if ( - target.complete && - target.naturalWidth !== 0 && - target.naturalHeight !== 0 - ) { - break; - } - target.style.setProperty('display', 'inline-block'); - target.style.setProperty('min-width', '20px', 'important'); - target.style.setProperty('min-height', '20px', 'important'); - target.style.setProperty( - 'border', - placeholders.imageBorder, - 'important' - ); - target.style.setProperty( - 'background', - placeholders.imageBackground, - 'important' - ); - break; - } - } - }; - - var send = function() { - processTimer = undefined; - toCollapse.set(resquestIdGenerator, toProcess); - var msg = { - what: 'lookupBlockedCollapsibles', - id: resquestIdGenerator, - toFilter: toFilter, - hash: cachedBlockedMapHash - }; - vAPI.messaging.send('contentscript.js', msg, onProcessed); - toProcess = []; - toFilter = []; - resquestIdGenerator += 1; - }; - - var process = function(delay) { - if ( toProcess.length === 0 ) { return; } - if ( delay === 0 ) { - if ( processTimer !== undefined ) { - clearTimeout(processTimer); - } - send(); - } else if ( processTimer === undefined ) { - processTimer = vAPI.setTimeout(send, delay || 47); - } - }; - - var add = function(target) { - toProcess.push(target); - }; - - var addMany = function(targets) { - var i = targets.length; - while ( i-- ) { - toProcess.push(targets[i]); - } - }; - - var iframeSourceModified = function(mutations) { - var i = mutations.length; - while ( i-- ) { - addIFrame(mutations[i].target, true); - } - process(); - }; - var iframeSourceObserver; - var iframeSourceObserverOptions = { - attributes: true, - attributeFilter: [ 'src' ] - }; - - var addIFrame = function(iframe, dontObserve) { - // https://github.com/gorhill/uBlock/issues/162 - // Be prepared to deal with possible change of src attribute. - if ( dontObserve !== true ) { - if ( iframeSourceObserver === undefined ) { - iframeSourceObserver = new MutationObserver(iframeSourceModified); - } - iframeSourceObserver.observe(iframe, iframeSourceObserverOptions); - } - var src = iframe.src; - if ( src === '' || typeof src !== 'string' ) { return; } - if ( src.startsWith('http') === false ) { return; } - toFilter.push({ type: 'frame', url: iframe.src }); - add(iframe); - }; - - var addIFrames = function(iframes) { - var i = iframes.length; - while ( i-- ) { - addIFrame(iframes[i]); - } - }; - - var addNodeList = function(nodeList) { - var node, - i = nodeList.length; - while ( i-- ) { - node = nodeList[i]; - if ( node.nodeType !== 1 ) { continue; } - if ( node.localName === 'iframe' || node.localName === 'frame' ) { - addIFrame(node); - } - if ( node.childElementCount !== 0 ) { - addIFrames(node.querySelectorAll('iframe, frame')); - } - } - }; - - var onResourceFailed = function(ev) { - if ( tagToTypeMap[ev.target.localName] !== undefined ) { - add(ev.target); - process(); - } - }; - document.addEventListener('error', onResourceFailed, true); - - vAPI.shutdown.add(function() { - document.removeEventListener('error', onResourceFailed, true); - if ( iframeSourceObserver !== undefined ) { - iframeSourceObserver.disconnect(); - iframeSourceObserver = undefined; - } - if ( processTimer !== undefined ) { - clearTimeout(processTimer); - processTimer = undefined; - } - }); - - return { - addMany: addMany, - addIFrames: addIFrames, - addNodeList: addNodeList, - process: process - }; -})(); - -/******************************************************************************/ -/******************************************************************************/ - -// Observe changes in the DOM - -// Added node lists will be cumulated here before being processed - -(function() { - // This fixes http://acid3.acidtests.org/ - if ( !document.body ) { return; } - - var addedNodeLists = []; - var addedNodeListsTimer; - - var treeMutationObservedHandler = function() { - addedNodeListsTimer = undefined; - var i = addedNodeLists.length; - while ( i-- ) { - collapser.addNodeList(addedNodeLists[i]); - } - collapser.process(); - addedNodeLists = []; - }; - - // https://github.com/gorhill/uBlock/issues/205 - // Do not handle added node directly from within mutation observer. - var treeMutationObservedHandlerAsync = function(mutations) { - var iMutation = mutations.length, - nodeList; - while ( iMutation-- ) { - nodeList = mutations[iMutation].addedNodes; - if ( nodeList.length !== 0 ) { - addedNodeLists.push(nodeList); - } - } - if ( addedNodeListsTimer === undefined ) { - addedNodeListsTimer = vAPI.setTimeout(treeMutationObservedHandler, 47); - } - }; - - // https://github.com/gorhill/httpswitchboard/issues/176 - var treeObserver = new MutationObserver(treeMutationObservedHandlerAsync); - treeObserver.observe(document.body, { - childList: true, - subtree: true - }); - - vAPI.shutdown.add(function() { - if ( addedNodeListsTimer !== undefined ) { - clearTimeout(addedNodeListsTimer); - addedNodeListsTimer = undefined; - } - if ( treeObserver !== null ) { - treeObserver.disconnect(); - treeObserver = undefined; - } - addedNodeLists = []; - }); -})(); - -/******************************************************************************/ -/******************************************************************************/ - -// Executed only once. -// -// https://github.com/gorhill/httpswitchboard/issues/25 -// -// https://github.com/gorhill/httpswitchboard/issues/131 -// Looks for inline javascript also in at least one a[href] element. -// -// https://github.com/gorhill/uMatrix/issues/485 -// Mind "on..." attributes. -// -// https://github.com/gorhill/uMatrix/issues/924 -// Report inline styles. - -(function() { - if ( - document.querySelector('script:not([src])') !== null || - document.querySelector('a[href^="javascript:"]') !== null || - document.querySelector('[onabort],[onblur],[oncancel],[oncanplay],[oncanplaythrough],[onchange],[onclick],[onclose],[oncontextmenu],[oncuechange],[ondblclick],[ondrag],[ondragend],[ondragenter],[ondragexit],[ondragleave],[ondragover],[ondragstart],[ondrop],[ondurationchange],[onemptied],[onended],[onerror],[onfocus],[oninput],[oninvalid],[onkeydown],[onkeypress],[onkeyup],[onload],[onloadeddata],[onloadedmetadata],[onloadstart],[onmousedown],[onmouseenter],[onmouseleave],[onmousemove],[onmouseout],[onmouseover],[onmouseup],[onwheel],[onpause],[onplay],[onplaying],[onprogress],[onratechange],[onreset],[onresize],[onscroll],[onseeked],[onseeking],[onselect],[onshow],[onstalled],[onsubmit],[onsuspend],[ontimeupdate],[ontoggle],[onvolumechange],[onwaiting],[onafterprint],[onbeforeprint],[onbeforeunload],[onhashchange],[onlanguagechange],[onmessage],[onoffline],[ononline],[onpagehide],[onpageshow],[onrejectionhandled],[onpopstate],[onstorage],[onunhandledrejection],[onunload],[oncopy],[oncut],[onpaste]') !== null - ) { - vAPI.messaging.send('contentscript.js', { - what: 'securityPolicyViolation', - directive: 'script-src', - documentURI: window.location.href - }); - } - - if ( document.querySelector('style,[style]') !== null ) { - vAPI.messaging.send('contentscript.js', { - what: 'securityPolicyViolation', - directive: 'style-src', - documentURI: window.location.href - }); - } - - collapser.addMany(document.querySelectorAll('img')); - collapser.addIFrames(document.querySelectorAll('iframe, frame')); - collapser.process(); -})(); - -/******************************************************************************/ -/******************************************************************************/ - -// Executed only once. - -// https://github.com/gorhill/uMatrix/issues/232 -// Force `display` property, Firefox is still affected by the issue. - -(function() { - var noscripts = document.querySelectorAll('noscript'); - if ( noscripts.length === 0 ) { return; } - - var redirectTimer, - reMetaContent = /^\s*(\d+)\s*;\s*url=(['"]?)([^'"]+)\2/i, - reSafeURL = /^https?:\/\//; - - var autoRefresh = function(root) { - var meta = root.querySelector('meta[http-equiv="refresh"][content]'); - if ( meta === null ) { return; } - var match = reMetaContent.exec(meta.getAttribute('content')); - if ( match === null || match[3].trim() === '' ) { return; } - var url = new URL(match[3], document.baseURI); - if ( reSafeURL.test(url.href) === false ) { return; } - redirectTimer = setTimeout( - function() { - location.assign(url.href); - }, - parseInt(match[1], 10) * 1000 + 1 - ); - meta.parentNode.removeChild(meta); - }; - - var morphNoscript = function(from) { - if ( /^application\/(?:xhtml\+)?xml/.test(document.contentType) ) { - var to = document.createElement('span'); - while ( from.firstChild !== null ) { - to.appendChild(from.firstChild); - } - return to; - } - var parser = new DOMParser(); - var doc = parser.parseFromString( - '' + from.textContent + '', - 'text/html' - ); - return document.adoptNode(doc.querySelector('span')); - }; - - var renderNoscriptTags = function(response) { - if ( response !== true ) { return; } - var parent, span; - for ( var noscript of noscripts ) { - parent = noscript.parentNode; - if ( parent === null ) { continue; } - span = morphNoscript(noscript); - span.style.setProperty('display', 'inline', 'important'); - if ( redirectTimer === undefined ) { - autoRefresh(span); - } - parent.replaceChild(span, noscript); - } - }; - - vAPI.messaging.send( - 'contentscript.js', - { what: 'mustRenderNoscriptTags?' }, - renderNoscriptTags - ); -})(); - -/******************************************************************************/ -/******************************************************************************/ - -vAPI.messaging.send( - 'contentscript.js', - { what: 'shutdown?' }, - function(response) { - if ( response === true ) { - vAPI.shutdown.exec(); - } - } -); - -/******************************************************************************/ -/******************************************************************************/ - -})(); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/cookies.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/cookies.js deleted file mode 100644 index 36029f8..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/cookies.js +++ /dev/null @@ -1,557 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to black/white list requests. - Copyright (C) 2013-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -// rhill 2013-12-14: the whole cookie management has been rewritten so as -// to avoid having to call chrome API whenever a single cookie changes, and -// to record cookie for a web page *only* when its value changes. -// https://github.com/gorhill/httpswitchboard/issues/79 - -"use strict"; - -/******************************************************************************/ - -// Isolate from global namespace - -// Use cached-context approach rather than object-based approach, as details -// of the implementation do not need to be visible - -µMatrix.cookieHunter = (function() { - -/******************************************************************************/ - -var µm = µMatrix; - -var recordPageCookiesQueue = new Map(); -var removeCookieQueue = new Set(); -var cookieDict = new Map(); -var cookieEntryJunkyard = []; -var processRemoveQueuePeriod = 2 * 60 * 1000; -var processCleanPeriod = 10 * 60 * 1000; -var processPageRecordQueueTimer = null; - -/******************************************************************************/ - -var CookieEntry = function(cookie) { - this.usedOn = new Set(); - this.init(cookie); -}; - -CookieEntry.prototype.init = function(cookie) { - this.secure = cookie.secure; - this.session = cookie.session; - this.anySubdomain = cookie.domain.charAt(0) === '.'; - this.hostname = this.anySubdomain ? cookie.domain.slice(1) : cookie.domain; - this.domain = µm.URI.domainFromHostname(this.hostname) || this.hostname; - this.path = cookie.path; - this.name = cookie.name; - this.value = cookie.value; - this.tstamp = Date.now(); - this.usedOn.clear(); - return this; -}; - -// Release anything which may consume too much memory - -CookieEntry.prototype.dispose = function() { - this.hostname = ''; - this.domain = ''; - this.path = ''; - this.name = ''; - this.value = ''; - this.usedOn.clear(); - return this; -}; - -/******************************************************************************/ - -var addCookieToDict = function(cookie) { - var cookieKey = cookieKeyFromCookie(cookie), - cookieEntry = cookieDict.get(cookieKey); - if ( cookieEntry === undefined ) { - cookieEntry = cookieEntryJunkyard.pop(); - if ( cookieEntry ) { - cookieEntry.init(cookie); - } else { - cookieEntry = new CookieEntry(cookie); - } - cookieDict.set(cookieKey, cookieEntry); - } - return cookieEntry; -}; - -/******************************************************************************/ - -var addCookiesToDict = function(cookies) { - var i = cookies.length; - while ( i-- ) { - addCookieToDict(cookies[i]); - } -}; - -/******************************************************************************/ - -var removeCookieFromDict = function(cookieKey) { - var cookieEntry = cookieDict.get(cookieKey); - if ( cookieEntry === undefined ) { return false; } - cookieDict.delete(cookieKey); - if ( cookieEntryJunkyard.length < 25 ) { - cookieEntryJunkyard.push(cookieEntry.dispose()); - } - return true; -}; - -/******************************************************************************/ - -var cookieKeyBuilder = [ - '', // 0 = scheme - '://', - '', // 2 = domain - '', // 3 = path - '{', - '', // 5 = persistent or session - '-cookie:', - '', // 7 = name - '}' -]; - -var cookieKeyFromCookie = function(cookie) { - var cb = cookieKeyBuilder; - cb[0] = cookie.secure ? 'https' : 'http'; - cb[2] = cookie.domain.charAt(0) === '.' ? cookie.domain.slice(1) : cookie.domain; - cb[3] = cookie.path; - cb[5] = cookie.session ? 'session' : 'persistent'; - cb[7] = cookie.name; - return cb.join(''); -}; - -var cookieKeyFromCookieURL = function(url, type, name) { - var µmuri = µm.URI.set(url); - var cb = cookieKeyBuilder; - cb[0] = µmuri.scheme; - cb[2] = µmuri.hostname; - cb[3] = µmuri.path; - cb[5] = type; - cb[7] = name; - return cb.join(''); -}; - -/******************************************************************************/ - -var cookieURLFromCookieEntry = function(entry) { - if ( !entry ) { - return ''; - } - return (entry.secure ? 'https://' : 'http://') + entry.hostname + entry.path; -}; - -/******************************************************************************/ - -var cookieMatchDomains = function(cookieKey, allHostnamesString) { - var cookieEntry = cookieDict.get(cookieKey); - if ( cookieEntry === undefined ) { return false; } - if ( allHostnamesString.indexOf(' ' + cookieEntry.hostname + ' ') < 0 ) { - if ( !cookieEntry.anySubdomain ) { - return false; - } - if ( allHostnamesString.indexOf('.' + cookieEntry.hostname + ' ') < 0 ) { - return false; - } - } - return true; -}; - -/******************************************************************************/ - -// Look for cookies to record for a specific web page - -var recordPageCookiesAsync = function(pageStore) { - // Store the page stats objects so that it doesn't go away - // before we handle the job. - // rhill 2013-10-19: pageStore could be nil, for example, this can - // happens if a file:// ... makes an xmlHttpRequest - if ( !pageStore ) { return; } - recordPageCookiesQueue.set(pageStore.pageUrl, pageStore); - if ( processPageRecordQueueTimer !== null ) { return; } - processPageRecordQueueTimer = vAPI.setTimeout(processPageRecordQueue, 1000); -}; - -/******************************************************************************/ - -var recordPageCookie = (function() { - let queue = new Map(); - let queueTimer; - let cookieLogEntryBuilder = [ '', '{', '', '-cookie:', '', '}' ]; - - let process = function() { - queueTimer = undefined; - for ( let qentry of queue ) { - let pageStore = qentry[0]; - if ( pageStore.tabId === '' ) { continue; } - for ( let cookieKey of qentry[1] ) { - let cookieEntry = cookieDict.get(cookieKey); - if ( cookieEntry === undefined ) { continue; } - let blocked = µm.mustBlock( - pageStore.pageHostname, - cookieEntry.hostname, - 'cookie' - ); - // https://github.com/gorhill/httpswitchboard/issues/60 - // Need to URL-encode cookie name - cookieLogEntryBuilder[0] = - cookieURLFromCookieEntry(cookieEntry); - cookieLogEntryBuilder[2] = - cookieEntry.session ? 'session' : 'persistent'; - cookieLogEntryBuilder[4] = - encodeURIComponent(cookieEntry.name); - let cookieURL = cookieLogEntryBuilder.join(''); - pageStore.recordRequest('cookie', cookieURL, blocked); - µm.logger.writeOne({ - tabId: pageStore.tabId, - srcHn: pageStore.pageHostname, - desHn: cookieEntry.hostname, - desURL: cookieURL, - type: 'cookie', - blocked - }); - cookieEntry.usedOn.add(pageStore.pageHostname); - if ( !blocked ) { continue; } - if ( µm.userSettings.deleteCookies ) { - removeCookieAsync(cookieKey); - } - µm.updateBadgeAsync(pageStore.tabId); - } - } - queue.clear(); - }; - - return function(pageStore, cookieKey) { - if ( vAPI.isBehindTheSceneTabId(pageStore.tabId) ) { return; } - let entry = queue.get(pageStore); - if ( entry === undefined ) { - queue.set(pageStore, (entry = new Set())); - } - if ( entry.has(cookieKey) ) { return; } - entry.add(cookieKey); - if ( queueTimer === undefined ) { - queueTimer = vAPI.setTimeout(process, 277); - } - }; -})(); - -/******************************************************************************/ - -// Candidate for removal - -var removeCookieAsync = function(cookieKey) { - removeCookieQueue.add(cookieKey); -}; - -/******************************************************************************/ - -var chromeCookieRemove = function(cookieEntry, name) { - var url = cookieURLFromCookieEntry(cookieEntry); - if ( url === '' ) { return; } - - var sessionCookieKey = cookieKeyFromCookieURL(url, 'session', name); - var persistCookieKey = cookieKeyFromCookieURL(url, 'persistent', name); - var callback = function(details) { - var success = !!details; - var template = success ? i18nCookieDeleteSuccess : i18nCookieDeleteFailure; - if ( removeCookieFromDict(sessionCookieKey) ) { - if ( success ) { - µm.cookieRemovedCounter += 1; - } - µm.logger.writeOne({ - info: template.replace('{{value}}', sessionCookieKey) - }); - } - if ( removeCookieFromDict(persistCookieKey) ) { - if ( success ) { - µm.cookieRemovedCounter += 1; - } - µm.logger.writeOne({ - info: template.replace('{{value}}', persistCookieKey) - }); - } - }; - - vAPI.cookies.remove({ url: url, name: name }, callback); -}; - -var i18nCookieDeleteSuccess = vAPI.i18n('loggerEntryCookieDeleted'); -var i18nCookieDeleteFailure = vAPI.i18n('loggerEntryDeleteCookieError'); - -/******************************************************************************/ - -var processPageRecordQueue = function() { - processPageRecordQueueTimer = null; - - for ( var pageStore of recordPageCookiesQueue.values() ) { - findAndRecordPageCookies(pageStore); - } - recordPageCookiesQueue.clear(); -}; - -/******************************************************************************/ - -// Effectively remove cookies. - -var processRemoveQueue = function() { - var userSettings = µm.userSettings; - var deleteCookies = userSettings.deleteCookies; - - // Session cookies which timestamp is *after* tstampObsolete will - // be left untouched - // https://github.com/gorhill/httpswitchboard/issues/257 - var tstampObsolete = userSettings.deleteUnusedSessionCookies ? - Date.now() - userSettings.deleteUnusedSessionCookiesAfter * 60 * 1000 : - 0; - - var srcHostnames; - var cookieEntry; - - for ( var cookieKey of removeCookieQueue ) { - // rhill 2014-05-12: Apparently this can happen. I have to - // investigate how (A session cookie has same name as a - // persistent cookie?) - cookieEntry = cookieDict.get(cookieKey); - if ( cookieEntry === undefined ) { continue; } - - // Delete obsolete session cookies: enabled. - if ( tstampObsolete !== 0 && cookieEntry.session ) { - if ( cookieEntry.tstamp < tstampObsolete ) { - chromeCookieRemove(cookieEntry, cookieEntry.name); - continue; - } - } - - // Delete all blocked cookies: disabled. - if ( deleteCookies === false ) { - continue; - } - - // Query scopes only if we are going to use them - if ( srcHostnames === undefined ) { - srcHostnames = µm.tMatrix.extractAllSourceHostnames(); - } - - // Ensure cookie is not allowed on ALL current web pages: It can - // happen that a cookie is blacklisted on one web page while - // being whitelisted on another (because of per-page permissions). - if ( canRemoveCookie(cookieKey, srcHostnames) ) { - chromeCookieRemove(cookieEntry, cookieEntry.name); - } - } - - removeCookieQueue.clear(); - - vAPI.setTimeout(processRemoveQueue, processRemoveQueuePeriod); -}; - -/******************************************************************************/ - -// Once in a while, we go ahead and clean everything that might have been -// left behind. - -// Remove only some of the cookies which are candidate for removal: who knows, -// maybe a user has 1000s of cookies sitting in his browser... - -var processClean = function() { - var us = µm.userSettings; - if ( us.deleteCookies || us.deleteUnusedSessionCookies ) { - var cookieKeys = Array.from(cookieDict.keys()), - len = cookieKeys.length, - step, offset, n; - if ( len > 25 ) { - step = len / 25; - offset = Math.floor(Math.random() * len); - n = 25; - } else { - step = 1; - offset = 0; - n = len; - } - var i = offset; - while ( n-- ) { - removeCookieAsync(cookieKeys[Math.floor(i % len)]); - i += step; - } - } - - vAPI.setTimeout(processClean, processCleanPeriod); -}; - -/******************************************************************************/ - -var findAndRecordPageCookies = function(pageStore) { - for ( var cookieKey of cookieDict.keys() ) { - if ( cookieMatchDomains(cookieKey, pageStore.allHostnamesString) ) { - recordPageCookie(pageStore, cookieKey); - } - } -}; - -/******************************************************************************/ - -var canRemoveCookie = function(cookieKey, srcHostnames) { - var cookieEntry = cookieDict.get(cookieKey); - if ( cookieEntry === undefined ) { return false; } - - var cookieHostname = cookieEntry.hostname; - var srcHostname; - - for ( srcHostname of cookieEntry.usedOn ) { - if ( µm.mustAllow(srcHostname, cookieHostname, 'cookie') ) { - return false; - } - } - // Maybe there is a scope in which the cookie is 1st-party-allowed. - // For example, if I am logged in into `github.com`, I do not want to be - // logged out just because I did not yet open a `github.com` page after - // re-starting the browser. - srcHostname = cookieHostname; - var pos; - for (;;) { - if ( srcHostnames.has(srcHostname) ) { - if ( µm.mustAllow(srcHostname, cookieHostname, 'cookie') ) { - return false; - } - } - if ( srcHostname === cookieEntry.domain ) { - break; - } - pos = srcHostname.indexOf('.'); - if ( pos === -1 ) { - break; - } - srcHostname = srcHostname.slice(pos + 1); - } - return true; -}; - -/******************************************************************************/ - -// Listen to any change in cookieland, we will update page stats accordingly. -// -// https://github.com/gorhill/httpswitchboard/issues/79 -// If cookie value didn't change, no need to record. - -vAPI.cookies.onChanged = (function() { - let queue = new Map(); - let queueTimer; - - // Go through all pages and update if needed, as one cookie can be used - // by many web pages, so they need to be recorded for all these pages. - - let process = function() { - queueTimer = undefined; - let now = Date.now(); - let cookieKeys = []; - for ( let qentry of queue ) { - if ( qentry[1] > now ) { continue; } - if ( cookieDict.has(qentry[0]) === false ) { continue; } - cookieKeys.push(qentry[0]); - queue.delete(qentry[0]); - } - if ( cookieKeys.length !== 0 ) { - for ( let pageStore of µm.pageStores.values() ) { - let allHostnamesString = pageStore.allHostnamesString; - for ( let cookieKey of cookieKeys ) { - if ( cookieMatchDomains(cookieKey, allHostnamesString) ) { - recordPageCookie(pageStore, cookieKey); - } - } - } - } - if ( queue.size !== 0 ) { - queueTimer = vAPI.setTimeout(process, 797); - } - }; - - return function(cookie) { - let cookieKey = cookieKeyFromCookie(cookie); - let cookieEntry = cookieDict.get(cookieKey); - if ( cookieEntry === undefined ) { - cookieEntry = addCookieToDict(cookie); - } else { - cookieEntry.tstamp = Date.now(); - if ( cookie.value === cookieEntry.value ) { return; } - cookieEntry.value = cookie.value; - } - if ( queue.has(cookieKey) ) { return; } - queue.set(cookieKey, Date.now() + 653); - if ( queueTimer === undefined ) { - queueTimer = vAPI.setTimeout(process, 727); - } - }; -})(); - -/******************************************************************************/ - -// Listen to any change in cookieland, we will update page stats accordingly. - -vAPI.cookies.onRemoved = function(cookie) { - var cookieKey = cookieKeyFromCookie(cookie); - if ( removeCookieFromDict(cookieKey) ) { - µm.logger.writeOne({ - info: i18nCookieDeleteSuccess.replace('{{value}}', cookieKey), - prettify: 'cookie' - }); - } -}; - -/******************************************************************************/ - -// Listen to any change in cookieland, we will update page stats accordingly. - -vAPI.cookies.onAllRemoved = function() { - for ( var cookieKey of cookieDict.keys() ) { - if ( removeCookieFromDict(cookieKey) ) { - µm.logger.writeOne({ - info: i18nCookieDeleteSuccess.replace('{{value}}', cookieKey), - prettify: 'cookie' - }); - } - } -}; - -/******************************************************************************/ - -vAPI.cookies.getAll(addCookiesToDict); -vAPI.cookies.start(); - -vAPI.setTimeout(processRemoveQueue, processRemoveQueuePeriod); -vAPI.setTimeout(processClean, processCleanPeriod); - -/******************************************************************************/ - -// Expose only what is necessary - -return { - recordPageCookies: recordPageCookiesAsync -}; - -/******************************************************************************/ - -})(); - -/******************************************************************************/ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/dashboard-common.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/dashboard-common.js deleted file mode 100644 index 95c99fa..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/dashboard-common.js +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************************* - - µMatrix - a Chromium browser extension to black/white list requests. - Copyright (C) 2014 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -/******************************************************************************/ - -uDom.onLoad(function() { - -/******************************************************************************/ - -// Open links in the proper window -uDom('a').attr('target', '_blank'); -uDom('a[href*="dashboard.html"]').attr('target', '_parent'); -uDom('.whatisthis').on('click', function() { - uDom(this).parent() - .descendants('.whatisthis-expandable') - .toggleClass('whatisthis-expanded'); -}); - - -/******************************************************************************/ - -}); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/dashboard.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/dashboard.js deleted file mode 100644 index c0e3ae8..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/dashboard.js +++ /dev/null @@ -1,55 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to black/white list requests. - Copyright (C) 2014-2018 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -/* global uDom */ - -'use strict'; - -/******************************************************************************/ - -(function() { - - var loadDashboardPanel = function(hash) { - var button = uDom(hash); - var url = button.attr('data-dashboard-panel-url'); - uDom('iframe').attr('src', url); - uDom('.tabButton').forEach(function(button){ - button.toggleClass( - 'selected', - button.attr('data-dashboard-panel-url') === url - ); - }); - }; - - var onTabClickHandler = function() { - loadDashboardPanel(window.location.hash); - }; - - uDom.onLoad(function() { - window.addEventListener('hashchange', onTabClickHandler); - var hash = window.location.hash; - if ( hash.length < 2 ) { - hash = '#settings'; - } - loadDashboardPanel(hash); - }); - -})(); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/fa-icons.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/fa-icons.js deleted file mode 100644 index 2f8dfaf..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/fa-icons.js +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to black/white list requests. - Copyright (C) 2018-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -'use strict'; - -/******************************************************************************/ - -const faIconsInit = function(root) { - const icons = (root || document).querySelectorAll('.fa-icon'); - for ( const icon of icons ) { - if ( - icon.firstChild === null || - icon.firstChild.nodeType !== 3 - ) { - continue; - } - const name = icon.firstChild.nodeValue; - const svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg'); - svg.classList.add('fa-icon_' + name); - const use = document.createElementNS('http://www.w3.org/2000/svg', 'use'); - const href = '/img/fontawesome/fontawesome-defs.svg#' + name; - use.setAttribute('href', href); - use.setAttribute('xlink:href', href); - svg.appendChild(use); - icon.replaceChild(svg, icon.firstChild); - if ( icon.classList.contains('fa-icon-badged') ) { - const badge = document.createElement('span'); - badge.className = 'fa-icon-badge'; - icon.insertBefore(badge, icon.firstChild.nextSibling); - } - } -}; - -faIconsInit(); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/hosts-files.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/hosts-files.js deleted file mode 100644 index 39bc81c..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/hosts-files.js +++ /dev/null @@ -1,464 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to black/white list requests. - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -/* global uDom */ - -'use strict'; - -/******************************************************************************/ - -(function() { - -/******************************************************************************/ - -var listDetails = {}, - lastUpdateTemplateString = vAPI.i18n('hostsFilesLastUpdate'), - hostsFilesSettingsHash, - reValidExternalList = /^[a-z-]+:\/\/\S*\/\S+$/m; - -/******************************************************************************/ - -vAPI.messaging.addListener(function onMessage(msg) { - switch ( msg.what ) { - case 'assetUpdated': - updateAssetStatus(msg); - break; - case 'assetsUpdated': - document.body.classList.remove('updating'); - renderWidgets(); - break; - case 'loadHostsFilesCompleted': - renderHostsFiles(); - break; - case 'loadRecipeFilesCompleted': - renderHostsFiles(); - break; - default: - break; - } -}); - -/******************************************************************************/ - -var renderNumber = function(value) { - return value.toLocaleString(); -}; - -/******************************************************************************/ - -var renderHostsFiles = function(soft) { - var listEntryTemplate = uDom('#templates .listEntry'), - listStatsTemplate = vAPI.i18n('hostsFilesPerFileStats'), - renderElapsedTimeToString = vAPI.i18n.renderElapsedTimeToString, - reExternalHostFile = /^https?:/; - - // Assemble a pretty list name if possible - var listNameFromListKey = function(collection, listKey) { - let list = collection.get(listKey); - return list && list.title || listKey; - }; - - var liFromListEntry = function(collection, listKey, li) { - var entry = collection.get(listKey), - elem; - if ( !li ) { - li = listEntryTemplate.clone().nodeAt(0); - } - if ( li.getAttribute('data-listkey') !== listKey ) { - li.setAttribute('data-listkey', listKey); - elem = li.querySelector('input[type="checkbox"]'); - elem.checked = entry.selected === true; - elem = li.querySelector('a:nth-of-type(1)'); - elem.setAttribute('href', 'asset-viewer.html?url=' + encodeURI(listKey)); - elem.setAttribute('type', 'text/html'); - elem.textContent = listNameFromListKey(collection, listKey); - li.classList.remove('toRemove'); - elem = li.querySelector('a.support'); - if ( entry.supportURL ) { - elem.setAttribute( - 'href', - entry.supportURL ? entry.supportURL : '' - ); - } - li.classList.toggle('external', entry.external === true); - } - // https://github.com/gorhill/uBlock/issues/1429 - if ( !soft ) { - elem = li.querySelector('input[type="checkbox"]'); - elem.checked = entry.selected === true; - } - elem = li.querySelector('span.counts'); - var text = ''; - if ( !isNaN(+entry.entryUsedCount) && !isNaN(+entry.entryCount) ) { - text = listStatsTemplate - .replace('{{used}}', renderNumber(entry.selected ? entry.entryUsedCount : 0)) - .replace('{{total}}', renderNumber(entry.entryCount)); - } - elem.textContent = text; - // https://github.com/chrisaljoudi/uBlock/issues/104 - var asset = listDetails.cache[listKey] || {}; - var remoteURL = asset.remoteURL; - li.classList.toggle( - 'unsecure', - typeof remoteURL === 'string' && remoteURL.lastIndexOf('http:', 0) === 0 - ); - li.classList.toggle('failed', asset.error !== undefined); - li.classList.toggle('obsolete', asset.obsolete === true); - li.classList.toggle('cached', asset.cached === true && asset.writeTime > 0); - if ( asset.cached ) { - li.querySelector('.status.cache').setAttribute( - 'title', - lastUpdateTemplateString.replace('{{ago}}', renderElapsedTimeToString(asset.writeTime)) - ); - } - li.classList.remove('discard'); - return li; - }; - var onRenderAssetFiles = function(collection, listSelector) { - // Incremental rendering: this will allow us to easily discard unused - // DOM list entries. - uDom(listSelector + ' .listEntry:not(.notAnAsset)').addClass('discard'); - - var assetKeys = Array.from(collection.keys()); - - // Sort works this way: - // - Send /^https?:/ items at the end (custom hosts file URL) - assetKeys.sort(function(a, b) { - let ea = collection.get(a), - eb = collection.get(b); - if ( ea.submitter !== eb.submitter ) { - return ea.submitter !== 'user' ? -1 : 1; - } - let ta = ea.title || a, - tb = eb.title || b; - if ( reExternalHostFile.test(ta) === reExternalHostFile.test(tb) ) { - return ta.localeCompare(tb); - } - return reExternalHostFile.test(tb) ? -1 : 1; - }); - - let ulList = document.querySelector(listSelector), - liLast = ulList.querySelector('.notAnAsset'); - - for ( let i = 0; i < assetKeys.length; i++ ) { - let liReuse = i < ulList.childElementCount ? - ulList.children[i] : - null; - if ( - liReuse !== null && - liReuse.classList.contains('notAnAsset') - ) { - liReuse = null; - } - let liEntry = liFromListEntry(collection, assetKeys[i], liReuse); - if ( liEntry.parentElement === null ) { - ulList.insertBefore(liEntry, liLast); - } - } - }; - - var onAssetDataReceived = function(details) { - // Preprocess. - details.hosts = new Map(details.hosts); - details.recipes = new Map(details.recipes); - - // Before all, set context vars - listDetails = details; - - document.body.classList.toggle( - 'contributor', - listDetails.contributor === true - ); - - onRenderAssetFiles(details.hosts, '#hosts'); - onRenderAssetFiles(details.recipes, '#recipes'); - - uDom('.listEntry.discard').remove(); - - uDom('#listsOfBlockedHostsPrompt').text( - vAPI.i18n('hostsFilesStats').replace( - '{{blockedHostnameCount}}', - renderNumber(details.blockedHostnameCount) - ) - ); - uDom('#autoUpdate').prop('checked', listDetails.autoUpdate === true); - - uDom.nodeFromSelector('#recipes .toInline > input[type="checkbox"]').checked = - listDetails.userRecipes.enabled === true; - uDom.nodeFromSelector('#recipes .toInline > textarea').value = - listDetails.userRecipes.content; - - - if ( !soft ) { - hostsFilesSettingsHash = hashFromCurrentFromSettings(); - } - renderWidgets(); - }; - - vAPI.messaging.send( - 'hosts-files.js', - { what: 'getAssets' }, - onAssetDataReceived - ); -}; - -/******************************************************************************/ - -var renderWidgets = function() { - uDom('#buttonUpdate').toggleClass('disabled', document.querySelector('body:not(.updating) .assets .listEntry.obsolete > input[type="checkbox"]:checked') === null); - uDom('#buttonPurgeAll').toggleClass('disabled', document.querySelector('.assets .listEntry.cached') === null); - uDom('#buttonApply').toggleClass('disabled', hostsFilesSettingsHash === hashFromCurrentFromSettings()); -}; - -/******************************************************************************/ - -var updateAssetStatus = function(details) { - var li = document.querySelector('.assets .listEntry[data-listkey="' + details.key + '"]'); - if ( li === null ) { return; } - li.classList.toggle('failed', !!details.failed); - li.classList.toggle('obsolete', !details.cached); - li.classList.toggle('cached', !!details.cached); - if ( details.cached ) { - li.querySelector('.status.cache').setAttribute( - 'title', - lastUpdateTemplateString.replace( - '{{ago}}', - vAPI.i18n.renderElapsedTimeToString(Date.now()) - ) - ); - } - renderWidgets(); -}; - -/******************************************************************************* - - Compute a hash from all the settings affecting how assets are loaded - in memory. - -**/ - -var hashFromCurrentFromSettings = function() { - let listHash = [], - listEntries = document.querySelectorAll( - '.assets .listEntry[data-listkey]:not(.toRemove)' - ); - for ( let liEntry of listEntries ) { - if ( liEntry.querySelector('input[type="checkbox"]:checked') !== null ) { - listHash.push(liEntry.getAttribute('data-listkey')); - } - } - return [ - listHash.join(), - document.querySelector('.listEntry.toRemove') !== null, - reValidExternalList.test( - textFromTextarea( - '#hosts .toImport > input[type="checkbox"]:checked ~ textarea' - ) - ), - textFromTextarea( - '#hosts .toInline > input[type="checkbox"]:checked ~ textarea' - ), - reValidExternalList.test( - textFromTextarea( - '#recipes .toImport > input[type="checkbox"]:checked ~ textarea' - ) - ), - textFromTextarea( - '#recipes .toInline > input[type="checkbox"]:checked ~ textarea' - ), - ].join('\n'); -}; - -/******************************************************************************/ - -var textFromTextarea = function(textarea) { - if ( typeof textarea === 'string' ) { - textarea = document.querySelector(textarea); - } - return textarea !== null ? textarea.value.trim() : ''; -}; - -/******************************************************************************/ - -var onHostsFilesSettingsChanged = function() { - renderWidgets(); -}; - -/******************************************************************************/ - -var onRemoveExternalAsset = function(ev) { - var liEntry = uDom(this).ancestors('[data-listkey]'), - listKey = liEntry.attr('data-listkey'); - if ( listKey ) { - liEntry.toggleClass('toRemove'); - renderWidgets(); - } - ev.preventDefault(); -}; - -/******************************************************************************/ - -var onPurgeClicked = function() { - var button = uDom(this), - liEntry = button.ancestors('[data-listkey]'), - listKey = liEntry.attr('data-listkey'); - if ( !listKey ) { return; } - - vAPI.messaging.send('hosts-files.js', { what: 'purgeCache', assetKey: listKey }); - liEntry.addClass('obsolete'); - liEntry.removeClass('cached'); - - if ( liEntry.descendants('input').first().prop('checked') ) { - renderWidgets(); - } -}; - -/******************************************************************************/ - -var selectAssets = function(callback) { - var prepareChanges = function(listSelector) { - var out = { - toSelect: [], - toImport: '', - toRemove: [], - toInline: { - enabled: false, - content: '' - } - }; - - let root = document.querySelector(listSelector); - - // Lists to select or remove - let liEntries = root.querySelectorAll( - '.listEntry[data-listkey]:not(.notAnAsset)' - ); - for ( let liEntry of liEntries ) { - if ( liEntry.classList.contains('toRemove') ) { - out.toRemove.push(liEntry.getAttribute('data-listkey')); - } else if ( liEntry.querySelector('input[type="checkbox"]:checked') ) { - out.toSelect.push(liEntry.getAttribute('data-listkey')); - } - } - - // External hosts files to import - let input = root.querySelector( - '.toImport > input[type="checkbox"]:checked' - ); - if ( input !== null ) { - let textarea = root.querySelector('.toImport textarea'); - out.toImport = textarea.value.trim(); - textarea.value = ''; - input.checked = false; - } - - // Inline data - out.toInline.enabled = root.querySelector( - '.toInline > input[type="checkbox"]:checked' - ) !== null; - out.toInline.content = textFromTextarea('.toInline > textarea'); - - return out; - }; - - vAPI.messaging.send( - 'hosts-files.js', - { - what: 'selectAssets', - hosts: prepareChanges('#hosts'), - recipes: prepareChanges('#recipes') - }, - callback - ); - - hostsFilesSettingsHash = hashFromCurrentFromSettings(); -}; - -/******************************************************************************/ - -var buttonApplyHandler = function() { - uDom('#buttonApply').removeClass('enabled'); - selectAssets(function(response) { - if ( response && response.hostsChanged ) { - vAPI.messaging.send('hosts-files.js', { what: 'reloadHostsFiles' }); - } - if ( response && response.recipesChanged ) { - vAPI.messaging.send('hosts-files.js', { what: 'reloadRecipeFiles' }); - } - }); - renderWidgets(); -}; - -/******************************************************************************/ - -var buttonUpdateHandler = function() { - uDom('#buttonUpdate').removeClass('enabled'); - selectAssets(function() { - document.body.classList.add('updating'); - vAPI.messaging.send('hosts-files.js', { what: 'forceUpdateAssets' }); - renderWidgets(); - }); - renderWidgets(); -}; - -/******************************************************************************/ - -var buttonPurgeAllHandler = function() { - uDom('#buttonPurgeAll').removeClass('enabled'); - vAPI.messaging.send( - 'hosts-files.js', - { what: 'purgeAllCaches' }, - function() { - renderHostsFiles(true); - } - ); -}; - -/******************************************************************************/ - -var autoUpdateCheckboxChanged = function() { - vAPI.messaging.send( - 'hosts-files.js', - { - what: 'userSettings', - name: 'autoUpdate', - value: this.checked - } - ); -}; - -/******************************************************************************/ - -uDom('#autoUpdate').on('change', autoUpdateCheckboxChanged); -uDom('#buttonApply').on('click', buttonApplyHandler); -uDom('#buttonUpdate').on('click', buttonUpdateHandler); -uDom('#buttonPurgeAll').on('click', buttonPurgeAllHandler); -uDom('.assets').on('change', '.listEntry > input', onHostsFilesSettingsChanged); -uDom('.assets').on('input', '.listEntry > textarea', onHostsFilesSettingsChanged); -uDom('.assets').on('click', '.listEntry > .remove', onRemoveExternalAsset); -uDom('.assets').on('click', '.status.cache', onPurgeClicked); - -renderHostsFiles(); - -/******************************************************************************/ - -})(); - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/httpsb.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/httpsb.js deleted file mode 100644 index c041152..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/httpsb.js +++ /dev/null @@ -1,96 +0,0 @@ -/******************************************************************************* - - uMatrix - a Chromium browser extension to black/white list requests. - Copyright (C) 2014-2016 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -/* global chrome, µMatrix */ - -'use strict'; - -/******************************************************************************/ - -(function() { - var µm = µMatrix; - µm.pMatrix = new µm.Matrix(); - µm.pMatrix.setSwitch('matrix-off', 'about-scheme', 1); - µm.pMatrix.setSwitch('matrix-off', 'chrome-extension-scheme', 1); - µm.pMatrix.setSwitch('matrix-off', 'chrome-scheme', 1); - µm.pMatrix.setSwitch('matrix-off', 'moz-extension-scheme', 1); - µm.pMatrix.setSwitch('matrix-off', 'opera-scheme', 1); - µm.pMatrix.setSwitch('matrix-off', 'vivaldi-scheme', 1); - // https://discourse.mozilla.org/t/support-umatrix/5131/157 - µm.pMatrix.setSwitch('matrix-off', 'wyciwyg-scheme', 1); - µm.pMatrix.setSwitch('matrix-off', 'behind-the-scene', 1); - µm.pMatrix.setSwitch('referrer-spoof', 'behind-the-scene', 2); - µm.pMatrix.setSwitch('https-strict', 'behind-the-scene', 2); - // Global rules - µm.pMatrix.setSwitch('referrer-spoof', '*', 1); - µm.pMatrix.setSwitch('noscript-spoof', '*', 1); - µm.pMatrix.setCell('*', '*', '*', µm.Matrix.Red); - µm.pMatrix.setCell('*', '*', 'css', µm.Matrix.Green); - µm.pMatrix.setCell('*', '*', 'image', µm.Matrix.Green); - µm.pMatrix.setCell('*', '*', 'frame', µm.Matrix.Red); - // 1st-party rules - µm.pMatrix.setCell('*', '1st-party', '*', µm.Matrix.Green); - µm.pMatrix.setCell('*', '1st-party', 'frame', µm.Matrix.Green); - - µm.tMatrix = new µm.Matrix(); - µm.tMatrix.assign(µm.pMatrix); -})(); - -/******************************************************************************/ - -µMatrix.hostnameFromURL = function(url) { - var hn = this.URI.hostnameFromURI(url); - return hn === '' ? '*' : hn; -}; - -/******************************************************************************/ - -µMatrix.mustBlock = function(srcHostname, desHostname, type) { - return this.tMatrix.mustBlock(srcHostname, desHostname, type); -}; - -µMatrix.mustAllow = function(srcHostname, desHostname, type) { - return this.mustBlock(srcHostname, desHostname, type) === false; -}; - -/******************************************************************************/ - -µMatrix.formatCount = function(count) { - if ( typeof count !== 'number' ) { - return ''; - } - var s = count.toFixed(0); - if ( count >= 1000 ) { - if ( count < 10000 ) { - s = '>' + s.slice(0,1) + 'K'; - } else if ( count < 100000 ) { - s = s.slice(0,2) + 'K'; - } else if ( count < 1000000 ) { - s = s.slice(0,3) + 'K'; - } else if ( count < 10000000 ) { - s = s.slice(0,1) + 'M'; - } else { - s = s.slice(0,-6) + 'M'; - } - } - return s; -}; - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/i18n.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/i18n.js deleted file mode 100644 index c43c295..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/i18n.js +++ /dev/null @@ -1,208 +0,0 @@ -/******************************************************************************* - - µMatrix - a Chromium browser extension to black/white list requests. - Copyright (C) 2014 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -/* global vAPI, uDom */ - -/******************************************************************************/ - -// This file should always be included at the end of the `body` tag, so as -// to ensure all i18n targets are already loaded. - -(function() { - -'use strict'; - -/******************************************************************************/ - -// https://github.com/gorhill/uBlock/issues/2084 -// Anything else than , , , , , , and will -// be rendered as plain text. -// For , only the type attribute is allowed. -// For , only href attribute must be present, and it MUST starts with -// `https://`, and includes no single- or double-quotes. -// No HTML entities are allowed, there is code to handle existing HTML -// entities already present in translation files until they are all gone. - -var reSafeTags = /^([\s\S]*?)<(b|blockquote|code|em|i|kbd|span|sup)>(.+?)<\/\2>([\s\S]*)$/, - reSafeInput = /^([\s\S]*?)<(input type="[^"]+")>(.*?)([\s\S]*)$/, - reInput = /^input type=(['"])([a-z]+)\1$/, - reSafeLink = /^([\s\S]*?)<(a href=['"]https?:\/\/[^'" <>]+['"])>(.+?)<\/a>([\s\S]*)$/, - reLink = /^a href=(['"])(https?:\/\/[^'"]+)\1$/; - -var safeTextToTagNode = function(text) { - var matches, node; - if ( text.lastIndexOf('a ', 0) === 0 ) { - matches = reLink.exec(text); - if ( matches === null ) { return null; } - node = document.createElement('a'); - node.setAttribute('href', matches[2]); - return node; - } - if ( text.lastIndexOf('input ', 0) === 0 ) { - matches = reInput.exec(text); - if ( matches === null ) { return null; } - node = document.createElement('input'); - node.setAttribute('type', matches[2]); - return node; - } - // Firefox extension validator warns if using a variable as argument for - // document.createElement(). - switch ( text ) { - case 'b': - return document.createElement('b'); - case 'blockquote': - return document.createElement('blockquote'); - case 'code': - return document.createElement('code'); - case 'em': - return document.createElement('em'); - case 'i': - return document.createElement('i'); - case 'kbd': - return document.createElement('kbd'); - case 'span': - return document.createElement('span'); - case 'sup': - return document.createElement('sup'); - default: - break; - } -}; - -var safeTextToTextNode = function(text) { - // TODO: remove once no more HTML entities in translation files. - if ( text.indexOf('&') !== -1 ) { - text = text.replace(/“/g, '“') - .replace(/”/g, '”') - .replace(/‘/g, '‘') - .replace(/’/g, '’'); - } - return document.createTextNode(text); -}; - -var safeTextToDOM = function(text, parent) { - if ( text === '' ) { return; } - // Fast path (most common). - if ( text.indexOf('<') === -1 ) { - return parent.appendChild(safeTextToTextNode(text)); - } - // Slow path. - // `

` no longer allowed. Code below can be remove once all

's are - // gone from translation files. - text = text.replace(/^

|<\/p>/g, '') - .replace(/

/g, '\n\n'); - // Parse allowed HTML tags. - var matches, - matches1 = reSafeTags.exec(text), - matches2 = reSafeLink.exec(text); - if ( matches1 !== null && matches2 !== null ) { - matches = matches1.index < matches2.index ? matches1 : matches2; - } else if ( matches1 !== null ) { - matches = matches1; - } else if ( matches2 !== null ) { - matches = matches2; - } else { - matches = reSafeInput.exec(text); - } - if ( matches === null ) { - parent.appendChild(safeTextToTextNode(text)); - return; - } - safeTextToDOM(matches[1], parent); - var node = safeTextToTagNode(matches[2]) || parent; - safeTextToDOM(matches[3], node); - parent.appendChild(node); - safeTextToDOM(matches[4], parent); -}; - -/******************************************************************************/ - -// Helper to deal with the i18n'ing of HTML files. -vAPI.i18n.render = function(context) { - var docu = document, - root = context || docu, - elems, n, i, elem, text; - - elems = root.querySelectorAll('[data-i18n]'); - n = elems.length; - for ( i = 0; i < n; i++ ) { - elem = elems[i]; - text = vAPI.i18n(elem.getAttribute('data-i18n')); - if ( !text ) { continue; } - // TODO: remove once it's all replaced with - if ( text.indexOf('{') !== -1 ) { - text = text.replace(/\{\{input:([^}]+)\}\}/g, ''); - } - safeTextToDOM(text, elem); - } - - uDom('[title]', context).forEach(function(elem) { - var title = vAPI.i18n(elem.attr('title')); - if ( title ) { - elem.attr('title', title); - } - }); - - uDom('[placeholder]', context).forEach(function(elem) { - elem.attr('placeholder', vAPI.i18n(elem.attr('placeholder'))); - }); - - uDom('[data-i18n-tip]', context).forEach(function(elem) { - elem.attr( - 'data-tip', - vAPI.i18n(elem.attr('data-i18n-tip')) - .replace(/
/g, '\n') - .replace(/\n{3,}/g, '\n\n') - ); - }); -}; - -vAPI.i18n.render(); - -/******************************************************************************/ - -vAPI.i18n.renderElapsedTimeToString = function(tstamp) { - var value = (Date.now() - tstamp) / 60000; - if ( value < 2 ) { - return vAPI.i18n('elapsedOneMinuteAgo'); - } - if ( value < 60 ) { - return vAPI.i18n('elapsedManyMinutesAgo').replace('{{value}}', Math.floor(value).toLocaleString()); - } - value /= 60; - if ( value < 2 ) { - return vAPI.i18n('elapsedOneHourAgo'); - } - if ( value < 24 ) { - return vAPI.i18n('elapsedManyHoursAgo').replace('{{value}}', Math.floor(value).toLocaleString()); - } - value /= 24; - if ( value < 2 ) { - return vAPI.i18n('elapsedOneDayAgo'); - } - return vAPI.i18n('elapsedManyDaysAgo').replace('{{value}}', Math.floor(value).toLocaleString()); -}; - -/******************************************************************************/ - -})(); - -/******************************************************************************/ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/liquid-dict.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/liquid-dict.js deleted file mode 100644 index 4e0b335..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/liquid-dict.js +++ /dev/null @@ -1,199 +0,0 @@ -/******************************************************************************* - - uMatrix - a Chromium browser extension to black/white list requests. - Copyright (C) 2014-2018 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -'use strict'; - -/******************************************************************************/ - -µMatrix.LiquidDict = (function() { - -/******************************************************************************/ - -var LiquidDict = function() { - this.dict = new Map(); - this.reset(); -}; - -/******************************************************************************/ - -// Somewhat arbitrary: I need to come up with hard data to know at which -// point binary search is better than indexOf. - -LiquidDict.prototype.cutoff = 500; - -/******************************************************************************/ - -var meltBucket = function(ldict, len, bucket) { - ldict.frozenBucketCount -= 1; - if ( bucket.charCodeAt(0) === 0x20 /* ' ' */ ) { - return new Set(bucket.trim().split(' ')); - } - let dict = new Set(); - let offset = 0; - while ( offset < bucket.length ) { - dict.add(bucket.substring(offset, len)); - offset += len; - } - return dict; -}; - -var freezeBucket = function(ldict, bucket) { - ldict.frozenBucketCount += 1; - let words = Array.from(bucket); - let wordLen = words[0].length; - if ( wordLen * words.length < ldict.cutoff ) { - return ' ' + words.join(' ') + ' '; - } - return words.sort().join(''); -}; - -/******************************************************************************/ - -// How the key is derived dictates the number and size of buckets. -// -// http://jsperf.com/makekey-concat-vs-join/3 -// -// Question: Why is using a prototyped function better than a standalone -// helper function? - -LiquidDict.prototype.makeKey = function(word) { - let len = word.length; - if ( len > 255 ) { len = 255; } - let i = len >> 2; - return (word.charCodeAt( 0) & 0x03) << 14 | - (word.charCodeAt( i) & 0x03) << 12 | - (word.charCodeAt( i+i) & 0x03) << 10 | - (word.charCodeAt(i+i+i) & 0x03) << 8 | - len; -}; - -/******************************************************************************/ - -LiquidDict.prototype.test = function(word) { - let key = this.makeKey(word); - let bucket = this.dict.get(key); - if ( bucket === undefined ) { - return false; - } - if ( typeof bucket === 'object' ) { - return bucket.has(word); - } - if ( bucket.charCodeAt(0) === 0x20 /* ' ' */ ) { - return bucket.indexOf(' ' + word + ' ') !== -1; - } - // binary search - let len = word.length; - let left = 0; - // http://jsperf.com/or-vs-floor/3 - let right = ~~(bucket.length / len + 0.5); - while ( left < right ) { - let i = left + right >> 1; - let needle = bucket.substr( len * i, len ); - if ( word < needle ) { - right = i; - } else if ( word > needle ) { - left = i + 1; - } else { - return true; - } - } - return false; -}; - -/******************************************************************************/ - -LiquidDict.prototype.add = function(word) { - let key = this.makeKey(word); - let bucket = this.dict.get(key); - if ( bucket === undefined ) { - bucket = new Set(); - this.dict.set(key, bucket); - bucket.add(word); - this.count += 1; - return true; - } - if ( typeof bucket === 'string' ) { - bucket = meltBucket(this, word.len, bucket); - this.dict.set(key, bucket); - } - if ( bucket.has(word) === false ) { - bucket.add(word); - this.count += 1; - return true; - } - this.duplicateCount += 1; - return false; -}; - -/******************************************************************************/ - -LiquidDict.prototype.freeze = function() { - for ( let entry of this.dict ) { - if ( typeof entry[1] === 'object' ) { - this.dict.set(entry[0], freezeBucket(this, entry[1])); - } - } -}; - -/******************************************************************************/ - -LiquidDict.prototype.reset = function() { - this.dict.clear(); - this.count = 0; - this.duplicateCount = 0; - this.frozenBucketCount = 0; -}; - -/******************************************************************************/ - -let selfieVersion = 1; - -LiquidDict.prototype.toSelfie = function() { - this.freeze(); - return { - version: selfieVersion, - count: this.count, - duplicateCount: this.duplicateCount, - frozenBucketCount: this.frozenBucketCount, - dict: Array.from(this.dict) - }; -}; - -LiquidDict.prototype.fromSelfie = function(selfie) { - if ( selfie.version !== selfieVersion ) { return false; } - this.count = selfie.count; - this.duplicateCount = selfie.duplicateCount; - this.frozenBucketCount = selfie.frozenBucketCount; - this.dict = new Map(selfie.dict); - return true; -}; - -/******************************************************************************/ - -return LiquidDict; - -/******************************************************************************/ - -})(); - -/******************************************************************************/ - -µMatrix.ubiquitousBlacklist = new µMatrix.LiquidDict(); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/logger-ui.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/logger-ui.js deleted file mode 100644 index e95493c..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/logger-ui.js +++ /dev/null @@ -1,1232 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to benchmark browser session. - Copyright (C) 2015-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/sessbench -*/ - -/* global publicSuffixList, uDom, uMatrixScopeWidget */ - -'use strict'; - -/******************************************************************************/ - -(function() { - -/******************************************************************************/ - -var tbody = document.querySelector('#content tbody'); -var trJunkyard = []; -var tdJunkyard = []; -var firstVarDataCol = 1; // currently, column 2 (0-based index) -var lastVarDataIndex = - document.querySelector('#content colgroup').childElementCount - 1; -var maxEntries = 0; -var noTabId = ''; -var pageStores = new Map(); -var pageStoresToken; -var ownerId = Date.now(); - -var emphasizeTemplate = document.querySelector('#emphasizeTemplate > span'); - -var prettyRequestTypes = { - 'main_frame': 'doc', - 'stylesheet': 'css', - 'sub_frame': 'frame', - 'xmlhttprequest': 'xhr' -}; - -var dontEmphasizeSet = new Set([ - 'COOKIE', - 'CSP', - 'REFERER' -]); - -/******************************************************************************/ - -// Adjust top padding of content table, to match that of toolbar height. - -document.getElementById('content').style.setProperty( - 'margin-top', - document.getElementById('toolbar').clientHeight + 'px' -); - -/******************************************************************************/ - -let removeChildren = function(node) { - while ( node.firstChild ) { - node.removeChild(node.firstChild); - } -}; - -let removeSelf = function(node) { - let parent = node && node.parentNode; - if ( parent ) { - parent.removeChild(node); - } -}; - -let prependChild = function(parent, child) { - parent.insertBefore(child, parent.firstElementChild); -}; - -/******************************************************************************/ - -// We will lookup domains locally. - -let domainFromSrcHostname = (function() { - let srcHn = '', srcDn = ''; - return function(hn) { - if ( hn !== srcHn ) { - srcHn = hn; - srcDn = publicSuffixList.getDomain(hn); - } - return srcDn; - }; -})(); - -let domainFromDesHostname = (function() { - let desHn = '', desDn = ''; - return function(hn) { - if ( hn !== desHn ) { - desHn = hn; - desDn = publicSuffixList.getDomain(hn); - } - return desDn; - }; -})(); - -let is3rdParty = function(srcHn, desHn) { - return domainFromSrcHostname(srcHn) !== domainFromDesHostname(desHn); -}; - -vAPI.messaging.send( - 'logger-ui.js', - { what: 'getPublicSuffixListData' }, - response => { - publicSuffixList.fromSelfie(response); - } -); - -/******************************************************************************/ - -// Emphasize hostname and cookie name. - -var emphasizeCookie = function(s) { - var pnode = emphasizeHostname(s); - if ( pnode.childNodes.length !== 3 ) { - return pnode; - } - var prefix = '-cookie:'; - var text = pnode.childNodes[2].textContent; - var beg = text.indexOf(prefix); - if ( beg === -1 ) { - return pnode; - } - beg += prefix.length; - var end = text.indexOf('}', beg); - if ( end === -1 ) { - return pnode; - } - var cnode = emphasizeTemplate.cloneNode(true); - cnode.childNodes[0].textContent = text.slice(0, beg); - cnode.childNodes[1].textContent = text.slice(beg, end); - cnode.childNodes[2].textContent = text.slice(end); - pnode.replaceChild(cnode.childNodes[0], pnode.childNodes[2]); - pnode.appendChild(cnode.childNodes[0]); - pnode.appendChild(cnode.childNodes[0]); - return pnode; -}; - -/******************************************************************************/ - -// Emphasize hostname in URL. - -var emphasizeHostname = function(url) { - var hnbeg = url.indexOf('://'); - if ( hnbeg === -1 ) { - return document.createTextNode(url); - } - hnbeg += 3; - - var hnend = url.indexOf('/', hnbeg); - if ( hnend === -1 ) { - hnend = url.slice(hnbeg).search(/\?#/); - if ( hnend !== -1 ) { - hnend += hnbeg; - } else { - hnend = url.length; - } - } - - var node = emphasizeTemplate.cloneNode(true); - node.childNodes[0].textContent = url.slice(0, hnbeg); - node.childNodes[1].textContent = url.slice(hnbeg, hnend); - node.childNodes[2].textContent = url.slice(hnend); - return node; -}; - -/******************************************************************************/ - -var createCellAt = function(tr, index) { - var td = tr.cells[index]; - var mustAppend = !td; - if ( mustAppend ) { - td = tdJunkyard.pop(); - } - if ( td ) { - td.removeAttribute('colspan'); - td.textContent = ''; - } else { - td = document.createElement('td'); - } - if ( mustAppend ) { - tr.appendChild(td); - } - return td; -}; - -/******************************************************************************/ - -var createRow = function(layout) { - let tr = trJunkyard.pop(); - if ( tr ) { - tr.className = ''; - } else { - tr = document.createElement('tr'); - } - let index; - for ( index = 0; index < firstVarDataCol; index++ ) { - createCellAt(tr, index); - } - let i = 1, span = 1; - let td; - for (;;) { - td = createCellAt(tr, index); - if ( i === lastVarDataIndex ) { break; } - if ( layout.charAt(i) !== '1' ) { - span += 1; - } else { - if ( span !== 1 ) { - td.setAttribute('colspan', span); - } - index += 1; - span = 1; - } - i += 1; - } - if ( span !== 1 ) { - td.setAttribute('colspan', span); - } - index += 1; - for (;;) { - td = tr.cells[index]; - if ( !td ) { break; } - tdJunkyard.push(tr.removeChild(td)); - } - tr.removeAttribute('data-tabid'); - tr.removeAttribute('data-srchn'); - tr.removeAttribute('data-deshn'); - tr.removeAttribute('data-type'); - return tr; -}; - -/******************************************************************************/ - -var padTo2 = function(v) { - return v < 10 ? '0' + v : v; -}; - -/******************************************************************************/ - -var createGap = function(tabId, url) { - var tr = createRow('1'); - tr.classList.add('doc'); - tr.classList.add('tab'); - tr.classList.add('canMtx'); - tr.setAttribute('data-tabid', tabId); - tr.cells[firstVarDataCol].textContent = url; - tbody.insertBefore(tr, tbody.firstChild); -}; - -/******************************************************************************/ - -var renderLogEntry = function(entry) { - let details; - try { - details = JSON.parse(entry.details); - } catch(ex) { - console.error(ex); - } - if ( details instanceof Object === false ) { return; } - - let tr; - let fvdc = firstVarDataCol; - - if ( details.error !== undefined ) { - tr = createRow('1'); - tr.classList.add('cat_error'); - tr.cells[fvdc].textContent = details.error; - } else if ( details.info !== undefined ) { - tr = createRow('1'); - tr.classList.add('cat_info'); - if ( details.prettify === 'cookie' ) { - tr.cells[fvdc].appendChild(emphasizeCookie(details.info)); - } else { - tr.cells[fvdc].textContent = details.info; - } - } else if ( details.srcHn !== undefined && details.desHn !== undefined ) { - tr = createRow('11111'); - tr.classList.add('canMtx'); - tr.classList.add('cat_net'); - tr.setAttribute('data-srchn', details.srcHn); - tr.setAttribute('data-deshn', details.desHn); - tr.setAttribute('data-type', details.type); - // If the request is that of a root frame, insert a gap in the table - // in order to visually separate entries for different documents. - if ( details.type === 'doc' && details.tabId !== noTabId ) { - createGap(details.tabId, details.desURL); - } - tr.cells[fvdc+0].textContent = details.srcHn; - if ( details.blocked ) { - tr.classList.add('blocked'); - tr.cells[fvdc+1].textContent = '--'; - } else { - tr.cells[fvdc+1].textContent = ''; - } - tr.cells[fvdc+2].textContent = - prettyRequestTypes[details.type] || details.type; - if ( dontEmphasizeSet.has(details.type) ) { - tr.cells[fvdc+3].textContent = details.desURL; - } else { - tr.cells[fvdc+3].appendChild(emphasizeHostname(details.desURL)); - } - tr.cells[fvdc+4].textContent = - is3rdParty(details.srcHn, details.desHn) ? '3p' : ''; - } else if ( details.header ) { - tr = createRow('11111'); - tr.classList.add('canMtx'); - tr.classList.add('cat_net'); - tr.cells[fvdc+0].textContent = details.srcHn || ''; - if ( details.change === -1 ) { - tr.classList.add('blocked'); - tr.cells[fvdc+1].textContent = '--'; - } else { - tr.cells[fvdc+1].textContent = ''; - } - tr.cells[fvdc+2].textContent = details.header.name; - tr.cells[fvdc+3].textContent = details.header.value; - tr.cells[fvdc+4].textContent = ''; - } else { - tr = createRow('1'); - tr.cells[fvdc].textContent = 'huh?'; - } - - // Fields common to all rows. - let time = logDate; - time.setTime(entry.tstamp - logDateTimezoneOffset); - tr.cells[0].textContent = padTo2(time.getUTCHours()) + ':' + - padTo2(time.getUTCMinutes()) + ':' + - padTo2(time.getSeconds()); - - if ( details.tabId ) { - tr.classList.add('tab'); - tr.setAttribute('data-tabid', details.tabId); - } else { - tr.removeAttribute('data-tabid'); - } - - rowFilterer.filterOne(tr, true); - - tbody.insertBefore(tr, tbody.firstChild); -}; - -// Reuse date objects. -var logDate = new Date(), - logDateTimezoneOffset = logDate.getTimezoneOffset() * 60000; - -/******************************************************************************/ - -var renderLogEntries = function(response) { - let entries = response.entries; - if ( entries.length === 0 ) { return; } - - // Preserve scroll position - let height = tbody.offsetHeight; - - for ( let i = 0, n = entries.length; i < n; i++ ) { - renderLogEntry(entries[i]); - } - - // Prevent logger from growing infinitely and eating all memory. For - // instance someone could forget that it is left opened for some - // dynamically refreshed pages. - truncateLog(maxEntries); - - let yDelta = tbody.offsetHeight - height; - if ( yDelta === 0 ) { return; } - - // Chromium: - // body.scrollTop = good value - // body.parentNode.scrollTop = 0 - if ( document.body.scrollTop !== 0 ) { - document.body.scrollTop += yDelta; - return; - } - - // Firefox: - // body.scrollTop = 0 - // body.parentNode.scrollTop = good value - let parentNode = document.body.parentNode; - if ( parentNode && parentNode.scrollTop !== 0 ) { - parentNode.scrollTop += yDelta; - } -}; - -/******************************************************************************/ - -var synchronizeTabIds = function(newPageStores) { - let oldPageStores = pageStores; - let autoDeleteVoidRows = !!vAPI.localStorage.getItem('loggerAutoDeleteVoidRows'); - let rowVoided = false; - for ( let tabId of oldPageStores.keys() ) { - if ( newPageStores.has(tabId) ) { continue; } - // Mark or remove voided rows - let trs = uDom('[data-tabid="' + tabId + '"]'); - if ( autoDeleteVoidRows ) { - toJunkyard(trs); - } else { - trs.removeClass('canMtx'); - rowVoided = true; - } - } - - let select = document.getElementById('pageSelector'); - let selectValue = select.value; - let tabIds = Array.from(newPageStores.keys()).sort(function(a, b) { - return newPageStores.get(a).localeCompare(newPageStores.get(b)); - }); - for ( var i = 0, j = 2; i < tabIds.length; i++ ) { - let tabId = tabIds[i]; - if ( tabId === noTabId ) { continue; } - let option = select.options[j]; - j += 1; - if ( !option ) { - option = document.createElement('option'); - select.appendChild(option); - } - option.textContent = newPageStores.get(tabId); - option.value = tabId; - if ( option.value === selectValue ) { - option.setAttribute('selected', ''); - } else { - option.removeAttribute('selected'); - } - } - while ( j < select.options.length ) { - select.removeChild(select.options[j]); - } - if ( select.value !== selectValue ) { - select.selectedIndex = 0; - select.value = ''; - select.options[0].setAttribute('selected', ''); - pageSelectorChanged(); - } - - pageStores = newPageStores; - - return rowVoided; -}; - -/******************************************************************************/ - -var truncateLog = function(size) { - if ( size === 0 ) { - size = 5000; - } - var tbody = document.querySelector('#content tbody'); - size = Math.min(size, 10000); - var tr; - while ( tbody.childElementCount > size ) { - tr = tbody.lastElementChild; - trJunkyard.push(tbody.removeChild(tr)); - } -}; - -/******************************************************************************/ - -var onLogBufferRead = function(response) { - if ( !response || response.unavailable ) { - readLogBufferAsync(); - return; - } - - // This tells us the behind-the-scene tab id - noTabId = response.noTabId; - - // This may have changed meanwhile - if ( response.maxLoggedRequests !== maxEntries ) { - maxEntries = response.maxLoggedRequests; - uDom('#maxEntries').val(maxEntries || ''); - } - - // Neuter rows for which a tab does not exist anymore - var rowVoided = false; - if ( response.pageStoresToken !== pageStoresToken ) { - if ( Array.isArray(response.pageStores) ) { - rowVoided = synchronizeTabIds(new Map(response.pageStores)); - } - pageStoresToken = response.pageStoresToken; - } - - renderLogEntries(response); - - if ( rowVoided ) { - uDom('#clean').toggleClass( - 'disabled', - tbody.querySelector('tr.tab:not(.canMtx)') === null - ); - } - - // Synchronize toolbar with content of log - uDom('#clear').toggleClass( - 'disabled', - tbody.querySelector('tr') === null - ); - - readLogBufferAsync(); -}; - -/******************************************************************************/ - -// This can be called only once, at init time. After that, this will be called -// automatically. If called after init time, this will be messy, and this would -// require a bit more code to ensure no multi time out events. - -var readLogBuffer = function() { - if ( ownerId === undefined ) { return; } - vAPI.messaging.send( - 'logger-ui.js', - { - what: 'readMany', - ownerId: ownerId, - pageStoresToken: pageStoresToken - }, - onLogBufferRead - ); -}; - -var readLogBufferAsync = function() { - if ( ownerId === undefined ) { return; } - vAPI.setTimeout(readLogBuffer, 1200); -}; - -/******************************************************************************/ - -var tabIdFromPageSelector = function() { - let tabId = parseInt(document.getElementById('pageSelector').value, 10); - return isNaN(tabId) === false ? tabId : 0; -}; - -var pageSelectorChanged = function() { - let style = document.getElementById('tabFilterer'); - let tabId = tabIdFromPageSelector(); - let sheet = style.sheet; - while ( sheet.cssRules.length !== 0 ) { - sheet.deleteRule(0); - } - if ( tabId !== 0 ) { - sheet.insertRule( - '#content table tr:not([data-tabid="' + tabId + '"]) { display: none; }', - 0 - ); - } - document.getElementById('reloadTab').classList.toggle('disabled', tabId <= 0); - document.getElementById('popupPanelButton').classList.toggle('disabled', tabId <= 0); - popupPanel.update(); -}; - -/******************************************************************************/ - -var reloadTab = function(ev) { - let tabId = tabIdFromPageSelector(); - if ( tabId <= 0 ) { return; } - vAPI.messaging.send( - 'default', - { - what: 'forceReloadTab', - tabId: tabId, - bypassCache: ev && (ev.ctrlKey || ev.metaKey || ev.shiftKey) - } - ); -}; - -/******************************************************************************/ - -var onMaxEntriesChanged = function() { - var raw = uDom(this).val(); - try { - maxEntries = parseInt(raw, 10); - if ( isNaN(maxEntries) ) { - maxEntries = 0; - } - } catch (e) { - maxEntries = 0; - } - - vAPI.messaging.send('logger-ui.js', { - what: 'userSettings', - name: 'maxLoggedRequests', - value: maxEntries - }); - - truncateLog(maxEntries); -}; - -/******************************************************************************/ - -var popupPanel = (function() { - let tabId = 0; - let popupObserver = null; - let timer; - - let resizePopup = function() { - if ( timer !== undefined ) { - cancelAnimationFrame(timer); - timer = undefined; - } - let container = document.getElementById('popupPanelContainer'); - let popup = container.querySelector('iframe'); - if ( popup === null ) { return; } - let popupBody = popup.contentWindow.document.body; - if ( - popupBody.clientWidth !== 0 && - container.clientWidth !== popupBody.clientWidth - ) { - container.style.setProperty('width', popupBody.clientWidth + 'px'); - } - popup.style.removeProperty('height'); - if ( - popupBody.clientHeight !== 0 && - popup.clientHeight !== popupBody.clientHeight - ) { - popup.style.setProperty('height', popupBody.clientHeight + 'px'); - } - let ph = document.documentElement.clientHeight; - let crect = container.getBoundingClientRect(); - if ( crect.height > ph ) { - popup.style.setProperty('height', 'calc(' + ph + 'px - 1.8em)'); - } - // Adjust width for presence/absence of vertical scroll bar which may - // have appeared as a result of last operation. - let cw = container.clientWidth; - let dw = popup.contentWindow.document.documentElement.clientWidth; - if ( cw !== dw ) { - container.style.setProperty('width', 2 * cw - dw + 'px'); - } - }; - - let onResizeRequested = function() { - let popup = document.querySelector('#popupPanelContainer iframe'); - if ( popup === null ) { return; } - let popupBody = popup.contentWindow.document.body; - if ( popupBody.hasAttribute('data-resize-popup') === false ) { return; } - popupBody.removeAttribute('data-resize-popup'); - if ( timer === undefined ) { - timer = requestAnimationFrame(( ) => { - timer = undefined; - resizePopup(); - }); - } - }; - - let onLoad = function() { - resizePopup(); - let popup = document.querySelector('#popupPanelContainer iframe'); - if ( popup === null ) { return; } - let popupBody = popup.contentDocument.body; - popupBody.removeAttribute('data-resize-popup'); - if ( popupObserver === null ) { - popupObserver = new MutationObserver(onResizeRequested); - } - popupObserver.observe(popupBody, { - attributes: true, - attributesFilter: [ 'data-resize-popup' ] - }); - document.body.classList.add('popupPanelOn'); - }; - - let start = function() { - let newTabId = tabIdFromPageSelector(); - if ( newTabId <= 0 ) { - return stop(); - } - if ( newTabId === tabId ) { return; } - tabId = newTabId; - let container = document.getElementById('popupPanelContainer'); - let popup = container.querySelector('iframe'); - if ( popup === null ) { - popup = document.createElement('iframe'); - popup.addEventListener('load', onLoad); - } - if ( popupObserver !== null ) { - popupObserver.disconnect(); - } - popup.setAttribute('src', 'popup.html?tabId=' + tabId); - if ( popup.parentNode !== null ) { return; } - let rect = document.getElementById('toolbar').getBoundingClientRect(); - container.style.top = rect.height + 'px'; - container.appendChild(popup); - }; - - let stop = function() { - document.body.classList.remove('popupPanelOn'); - popupObserver.disconnect(); - popupObserver = null; - let popup = document.querySelector('#popupPanelContainer iframe'); - if ( popup !== null ) { - popup.removeEventListener('load', onLoad); - removeSelf(popup); - } - tabId = 0; - }; - - return { - get tabId() { - return tabId; - }, - toggle: function(state) { - if ( state === undefined ) { - state = tabId === 0; - } - if ( state === false ) { - stop(); - } else { - start(); - } - }, - update: function() { - if ( tabId !== 0 ) { - start(); - } - } - }; -})(); - -/******************************************************************************/ - -var rowFilterer = (function() { - var filters = []; - - var parseInput = function() { - filters = []; - - var rawPart, hardBeg, hardEnd; - var raw = uDom('#filterInput').val().trim(); - var rawParts = raw.split(/\s+/); - var reStr, reStrs = [], not = false; - var n = rawParts.length; - for ( var i = 0; i < n; i++ ) { - rawPart = rawParts[i]; - if ( rawPart.charAt(0) === '!' ) { - if ( reStrs.length === 0 ) { - not = true; - } - rawPart = rawPart.slice(1); - } - hardBeg = rawPart.charAt(0) === '|'; - if ( hardBeg ) { - rawPart = rawPart.slice(1); - } - hardEnd = rawPart.slice(-1) === '|'; - if ( hardEnd ) { - rawPart = rawPart.slice(0, -1); - } - if ( rawPart === '' ) { - continue; - } - // https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions - reStr = rawPart.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - if ( hardBeg ) { - reStr = '(?:^|\\s)' + reStr; - } - if ( hardEnd ) { - reStr += '(?:\\s|$)'; - } - reStrs.push(reStr); - if ( i < (n - 1) && rawParts[i + 1] === '||' ) { - i += 1; - continue; - } - reStr = reStrs.length === 1 ? reStrs[0] : reStrs.join('|'); - filters.push({ - re: new RegExp(reStr, 'i'), - r: !not - }); - reStrs = []; - not = false; - } - }; - - var filterOne = function(tr, clean) { - var ff = filters; - var fcount = ff.length; - if ( fcount === 0 && clean === true ) { - return; - } - // do not filter out doc boundaries, they help separate important - // section of log. - var cl = tr.classList; - if ( cl.contains('doc') ) { - return; - } - if ( fcount === 0 ) { - cl.remove('f'); - return; - } - var cc = tr.cells; - var ccount = cc.length; - var hit, j, f; - // each filter expression must hit (implicit and-op) - // if... - // positive filter expression = there must one hit on any field - // negative filter expression = there must be no hit on all fields - for ( var i = 0; i < fcount; i++ ) { - f = ff[i]; - hit = !f.r; - for ( j = 0; j < ccount; j++ ) { - if ( f.re.test(cc[j].textContent) ) { - hit = f.r; - break; - } - } - if ( !hit ) { - cl.add('f'); - return; - } - } - cl.remove('f'); - }; - - var filterAll = function() { - // Special case: no filter - if ( filters.length === 0 ) { - uDom('#content tr').removeClass('f'); - return; - } - var tbody = document.querySelector('#content tbody'); - var rows = tbody.rows; - var i = rows.length; - while ( i-- ) { - filterOne(rows[i]); - } - }; - - var onFilterChangedAsync = (function() { - var timer = null; - var commit = function() { - timer = null; - parseInput(); - filterAll(); - }; - return function() { - if ( timer !== null ) { - clearTimeout(timer); - } - timer = vAPI.setTimeout(commit, 750); - }; - })(); - - var onFilterButton = function() { - var cl = document.body.classList; - cl.toggle('f', cl.contains('f') === false); - }; - - uDom('#filterButton').on('click', onFilterButton); - uDom('#filterInput').on('input', onFilterChangedAsync); - - return { - filterOne: filterOne, - filterAll: filterAll - }; -})(); - -/******************************************************************************/ - -var ruleEditor = (function() { - let ruleEditorNode = document.getElementById('ruleEditor'); - let ruleActionPicker = document.getElementById('ruleActionPicker'); - let listeners = []; - - let addListener = function(node, type, handler, bits) { - let options; - if ( typeof bits === 'number' && (bits & 0b11) !== 0 ) { - options = {}; - if ( bits & 0b01 ) { - options.capture = true; - } - if ( bits & 0b10 ) { - options.passive = true; - } - } - listeners.push({ node, type, handler, options }); - return node.addEventListener(type, handler, options); - }; - - let setup = function(details) { - ruleEditorNode.setAttribute('data-tabid', details.tabId); - ruleEditorNode.classList.toggle( - 'colorblind', - details.options.colorBlindFriendly === true - ); - - // Initialize scope selector - let srcDn = domainFromSrcHostname(details.srcHn); - let scope = details.options.popupScopeLevel === '*' ? - '*' : - details.options.popupScopeLevel === 'domain' ? - srcDn : - details.srcHn; - uMatrixScopeWidget.init(srcDn, details.srcHn, scope, ruleEditorNode); - - // Create rule rows - let ruleWidgets = ruleEditorNode.querySelector('.ruleWidgets'); - removeChildren(ruleWidgets); - let ruleWidgetTemplate = - document.querySelector('#ruleRowTemplate .ruleRow'); - - // Rules: specific to desHn, from broadest to narrowest - let desHn = details.desHn; - let desDn = domainFromDesHostname(desHn); - for (;;) { - let ruleRow = ruleWidgetTemplate.cloneNode(true); - ruleRow.setAttribute('data-deshn', desHn); - ruleRow.children[0].textContent = desHn; - ruleRow.children[1].setAttribute('data-type', details.type); - if ( desHn === details.desHn ) { - ruleRow.children[1].textContent = '1'; - } - prependChild(ruleWidgets, ruleRow); - if ( desHn === desDn ) { break; } - let pos = desHn.indexOf('.'); - if ( pos === -1 ) { break; } - desHn = desHn.slice(pos + 1); - } - - // Rules: 1st-party, if needed - if ( desDn === srcDn ) { - let ruleRow = ruleWidgetTemplate.cloneNode(true); - ruleRow.setAttribute('data-deshn', '1st-party'); - ruleRow.children[0].textContent = '1st-party'; - ruleRow.children[1].setAttribute('data-type', details.type); - prependChild(ruleWidgets, ruleRow); - } - - // Rules: unspecific - { - let ruleRow = ruleWidgetTemplate.cloneNode(true); - ruleRow.setAttribute('data-deshn', '*'); - ruleRow.children[0].textContent = 'all'; - ruleRow.children[1].setAttribute('data-type', details.type); - ruleRow.children[1].textContent = details.type; - prependChild(ruleWidgets, ruleRow); - } - - colorize(); - - addListener(ruleEditorNode, 'click', quitHandler, 0b01); - addListener(window, 'uMatrixScopeWidgetChange', scopeChangeHandler); - addListener(ruleWidgets, 'mouseenter', attachRulePicker, 0b11); - addListener(ruleWidgets, 'mouseleave', removeRulePicker, 0b11); - addListener(ruleActionPicker, 'click', rulePickerHandler, 0b11); - addListener(ruleEditorNode.querySelector('#matrixReloadButton'), 'click', reload); - addListener(ruleEditorNode.querySelector('#matrixRevertButton'), 'click', revert); - addListener(ruleEditorNode.querySelector('#matrixPersistButton'), 'click', persist); - - document.body.appendChild(ruleEditorNode); - }; - - let colorize = function() { - let srcHn = uMatrixScopeWidget.getScope(); - let ruleCells = ruleEditorNode.querySelectorAll('.ruleCell'); - let ruleParts = []; - for ( let ruleCell of ruleCells ) { - ruleParts.push( - srcHn, - ruleCell.closest('.ruleRow').getAttribute('data-deshn'), - ruleCell.getAttribute('data-type') - ); - } - vAPI.messaging.send( - 'default', - { what: 'getCellColors', ruleParts }, - response => { - let tColors = response.tColors, - pColors = response.pColors, - diffCount = 0; - for ( let i = 0; i < ruleCells.length; i++ ) { - let ruleCell = ruleCells[i]; - let tColor = tColors[i]; - let pColor = pColors[i]; - ruleCell.setAttribute('data-tcolor', tColor); - ruleCell.setAttribute('data-pcolor', pColor); - if ( tColor === pColor ) { continue; } - if ( tColor < 128 && pColor < 128 ) { continue; } - diffCount += 1; - } - let dirty = diffCount !== 0; - ruleEditorNode - .querySelector('#matrixPersistButton .fa-icon-badge') - .textContent = dirty ? diffCount : ''; - ruleEditorNode - .querySelector('#matrixRevertButton') - .classList - .toggle('disabled', !dirty); - ruleEditorNode - .querySelector('#matrixPersistButton') - .classList - .toggle('disabled', !dirty); - } - ); - }; - - let quitHandler = function(ev) { - let target = ev.target; - if ( target.classList.contains('modalDialog') ) { - stop(); - } - }; - - let scopeChangeHandler = function() { - colorize(); - }; - - let attachRulePicker = function(ev) { - let target = ev.target; - if ( - target instanceof HTMLElement === false || - target.classList.contains('ruleCell') === false - ) { - return; - } - target.appendChild(ruleActionPicker); - }; - - let removeRulePicker = function(ev) { - let target = ev.target; - if ( - target instanceof HTMLElement === false || - ruleActionPicker.closest('.ruleCell') === target.closest('.ruleCell') - ) { - return; - } - removeSelf(ruleActionPicker); - }; - - let rulePickerHandler = function(ev) { - let action = ev.target.className; - if ( action !== 'allowRule' && action !== 'blockRule' ) { return; } - let cell = ev.target.closest('.ruleCell'); - if ( cell === null ) { return; } - let row = cell.closest('.ruleRow'); - let desHn = row.getAttribute('data-deshn'); - let type = cell.getAttribute('data-type'); - let color = parseInt(cell.getAttribute('data-tcolor'), 10); - let what; - if ( color === 1 || color === 2 ) { - what = action === 'blockRule' ? - 'blacklistMatrixCell' : - 'whitelistMatrixCell'; - } else if ( desHn === '*' && type === '*' ) { - what = color === 130 ? - 'blacklistMatrixCell' : - 'whitelistMatrixCell'; - } else { - what = 'graylistMatrixCell'; - } - let request = { - what, - srcHostname: uMatrixScopeWidget.getScope(), - desHostname: desHn, - type - }; - vAPI.messaging.send('default', request, colorize); - }; - - - let reload = function(ev) { - vAPI.messaging.send('default', { - what: 'forceReloadTab', - tabId: parseInt(ruleEditorNode.getAttribute('data-tabid'), 10), - bypassCache: ev && (ev.ctrlKey || ev.metaKey || ev.shiftKey) - }); - }; - - let diff = function() { - let entries = []; - let cells = ruleEditorNode.querySelectorAll('.ruleCell'); - let srcHn = uMatrixScopeWidget.getScope(); - for ( let cell of cells ) { - let tColor = cell.getAttribute('data-tcolor'); - let pColor = cell.getAttribute('data-pcolor'); - if ( tColor === pColor || tColor < 128 && pColor < 128 ) { - continue; - } - let row = cell.closest('.ruleRow'); - entries.push({ - srcHn, - desHn: row.getAttribute('data-deshn'), - type: cell.getAttribute('data-type') - }); - } - return entries; - }; - - let persist = function() { - let entries = diff(); - if ( entries.length === 0 ) { return; } - vAPI.messaging.send( - 'default', - { what: 'rulesetPersist', entries }, - colorize - ); - }; - - let revert = function() { - let entries = diff(); - if ( entries.length === 0 ) { return; } - vAPI.messaging.send( - 'default', - { what: 'rulesetRevert', entries }, - colorize - ); - }; - - let start = function(ev) { - let targetRow = ev.target.parentElement; - let srcHn = targetRow.getAttribute('data-srchn') || ''; - let desHn = targetRow.getAttribute('data-deshn') || ''; - let type = targetRow.getAttribute('data-type') || ''; - if ( srcHn === '' || desHn === '' || type === '' ) { return; } - let tabId = parseInt(targetRow.getAttribute('data-tabid'), 10); - - vAPI.messaging.send( - 'logger-ui.js', - { what: 'getRuleEditorOptions' }, - options => { setup({ tabId, srcHn, desHn, type, options }); } - ); - }; - - let stop = function() { - for ( let { node, type, handler, options } of listeners ) { - node.removeEventListener(type, handler, options); - } - listeners = []; - ruleEditorNode - .querySelector('#matrixReloadButton') - .removeEventListener('click', reload); - removeSelf(ruleEditorNode); - }; - - return { start, stop }; -})(); - -/******************************************************************************/ - -var toJunkyard = function(trs) { - trs.remove(); - var i = trs.length; - while ( i-- ) { - trJunkyard.push(trs.nodeAt(i)); - } -}; - -/******************************************************************************/ - -var clearBuffer = function() { - var tbody = document.querySelector('#content tbody'); - var tr; - while ( tbody.firstChild !== null ) { - tr = tbody.lastElementChild; - trJunkyard.push(tbody.removeChild(tr)); - } - uDom('#clear').addClass('disabled'); - uDom('#clean').addClass('disabled'); -}; - -/******************************************************************************/ - -var cleanBuffer = function() { - var rows = uDom('#content tr.tab:not(.canMtx)').remove(); - var i = rows.length; - while ( i-- ) { - trJunkyard.push(rows.nodeAt(i)); - } - uDom('#clean').addClass('disabled'); -}; - -/******************************************************************************/ - -var toggleCompactView = function() { - document.body.classList.toggle('compactView'); - uDom('#content table .vExpanded').removeClass('vExpanded'); -}; - -var toggleCompactRow = function(ev) { - ev.target.parentElement.classList.toggle('vExpanded'); -}; - -/******************************************************************************/ - -var grabView = function() { - if ( ownerId === undefined ) { - ownerId = Date.now(); - } - readLogBufferAsync(); -}; - -var releaseView = function() { - if ( ownerId === undefined ) { return; } - vAPI.messaging.send( - 'logger-ui.js', - { what: 'releaseView', ownerId: ownerId } - ); - ownerId = undefined; -}; - -window.addEventListener('pagehide', releaseView); -window.addEventListener('pageshow', grabView); -// https://bugzilla.mozilla.org/show_bug.cgi?id=1398625 -window.addEventListener('beforeunload', releaseView); - -/******************************************************************************/ - -readLogBuffer(); - -uDom('#pageSelector').on('change', pageSelectorChanged); -uDom('#reloadTab').on('click', reloadTab); -uDom('#popupPanelButton').on('click', ( ) => popupPanel.toggle()); -uDom('#compactViewToggler').on('click', toggleCompactView); -uDom('#clean').on('click', cleanBuffer); -uDom('#clear').on('click', clearBuffer); -uDom('#maxEntries').on('change', onMaxEntriesChanged); -uDom('#content table').on('click', 'tr > td:nth-of-type(1)', toggleCompactRow); -uDom('#content table').on('click', 'tr[data-srchn][data-deshn][data-type] > td:nth-of-type(3)', ruleEditor.start); - -/******************************************************************************/ - -})(); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/logger.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/logger.js deleted file mode 100644 index 3e86f44..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/logger.js +++ /dev/null @@ -1,90 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to block requests. - Copyright (C) 2015-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -'use strict'; - -/******************************************************************************/ -/******************************************************************************/ - -µMatrix.logger = (function() { - - let LogEntry = function(details) { - this.init(details); - }; - - LogEntry.prototype.init = function(details) { - this.tstamp = Date.now(); - this.details = JSON.stringify(details); - }; - - let buffer = null; - let lastReadTime = 0; - let writePtr = 0; - - // After 60 seconds without being read, a buffer will be considered - // unused, and thus removed from memory. - let logBufferObsoleteAfter = 30 * 1000; - - let janitor = function() { - if ( - buffer !== null && - lastReadTime < (Date.now() - logBufferObsoleteAfter) - ) { - buffer = null; - writePtr = 0; - api.ownerId = undefined; - api.enabled = false; - } - if ( buffer !== null ) { - vAPI.setTimeout(janitor, logBufferObsoleteAfter); - } - }; - - let api = { - enabled: false, - ownerId: undefined, - writeOne: function(details) { - if ( buffer === null ) { return; } - if ( writePtr === buffer.length ) { - buffer.push(new LogEntry(details)); - } else { - buffer[writePtr].init(details); - } - writePtr += 1; - }, - readAll: function(ownerId) { - this.ownerId = ownerId; - this.enabled = true; - if ( buffer === null ) { - buffer = []; - vAPI.setTimeout(janitor, logBufferObsoleteAfter); - } - let out = buffer.slice(0, writePtr); - writePtr = 0; - lastReadTime = Date.now(); - return out; - }, - }; - - return api; -})(); - -/******************************************************************************/ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/main-blocked.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/main-blocked.js deleted file mode 100644 index da4a750..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/main-blocked.js +++ /dev/null @@ -1,177 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to block requests. - Copyright (C) 2015-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/* global uDom */ - -'use strict'; - -/******************************************************************************/ - -(function() { - -/******************************************************************************/ - -let details = {}; - -(function() { - let matches = /details=([^&]+)/.exec(window.location.search); - if ( matches === null ) { return; } - try { - details = JSON.parse(atob(matches[1])); - } catch(ex) { - } -})(); - -/******************************************************************************/ - -uDom('.what').text(details.url); -// uDom('#why').text(details.why.slice(3)); - -/******************************************************************************/ - -// https://github.com/gorhill/uMatrix/issues/502 -// Code below originally imported from: -// https://github.com/gorhill/uBlock/blob/master/src/js/document-blocked.js - -(function() { - let reURL = /^https?:\/\//; - - let liFromParam = function(name, value) { - if ( value === '' ) { - value = name; - name = ''; - } - let li = document.createElement('li'); - let span = document.createElement('span'); - span.textContent = name; - li.appendChild(span); - if ( name !== '' && value !== '' ) { - li.appendChild(document.createTextNode(' = ')); - } - span = document.createElement('span'); - if ( reURL.test(value) ) { - let a = document.createElement('a'); - a.href = a.textContent = value; - span.appendChild(a); - } else { - span.textContent = value; - } - li.appendChild(span); - return li; - }; - - let safeDecodeURIComponent = function(s) { - try { - s = decodeURIComponent(s); - } catch (ex) { - } - return s; - }; - - let renderParams = function(parentNode, rawURL, depth = 0) { - let a = document.createElement('a'); - a.href = rawURL; - if ( a.search.length === 0 ) { return false; } - - let pos = rawURL.indexOf('?'); - let li = liFromParam( - vAPI.i18n('mainBlockedNoParamsPrompt'), - rawURL.slice(0, pos) - ); - parentNode.appendChild(li); - - let params = a.search.slice(1).split('&'); - for ( var i = 0; i < params.length; i++ ) { - let param = params[i]; - let pos = param.indexOf('='); - if ( pos === -1 ) { - pos = param.length; - } - let name = safeDecodeURIComponent(param.slice(0, pos)); - let value = safeDecodeURIComponent(param.slice(pos + 1)); - li = liFromParam(name, value); - if ( depth < 2 && reURL.test(value) ) { - let ul = document.createElement('ul'); - renderParams(ul, value, depth + 1); - li.appendChild(ul); - } - parentNode.appendChild(li); - } - return true; - }; - - let hasParams = renderParams(uDom.nodeFromId('parsed'), details.url); - if ( hasParams === false ) { return; } - - let theURLNode = document.getElementById('theURL'); - theURLNode.classList.add('hasParams'); - theURLNode.classList.toggle( - 'collapsed', - vAPI.localStorage.getItem('document-blocked-collapse-url') === 'true' - ); - - let toggleCollapse = function() { - vAPI.localStorage.setItem( - 'document-blocked-collapse-url', - theURLNode.classList.toggle('collapsed').toString() - ); - }; - - theURLNode.querySelector('.collapse').addEventListener( - 'click', - toggleCollapse - ); - theURLNode.querySelector('.expand').addEventListener( - 'click', - toggleCollapse - ); -})(); - -/******************************************************************************/ - -if ( window.history.length > 1 ) { - uDom('#back').on('click', function() { window.history.back(); }); - uDom('#bye').css('display', 'none'); -} else { - uDom('#bye').on('click', function() { window.close(); }); - uDom('#back').css('display', 'none'); -} - -/******************************************************************************/ - -// See if the target hostname is still blacklisted, and if not, navigate to it. - -vAPI.messaging.send('main-blocked.js', { - what: 'mustBlock', - scope: details.hn, - hostname: details.hn, - type: details.type -}, response => { - if ( response === false ) { - window.location.replace(details.url); - } -}); - -/******************************************************************************/ - -})(); - -/******************************************************************************/ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/matrix.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/matrix.js deleted file mode 100644 index 26311fd..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/matrix.js +++ /dev/null @@ -1,886 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to black/white list requests. - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -/* global punycode */ - -'use strict'; - -/******************************************************************************/ - -µMatrix.Matrix = (function() { - -/******************************************************************************/ - -var µm = µMatrix; -var selfieVersion = 1; - -/******************************************************************************/ - -var Matrix = function() { - this.reset(); - this.sourceRegister = ''; - this.decomposedSourceRegister = ['']; - this.specificityRegister = 0; -}; - -/******************************************************************************/ - -Matrix.Transparent = 0; -Matrix.Red = 1; -Matrix.Green = 2; -Matrix.Gray = 3; - -Matrix.Indirect = 0x00; -Matrix.Direct = 0x80; - -Matrix.RedDirect = Matrix.Red | Matrix.Direct; -Matrix.RedIndirect = Matrix.Red | Matrix.Indirect; -Matrix.GreenDirect = Matrix.Green | Matrix.Direct; -Matrix.GreenIndirect = Matrix.Green | Matrix.Indirect; -Matrix.GrayDirect = Matrix.Gray | Matrix.Direct; -Matrix.GrayIndirect = Matrix.Gray | Matrix.Indirect; - -/******************************************************************************/ - -var typeBitOffsets = new Map([ - [ '*', 0 ], - [ 'doc', 2 ], - [ 'cookie', 4 ], - [ 'css', 6 ], - [ 'image', 8 ], - [ 'media', 10 ], - [ 'script', 12 ], - [ 'xhr', 14 ], - [ 'frame', 16 ], - [ 'other', 18 ] -]); - -var stateToNameMap = new Map([ - [ 1, 'block' ], - [ 2, 'allow' ], - [ 3, 'inherit' ] -]); - -var nameToStateMap = { - 'block': 1, - 'allow': 2, - 'noop': 2, - 'inherit': 3 -}; - -var switchBitOffsets = new Map([ - [ 'matrix-off', 0 ], - [ 'https-strict', 2 ], - /* 4 is now unused, formerly assigned to UA spoofing */ - [ 'referrer-spoof', 6 ], - [ 'noscript-spoof', 8 ], - [ 'no-workers', 10 ] -]); - -var switchStateToNameMap = new Map([ - [ 1, 'true' ], - [ 2, 'false' ] -]); - -var nameToSwitchStateMap = new Map([ - [ 'true', 1 ], - [ 'false', 2 ] -]); - -/******************************************************************************/ - -Matrix.columnHeaderIndices = (function() { - var out = new Map(), - i = 0; - for ( var type of typeBitOffsets.keys() ) { - out.set(type, i++); - } - return out; -})(); - - -Matrix.switchNames = new Set(switchBitOffsets.keys()); - -/******************************************************************************/ - -// For performance purpose, as simple tests as possible -var reHostnameVeryCoarse = /[g-z_-]/; -var reIPv4VeryCoarse = /\.\d+$/; - -// http://tools.ietf.org/html/rfc5952 -// 4.3: "MUST be represented in lowercase" -// Also: http://en.wikipedia.org/wiki/IPv6_address#Literal_IPv6_addresses_in_network_resource_identifiers - -var isIPAddress = function(hostname) { - if ( reHostnameVeryCoarse.test(hostname) ) { - return false; - } - if ( reIPv4VeryCoarse.test(hostname) ) { - return true; - } - return hostname.charAt(0) === '['; -}; - -/******************************************************************************/ - -var punycodeIf = function(hn) { - return reNotASCII.test(hn) ? punycode.toASCII(hn) : hn; -}; - -var unpunycodeIf = function(hn) { - return hn.indexOf('xn--') !== -1 ? punycode.toUnicode(hn) : hn; -}; - -var reNotASCII = /[^\x20-\x7F]/; - -/******************************************************************************/ - -var toBroaderHostname = function(hostname) { - if ( hostname === '*' ) { return ''; } - if ( isIPAddress(hostname) ) { - return toBroaderIPAddress(hostname); - } - var pos = hostname.indexOf('.'); - if ( pos === -1 ) { - return '*'; - } - return hostname.slice(pos + 1); -}; - -var toBroaderIPAddress = function(ipaddress) { - // Can't broaden IPv6 (for now) - if ( ipaddress.charAt(0) === '[' ) { - return '*'; - } - var pos = ipaddress.lastIndexOf('.'); - return pos !== -1 ? ipaddress.slice(0, pos) : '*'; -}; - -Matrix.toBroaderHostname = toBroaderHostname; - -/******************************************************************************/ - -// Find out src-des relationship, using coarse-to-fine grained tests for -// speed. If desHostname is 1st-party to srcHostname, the domain is returned, -// otherwise the empty string. - -var extractFirstPartyDesDomain = function(srcHostname, desHostname) { - if ( srcHostname === '*' || desHostname === '*' || desHostname === '1st-party' ) { - return ''; - } - var µmuri = µm.URI; - var srcDomain = µmuri.domainFromHostname(srcHostname) || srcHostname; - var desDomain = µmuri.domainFromHostname(desHostname) || desHostname; - return desDomain === srcDomain ? desDomain : ''; -}; - -/******************************************************************************/ - -Matrix.prototype.reset = function() { - this.switches = new Map(); - this.rules = new Map(); - this.rootValue = Matrix.RedIndirect; - this.modifiedTime = 0; - if ( this.modifyEventTimer !== undefined ) { - clearTimeout(this.modifyEventTimer); - } - this.modifyEventTimer = undefined; - this.modified(); -}; - -/******************************************************************************/ - -Matrix.prototype.modified = function() { - this.modifiedTime = Date.now(); - if ( this.modifyEventTimer !== undefined ) { return; } - this.modifyEventTimer = vAPI.setTimeout( - ( ) => { - this.modifyEventTimer = undefined; - window.dispatchEvent( - new CustomEvent( - 'matrixRulesetChange', - { detail: this } - ) - ); - }, - 149 - ); -}; - -/******************************************************************************/ - -Matrix.prototype.decomposeSource = function(srcHostname) { - if ( srcHostname === this.sourceRegister ) { return; } - var hn = srcHostname; - this.decomposedSourceRegister[0] = this.sourceRegister = hn; - var i = 1; - for (;;) { - hn = toBroaderHostname(hn); - this.decomposedSourceRegister[i++] = hn; - if ( hn === '' ) { break; } - } -}; - -/******************************************************************************/ - -// Copy another matrix to self. Do this incrementally to minimize impact on -// a live matrix. - -Matrix.prototype.assign = function(other) { - var k, entry; - // Remove rules not in other - for ( k of this.rules.keys() ) { - if ( other.rules.has(k) === false ) { - this.rules.delete(k); - } - } - // Remove switches not in other - for ( k of this.switches.keys() ) { - if ( other.switches.has(k) === false ) { - this.switches.delete(k); - } - } - // Add/change rules in other - for ( entry of other.rules ) { - this.rules.set(entry[0], entry[1]); - } - // Add/change switches in other - for ( entry of other.switches ) { - this.switches.set(entry[0], entry[1]); - } - this.modified(); - return this; -}; - -// https://www.youtube.com/watch?v=e9RS4biqyAc - -/******************************************************************************/ - -// If value is undefined, the switch is removed - -Matrix.prototype.setSwitch = function(switchName, srcHostname, newVal) { - var bitOffset = switchBitOffsets.get(switchName); - if ( bitOffset === undefined ) { - return false; - } - if ( newVal === this.evaluateSwitch(switchName, srcHostname) ) { - return false; - } - var bits = this.switches.get(srcHostname) || 0; - bits &= ~(3 << bitOffset); - bits |= newVal << bitOffset; - if ( bits === 0 ) { - this.switches.delete(srcHostname); - } else { - this.switches.set(srcHostname, bits); - } - this.modified(); - return true; -}; - -/******************************************************************************/ - -Matrix.prototype.setCell = function(srcHostname, desHostname, type, state) { - var bitOffset = typeBitOffsets.get(type), - k = srcHostname + ' ' + desHostname, - oldBitmap = this.rules.get(k); - if ( oldBitmap === undefined ) { - oldBitmap = 0; - } - var newBitmap = oldBitmap & ~(3 << bitOffset) | (state << bitOffset); - if ( newBitmap === oldBitmap ) { - return false; - } - if ( newBitmap === 0 ) { - this.rules.delete(k); - } else { - this.rules.set(k, newBitmap); - } - this.modified(); - return true; -}; - -/******************************************************************************/ - -Matrix.prototype.blacklistCell = function(srcHostname, desHostname, type) { - var r = this.evaluateCellZ(srcHostname, desHostname, type); - if ( r === 1 ) { - return false; - } - this.setCell(srcHostname, desHostname, type, 0); - r = this.evaluateCellZ(srcHostname, desHostname, type); - if ( r === 1 ) { - return true; - } - this.setCell(srcHostname, desHostname, type, 1); - return true; -}; - -/******************************************************************************/ - -Matrix.prototype.whitelistCell = function(srcHostname, desHostname, type) { - var r = this.evaluateCellZ(srcHostname, desHostname, type); - if ( r === 2 ) { - return false; - } - this.setCell(srcHostname, desHostname, type, 0); - r = this.evaluateCellZ(srcHostname, desHostname, type); - if ( r === 2 ) { - return true; - } - this.setCell(srcHostname, desHostname, type, 2); - return true; -}; - -/******************************************************************************/ - -Matrix.prototype.graylistCell = function(srcHostname, desHostname, type) { - var r = this.evaluateCellZ(srcHostname, desHostname, type); - if ( r === 0 || r === 3 ) { - return false; - } - this.setCell(srcHostname, desHostname, type, 0); - r = this.evaluateCellZ(srcHostname, desHostname, type); - if ( r === 0 || r === 3 ) { - return true; - } - this.setCell(srcHostname, desHostname, type, 3); - return true; -}; - -/******************************************************************************/ - -Matrix.prototype.evaluateCell = function(srcHostname, desHostname, type) { - var key = srcHostname + ' ' + desHostname; - var bitmap = this.rules.get(key); - if ( bitmap === undefined ) { - return 0; - } - return bitmap >> typeBitOffsets.get(type) & 3; -}; - -/******************************************************************************/ - -Matrix.prototype.evaluateCellZ = function(srcHostname, desHostname, type) { - this.decomposeSource(srcHostname); - - var bitOffset = typeBitOffsets.get(type), - s, v, i = 0; - for (;;) { - s = this.decomposedSourceRegister[i++]; - if ( s === '' ) { break; } - v = this.rules.get(s + ' ' + desHostname); - if ( v !== undefined ) { - v = v >> bitOffset & 3; - if ( v !== 0 ) { - return v; - } - } - } - // srcHostname is '*' at this point - - // Preset blacklisted hostnames are blacklisted in global scope - if ( type === '*' && µm.ubiquitousBlacklist.test(desHostname) ) { - return 1; - } - - // https://github.com/gorhill/uMatrix/issues/65 - // Hardcoded global `doc` rule - if ( type === 'doc' && desHostname === '*' ) { - return 2; - } - - return 0; -}; - -/******************************************************************************/ - -Matrix.prototype.evaluateCellZXY = function(srcHostname, desHostname, type) { - // Matrix filtering switch - this.specificityRegister = 0; - if ( this.evaluateSwitchZ('matrix-off', srcHostname) ) { - return Matrix.GreenIndirect; - } - - // TODO: There are cells evaluated twice when the type is '*'. Unsure - // whether it's worth trying to avoid that, as this could introduce - // overhead which may not be gained back by skipping the redundant tests. - // And this happens *only* when building the matrix UI, not when - // evaluating net requests. - - // Specific-hostname specific-type cell - this.specificityRegister = 1; - var r = this.evaluateCellZ(srcHostname, desHostname, type); - if ( r === 1 ) { return Matrix.RedDirect; } - if ( r === 2 ) { return Matrix.GreenDirect; } - - // Specific-hostname any-type cell - this.specificityRegister = 2; - var rl = this.evaluateCellZ(srcHostname, desHostname, '*'); - if ( rl === 1 ) { return Matrix.RedIndirect; } - - var d = desHostname; - var firstPartyDesDomain = extractFirstPartyDesDomain(srcHostname, desHostname); - - // Ancestor cells, up to 1st-party destination domain - if ( firstPartyDesDomain !== '' ) { - this.specificityRegister = 3; - for (;;) { - if ( d === firstPartyDesDomain ) { break; } - d = d.slice(d.indexOf('.') + 1); - - // specific-hostname specific-type cell - r = this.evaluateCellZ(srcHostname, d, type); - if ( r === 1 ) { return Matrix.RedIndirect; } - if ( r === 2 ) { return Matrix.GreenIndirect; } - // Do not override a narrower rule - if ( rl !== 2 ) { - rl = this.evaluateCellZ(srcHostname, d, '*'); - if ( rl === 1 ) { return Matrix.RedIndirect; } - } - } - - // 1st-party specific-type cell: it's a special row, looked up only - // when destination is 1st-party to source. - r = this.evaluateCellZ(srcHostname, '1st-party', type); - if ( r === 1 ) { return Matrix.RedIndirect; } - if ( r === 2 ) { return Matrix.GreenIndirect; } - // Do not override narrower rule - if ( rl !== 2 ) { - rl = this.evaluateCellZ(srcHostname, '1st-party', '*'); - if ( rl === 1 ) { return Matrix.RedIndirect; } - } - } - - // Keep going, up to root - this.specificityRegister = 4; - for (;;) { - d = toBroaderHostname(d); - if ( d === '*' ) { break; } - - // specific-hostname specific-type cell - r = this.evaluateCellZ(srcHostname, d, type); - if ( r === 1 ) { return Matrix.RedIndirect; } - if ( r === 2 ) { return Matrix.GreenIndirect; } - // Do not override narrower rule - if ( rl !== 2 ) { - rl = this.evaluateCellZ(srcHostname, d, '*'); - if ( rl === 1 ) { return Matrix.RedIndirect; } - } - } - - // Any-hostname specific-type cells - this.specificityRegister = 5; - r = this.evaluateCellZ(srcHostname, '*', type); - // Line below is strict-blocking - if ( r === 1 ) { return Matrix.RedIndirect; } - // Narrower rule wins - if ( rl === 2 ) { return Matrix.GreenIndirect; } - if ( r === 2 ) { return Matrix.GreenIndirect; } - - // Any-hostname any-type cell - this.specificityRegister = 6; - r = this.evaluateCellZ(srcHostname, '*', '*'); - if ( r === 1 ) { return Matrix.RedIndirect; } - if ( r === 2 ) { return Matrix.GreenIndirect; } - return this.rootValue; -}; - -// https://www.youtube.com/watch?v=4C5ZkwrnVfM - -/******************************************************************************/ - -Matrix.prototype.evaluateRowZXY = function(srcHostname, desHostname) { - let out = []; - for ( let type of typeBitOffsets.keys() ) { - out.push(this.evaluateCellZXY(srcHostname, desHostname, type)); - } - return out; -}; - -/******************************************************************************/ - -Matrix.prototype.mustBlock = function(srcHostname, desHostname, type) { - return (this.evaluateCellZXY(srcHostname, desHostname, type) & 3) === Matrix.Red; -}; - -/******************************************************************************/ - -Matrix.prototype.srcHostnameFromRule = function(rule) { - return rule.slice(0, rule.indexOf(' ')); -}; - -/******************************************************************************/ - -Matrix.prototype.desHostnameFromRule = function(rule) { - return rule.slice(rule.indexOf(' ') + 1); -}; - -/******************************************************************************/ - -Matrix.prototype.setSwitchZ = function(switchName, srcHostname, newState) { - var bitOffset = switchBitOffsets.get(switchName); - if ( bitOffset === undefined ) { - return false; - } - var state = this.evaluateSwitchZ(switchName, srcHostname); - if ( newState === state ) { - return false; - } - if ( newState === undefined ) { - newState = !state; - } - var bits = this.switches.get(srcHostname) || 0; - bits &= ~(3 << bitOffset); - if ( bits === 0 ) { - this.switches.delete(srcHostname); - } else { - this.switches.set(srcHostname, bits); - } - this.modified(); - state = this.evaluateSwitchZ(switchName, srcHostname); - if ( state === newState ) { - return true; - } - this.switches.set(srcHostname, bits | ((newState ? 1 : 2) << bitOffset)); - return true; -}; - -/******************************************************************************/ - -// 0 = inherit from broader scope, up to default state -// 1 = non-default state -// 2 = forced default state (to override a broader non-default state) - -Matrix.prototype.evaluateSwitch = function(switchName, srcHostname) { - var bits = this.switches.get(srcHostname) || 0; - if ( bits === 0 ) { - return 0; - } - var bitOffset = switchBitOffsets.get(switchName); - if ( bitOffset === undefined ) { - return 0; - } - return (bits >> bitOffset) & 3; -}; - -/******************************************************************************/ - -Matrix.prototype.evaluateSwitchZ = function(switchName, srcHostname) { - var bitOffset = switchBitOffsets.get(switchName); - if ( bitOffset === undefined ) { return false; } - - this.decomposeSource(srcHostname); - - var s, bits, i = 0; - for (;;) { - s = this.decomposedSourceRegister[i++]; - if ( s === '' ) { break; } - bits = this.switches.get(s) || 0; - if ( bits !== 0 ) { - bits = bits >> bitOffset & 3; - if ( bits !== 0 ) { - return bits === 1; - } - } - } - return false; -}; - -/******************************************************************************/ - -Matrix.prototype.extractAllSourceHostnames = (function() { - var cachedResult = new Set(); - var matrixId = 0; - var readTime = 0; - - return function() { - if ( matrixId !== this.id || readTime !== this.modifiedTime ) { - cachedResult.clear(); - for ( var rule of this.rules.keys() ) { - cachedResult.add(rule.slice(0, rule.indexOf(' '))); - } - matrixId = this.id; - readTime = this.modifiedTime; - } - return cachedResult; - }; -})(); - -/******************************************************************************/ - -// https://github.com/gorhill/uMatrix/issues/759 -// Backward compatibility: 'plugin' => 'media' - -Matrix.prototype.partsFromLine = function(line) { - let fields = line.split(/\s+/); - if ( fields.length < 3 ) { return; } - - // Switches - if ( this.reSwitchRule.test(fields[0]) ) { - fields[0] = fields[0].slice(0, -1); - if ( switchBitOffsets.has(fields[0]) === false ) { return; } - fields[1] = punycodeIf(fields[1]); - fields[2] = nameToSwitchStateMap.get(fields[2]); - if ( fields[2] === undefined ) { return; } - fields.length = 3; - return fields; - } - - // Rules - if ( fields.length < 4 ) { return; } - fields[0] = punycodeIf(fields[0]); - fields[1] = punycodeIf(fields[1]); - if ( fields[2] === 'plugin' ) { fields[2] = 'media'; } - if ( typeBitOffsets.get(fields[2]) === undefined ) { return; } - if ( nameToStateMap.hasOwnProperty(fields[3]) === false ) { return; } - fields[3] = nameToStateMap[fields[3]]; - fields.length = 4; - return fields; -}; - -Matrix.prototype.reSwitchRule = /^[0-9a-z-]+:$/; - -/******************************************************************************/ - -Matrix.prototype.fromArray = function(lines, append) { - let matrix = append === true ? this : new Matrix(); - for ( let line of lines ) { - matrix.addFromLine(line); - } - if ( append !== true ) { - this.assign(matrix); - } - this.modified(); -}; - -Matrix.prototype.toArray = function() { - let out = []; - for ( let rule of this.rules.keys() ) { - let srcHostname = this.srcHostnameFromRule(rule); - let desHostname = this.desHostnameFromRule(rule); - for ( let type of typeBitOffsets.keys() ) { - let val = this.evaluateCell(srcHostname, desHostname, type); - if ( val === 0 ) { continue; } - out.push( - unpunycodeIf(srcHostname) + ' ' + - unpunycodeIf(desHostname) + ' ' + - type + ' ' + - stateToNameMap.get(val) - ); - } - } - for ( let srcHostname of this.switches.keys() ) { - for ( let switchName of switchBitOffsets.keys() ) { - let val = this.evaluateSwitch(switchName, srcHostname); - if ( val === 0 ) { continue; } - out.push( - switchName + ': ' + - srcHostname + ' ' + - switchStateToNameMap.get(val) - ); - } - } - return out; -}; - -/******************************************************************************/ - -Matrix.prototype.fromString = function(text, append) { - let matrix = append === true ? this : new Matrix(); - let textEnd = text.length; - let lineBeg = 0; - - while ( lineBeg < textEnd ) { - let lineEnd = text.indexOf('\n', lineBeg); - if ( lineEnd === -1 ) { - lineEnd = text.indexOf('\r', lineBeg); - if ( lineEnd === -1 ) { - lineEnd = textEnd; - } - } - let line = text.slice(lineBeg, lineEnd).trim(); - lineBeg = lineEnd + 1; - let pos = line.indexOf('# '); - if ( pos !== -1 ) { - line = line.slice(0, pos).trim(); - } - if ( line === '' ) { continue; } - matrix.addFromLine(line); - } - - if ( append !== true ) { - this.assign(matrix); - } - - this.modified(); -}; - -Matrix.prototype.toString = function() { - return this.toArray().join('\n'); -}; - -/******************************************************************************/ - -Matrix.prototype.addFromLine = function(line) { - let fields = this.partsFromLine(line); - if ( fields !== undefined ) { - // Switches - if ( fields.length === 3 ) { - return this.setSwitch(fields[0], fields[1], fields[2]); - } - // Rules - if ( fields.length === 4 ) { - return this.setCell(fields[0], fields[1], fields[2], fields[3]); - } - } -}; - -Matrix.prototype.removeFromLine = function(line) { - let fields = this.partsFromLine(line); - if ( fields !== undefined ) { - // Switches - if ( fields.length === 3 ) { - return this.setSwitch(fields[0], fields[1], 0); - } - // Rules - if ( fields.length === 4 ) { - return this.setCell(fields[0], fields[1], fields[2], 0); - } - } -}; - -/******************************************************************************/ - -Matrix.prototype.fromSelfie = function(selfie) { - if ( selfie.version !== selfieVersion ) { return false; } - this.switches = new Map(selfie.switches); - this.rules = new Map(selfie.rules); - this.modified(); - return true; -}; - -Matrix.prototype.toSelfie = function() { - return { - version: selfieVersion, - switches: Array.from(this.switches), - rules: Array.from(this.rules) - }; -}; - -/******************************************************************************/ - -Matrix.prototype.diff = function(other, srcHostname, desHostnames) { - var out = []; - var desHostname, type; - var switchName, i, thisVal, otherVal; - for (;;) { - for ( switchName of switchBitOffsets.keys() ) { - thisVal = this.evaluateSwitch(switchName, srcHostname); - otherVal = other.evaluateSwitch(switchName, srcHostname); - if ( thisVal !== otherVal ) { - out.push({ - 'what': switchName, - 'src': srcHostname - }); - } - } - i = desHostnames.length; - while ( i-- ) { - desHostname = desHostnames[i]; - for ( type of typeBitOffsets.keys() ) { - thisVal = this.evaluateCell(srcHostname, desHostname, type); - otherVal = other.evaluateCell(srcHostname, desHostname, type); - if ( thisVal === otherVal ) { continue; } - out.push({ - 'what': 'rule', - 'src': srcHostname, - 'des': desHostname, - 'type': type - }); - } - } - srcHostname = toBroaderHostname(srcHostname); - if ( srcHostname === '' ) { break; } - } - return out; -}; - -/******************************************************************************/ - -Matrix.prototype.applyDiff = function(diff, from) { - var changed = false; - var i = diff.length; - var action, val; - while ( i-- ) { - action = diff[i]; - if ( action.what === 'rule' ) { - val = from.evaluateCell(action.src, action.des, action.type); - changed = this.setCell(action.src, action.des, action.type, val) || changed; - continue; - } - if ( switchBitOffsets.has(action.what) ) { - val = from.evaluateSwitch(action.what, action.src); - changed = this.setSwitch(action.what, action.src, val) || changed; - continue; - } - } - return changed; -}; - -Matrix.prototype.copyRuleset = function(entries, from, deep) { - let changed = false; - for ( let entry of entries ) { - let srcHn = entry.srcHn; - for (;;) { - if ( - entry.switchName !== undefined && - switchBitOffsets.has(entry.switchName) - ) { - let val = from.evaluateSwitch(entry.switchName, srcHn); - if ( this.setSwitch(entry.switchName, srcHn, val) ) { - changed = true; - } - } else if ( entry.desHn && entry.type ) { - let val = from.evaluateCell(srcHn, entry.desHn, entry.type); - if ( this.setCell(srcHn, entry.desHn, entry.type, val) ) { - changed = true; - } - } - if ( !deep ) { break; } - srcHn = toBroaderHostname(srcHn); - if ( srcHn === '' ) { break; } - } - } - return changed; -}; - -/******************************************************************************/ - -return Matrix; - -/******************************************************************************/ - -// https://www.youtube.com/watch?v=wlNrQGmj6oQ - -})(); - -/******************************************************************************/ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/messaging.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/messaging.js deleted file mode 100644 index c8f08d0..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/messaging.js +++ /dev/null @@ -1,1034 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to black/white list requests. - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -/* globals publicSuffixList */ - -'use strict'; - -/******************************************************************************/ -/******************************************************************************/ - -// Default handler - -(function() { - -var µm = µMatrix; - -/******************************************************************************/ - -// Default is for commonly used message. - -function onMessage(request, sender, callback) { - // Async - switch ( request.what ) { - case 'getAssetContent': - µm.assets.get(request.url, { dontCache: true }, callback); - return; - - case 'selectAssets': - µm.selectAssets(request, callback); - return; - - default: - break; - } - - // Sync - var response; - - switch ( request.what ) { - case 'blacklistMatrixCell': - µm.tMatrix.blacklistCell( - request.srcHostname, - request.desHostname, - request.type - ); - break; - - case 'forceReloadTab': - µm.forceReload(request.tabId, request.bypassCache); - break; - - case 'forceUpdateAssets': - µm.scheduleAssetUpdater(0); - µm.assets.updateStart({ delay: 2000 }); - break; - - case 'getCellColors': - let ruleParts = request.ruleParts; - let tColors = []; - let pColors = []; - for ( let i = 0, n = ruleParts.length; i < n; i += 3 ) { - tColors.push(µm.tMatrix.evaluateCellZXY( - ruleParts[i+0], - ruleParts[i+1], - ruleParts[i+2] - )); - pColors.push(µm.pMatrix.evaluateCellZXY( - ruleParts[i+0], - ruleParts[i+1], - ruleParts[i+2] - )); - } - response = { tColors, pColors }; - break; - - case 'getUserSettings': - response = { - userSettings: µm.userSettings, - matrixSwitches: { - 'https-strict': µm.pMatrix.evaluateSwitch('https-strict', '*') === 1, - 'referrer-spoof': µm.pMatrix.evaluateSwitch('referrer-spoof', '*') === 1, - 'noscript-spoof': µm.pMatrix.evaluateSwitch('noscript-spoof', '*') === 1 - } - }; - break; - - case 'gotoExtensionURL': - µm.gotoExtensionURL(request); - break; - - case 'graylistMatrixCell': - µm.tMatrix.graylistCell( - request.srcHostname, - request.desHostname, - request.type - ); - break; - - case 'mustBlock': - response = µm.mustBlock( - request.scope, - request.hostname, - request.type - ); - break; - - case 'rulesetRevert': - µm.tMatrix.copyRuleset(request.entries, µm.pMatrix, true); - break; - - case 'rulesetPersist': - if ( µm.pMatrix.copyRuleset(request.entries, µm.tMatrix, true) ) { - µm.saveMatrix(); - } - break; - - case 'readRawSettings': - response = µm.stringFromRawSettings(); - break; - - case 'reloadHostsFiles': - µm.reloadHostsFiles(); - break; - - case 'reloadRecipeFiles': - µm.loadRecipes(true); - break; - - case 'setMatrixSwitch': - µm.tMatrix.setSwitch(request.switchName, '*', request.state); - if ( µm.pMatrix.setSwitch(request.switchName, '*', request.state) ) { - µm.saveMatrix(); - } - break; - - case 'userSettings': - if ( request.hasOwnProperty('value') === false ) { - request.value = undefined; - } - response = µm.changeUserSettings(request.name, request.value); - break; - - case 'whitelistMatrixCell': - µm.tMatrix.whitelistCell( - request.srcHostname, - request.desHostname, - request.type - ); - break; - - case 'writeRawSettings': - µm.rawSettingsFromString(request.content); - break; - - default: - return vAPI.messaging.UNHANDLED; - } - - callback(response); -} - -/******************************************************************************/ - -vAPI.messaging.setup(onMessage); - -/******************************************************************************/ - -})(); - -/******************************************************************************/ -/******************************************************************************/ - -(function() { - -// popup.js - -var µm = µMatrix; - -/******************************************************************************/ - -// Constructor is faster than object literal - -var RowSnapshot = function(srcHostname, desHostname, desDomain) { - this.domain = desDomain; - this.temporary = µm.tMatrix.evaluateRowZXY(srcHostname, desHostname); - this.permanent = µm.pMatrix.evaluateRowZXY(srcHostname, desHostname); - this.counts = RowSnapshot.counts.slice(); - this.totals = RowSnapshot.counts.slice(); -}; - -RowSnapshot.counts = (function() { - var aa = []; - for ( var i = 0, n = µm.Matrix.columnHeaderIndices.size; i < n; i++ ) { - aa[i] = 0; - } - return aa; -})(); - -/******************************************************************************/ - -var matrixSnapshot = function(pageStore, details) { - let µmuser = µm.userSettings; - let headerIndices = µm.Matrix.columnHeaderIndices; - - let r = { - appVersion: vAPI.app.version, - blockedCount: pageStore.perLoadBlockedRequestCount, - collapseAllDomains: µmuser.popupCollapseAllDomains, - collapseBlacklistedDomains: µmuser.popupCollapseBlacklistedDomains, - diff: [], - domain: pageStore.pageDomain, - has3pReferrer: pageStore.has3pReferrer, - hasMixedContent: pageStore.hasMixedContent, - hasNoscriptTags: pageStore.hasNoscriptTags, - hasWebWorkers: pageStore.hasWebWorkers, - headerIndices: Array.from(headerIndices), - hostname: pageStore.pageHostname, - mtxContentModified: pageStore.mtxContentModifiedTime !== details.mtxContentModifiedTime, - mtxCountModified: pageStore.mtxCountModifiedTime !== details.mtxCountModifiedTime, - mtxContentModifiedTime: pageStore.mtxContentModifiedTime, - mtxCountModifiedTime: pageStore.mtxCountModifiedTime, - pMatrixModified: µm.pMatrix.modifiedTime !== details.pMatrixModifiedTime, - pMatrixModifiedTime: µm.pMatrix.modifiedTime, - pSwitches: {}, - rows: {}, - rowCount: 0, - scope: '*', - tabId: pageStore.tabId, - tMatrixModified: µm.tMatrix.modifiedTime !== details.tMatrixModifiedTime, - tMatrixModifiedTime: µm.tMatrix.modifiedTime, - tSwitches: {}, - url: pageStore.pageUrl, - userSettings: { - colorBlindFriendly: µmuser.colorBlindFriendly, - displayTextSize: µmuser.displayTextSize, - noTooltips: µmuser.noTooltips, - popupScopeLevel: µmuser.popupScopeLevel - } - }; - - if ( - (typeof details.scope === 'string') && - (details.scope === '*' || r.hostname.endsWith(details.scope)) - ) { - r.scope = details.scope; - } else if ( µmuser.popupScopeLevel === 'site' ) { - r.scope = r.hostname; - } else if ( µmuser.popupScopeLevel === 'domain' ) { - r.scope = r.domain; - } - - for ( let switchName of µm.Matrix.switchNames ) { - r.tSwitches[switchName] = µm.tMatrix.evaluateSwitchZ(switchName, r.scope); - r.pSwitches[switchName] = µm.pMatrix.evaluateSwitchZ(switchName, r.scope); - } - - // These rows always exist - r.rows['*'] = new RowSnapshot(r.scope, '*', '*'); - r.rows['1st-party'] = new RowSnapshot(r.scope, '1st-party', '1st-party'); - r.rowCount += 1; - - let µmuri = µm.URI; - let anyIndex = headerIndices.get('*'); - - // Ensure that the current scope is also reported in the matrix. This may - // not be the case for documents which are fetched without going through - // our webRequest listener (ex. `file:`). - if ( pageStore.hostnameTypeCells.has(r.hostname + ' doc') === false ) { - pageStore.hostnameTypeCells.set(r.hostname + ' doc', new Set([ 0 ])); - } - - for ( let entry of pageStore.hostnameTypeCells ) { - let pos = entry[0].indexOf(' '); - let reqHostname = entry[0].slice(0, pos); - let reqType = entry[0].slice(pos + 1); - // rhill 2013-10-23: hostname can be empty if the request is a data url - // https://github.com/gorhill/httpswitchboard/issues/26 - if ( reqHostname === '' ) { - reqHostname = pageStore.pageHostname; - } - let reqDomain = µmuri.domainFromHostname(reqHostname) || reqHostname; - - // We want rows of self and ancestors - let desHostname = reqHostname; - for (;;) { - // If row exists, ancestors exist - if ( r.rows.hasOwnProperty(desHostname) !== false ) { break; } - r.rows[desHostname] = new RowSnapshot(r.scope, desHostname, reqDomain); - r.rowCount += 1; - if ( desHostname === reqDomain ) { break; } - pos = desHostname.indexOf('.'); - if ( pos === -1 ) { break; } - desHostname = desHostname.slice(pos + 1); - } - - let count = entry[1].size; - let typeIndex = headerIndices.get(reqType); - let row = r.rows[reqHostname]; - row.counts[typeIndex] += count; - row.counts[anyIndex] += count; - row = r.rows[reqDomain]; - row.totals[typeIndex] += count; - row.totals[anyIndex] += count; - row = r.rows['*']; - row.totals[typeIndex] += count; - row.totals[anyIndex] += count; - } - - r.diff = µm.tMatrix.diff(µm.pMatrix, r.hostname, Object.keys(r.rows)); - - return r; -}; - -/******************************************************************************/ - -var matrixSnapshotFromTabId = function(details, callback) { - var matrixSnapshotIf = function(tabId, details) { - var pageStore = µm.pageStoreFromTabId(tabId); - if ( pageStore === null ) { - callback('ENOTFOUND'); - return; - } - - // First verify whether we must return data or not. - if ( - µm.tMatrix.modifiedTime === details.tMatrixModifiedTime && - µm.pMatrix.modifiedTime === details.pMatrixModifiedTime && - pageStore.mtxContentModifiedTime === details.mtxContentModifiedTime && - pageStore.mtxCountModifiedTime === details.mtxCountModifiedTime - ) { - callback('ENOCHANGE'); - return ; - } - - callback(matrixSnapshot(pageStore, details)); - }; - - // Specific tab id requested? - if ( details.tabId ) { - matrixSnapshotIf(details.tabId, details); - return; - } - - // Fall back to currently active tab - var onTabReady = function(tab) { - if ( tab instanceof Object === false ) { - callback('ENOTFOUND'); - return; - } - matrixSnapshotIf(tab.id, details); - }; - - vAPI.tabs.get(null, onTabReady); -}; - -/******************************************************************************/ - -var onMessage = function(request, sender, callback) { - // Async - switch ( request.what ) { - case 'fetchRecipes': - µm.recipeManager.fetch( - request.srcHostname, - request.desHostnames, - callback - ); - return; - - case 'matrixSnapshot': - matrixSnapshotFromTabId(request, callback); - return; - - default: - break; - } - - // Sync - var response; - - switch ( request.what ) { - case 'applyRecipe': - µm.recipeManager.apply(request); - break; - - case 'fetchRecipeCommitStatuses': - response = µm.recipeManager.statuses(request); - break; - - case 'toggleMatrixSwitch': - µm.tMatrix.setSwitchZ( - request.switchName, - request.srcHostname, - µm.tMatrix.evaluateSwitchZ(request.switchName, request.srcHostname) === false - ); - break; - - case 'applyDiffToPermanentMatrix': // aka "persist" - if ( µm.pMatrix.applyDiff(request.diff, µm.tMatrix) ) { - µm.saveMatrix(); - } - break; - - case 'applyDiffToTemporaryMatrix': // aka "revert" - µm.tMatrix.applyDiff(request.diff, µm.pMatrix); - break; - - case 'revertTemporaryMatrix': - µm.tMatrix.assign(µm.pMatrix); - break; - - default: - return vAPI.messaging.UNHANDLED; - } - - callback(response); -}; - -vAPI.messaging.listen('popup.js', onMessage); - -})(); - -/******************************************************************************/ -/******************************************************************************/ - -// content scripts - -(function() { - -var µm = µMatrix; - -/******************************************************************************/ - -var foundInlineCode = function(tabId, pageStore, details, type) { - if ( pageStore === null ) { return; } - - let srcHn = pageStore.pageHostname, - µmuri = µm.URI.set(details.documentURI), - desHn = µmuri.hostname, - frameURL = µmuri.normalizedURI(); - - let blocked = details.blocked; - if ( blocked === undefined ) { - blocked = µm.mustBlock(srcHn, desHn, type); - } - - let mapTo = { - css: 'style', - script: 'script' - }; - - // https://github.com/gorhill/httpswitchboard/issues/333 - // Look-up here whether inline scripting is blocked for the frame. - let desURL = frameURL + '{inline_' + mapTo[type] + '}'; - pageStore.recordRequest(type, desURL, blocked); - µm.logger.writeOne({ tabId, srcHn, desHn, desURL, type, blocked }); -}; - -/******************************************************************************/ - -var contentScriptLocalStorageHandler = function(tabId, originURL) { - let tabContext = µm.tabContextManager.lookup(tabId); - if ( tabContext === null ) { return; } - - let srcHn = tabContext.rootHostname, - desHn = µm.URI.hostnameFromURI(originURL), - type = 'cookie', - blocked = µm.mustBlock(srcHn, desHn, type); - - let pageStore = µm.pageStoreFromTabId(tabId); - if ( pageStore !== null ) { - let desURL = originURL + '/{localStorage}'; - pageStore.recordRequest(type, desURL, blocked); - µm.logger.writeOne({ tabId, srcHn, desHn, desURL, type, blocked }); - } - - var removeStorage = blocked && µm.userSettings.deleteLocalStorage; - if ( removeStorage ) { - µm.localStorageRemovedCounter++; - } - - return removeStorage; -}; - -/******************************************************************************/ - -// Evaluate many URLs against the matrix. - -var lookupBlockedCollapsibles = function(tabId, requests) { - if ( placeholdersReadTime < µm.rawSettingsWriteTime ) { - placeholders = undefined; - } - - if ( placeholders === undefined ) { - placeholders = { - frame: µm.rawSettings.framePlaceholder, - image: µm.rawSettings.imagePlaceholder - }; - if ( placeholders.frame ) { - placeholders.frameDocument = - µm.rawSettings.framePlaceholderDocument.replace( - '{{bg}}', - µm.rawSettings.framePlaceholderBackground !== 'default' ? - µm.rawSettings.framePlaceholderBackground : - µm.rawSettings.placeholderBackground - ); - } - if ( placeholders.image ) { - placeholders.imageBorder = - µm.rawSettings.imagePlaceholderBorder !== 'default' ? - µm.rawSettings.imagePlaceholderBorder : - µm.rawSettings.placeholderBorder; - placeholders.imageBackground = - µm.rawSettings.imagePlaceholderBackground !== 'default' ? - µm.rawSettings.imagePlaceholderBackground : - µm.rawSettings.placeholderBackground; - } - placeholdersReadTime = Date.now(); - } - - var response = { - blockedResources: [], - hash: requests.hash, - id: requests.id, - placeholders: placeholders - }; - - var tabContext = µm.tabContextManager.lookup(tabId); - if ( tabContext === null ) { - return response; - } - - var pageStore = µm.pageStoreFromTabId(tabId); - if ( pageStore !== null ) { - pageStore.lookupBlockedCollapsibles(requests, response); - } - - return response; -}; - -var placeholders, - placeholdersReadTime = 0; - -/******************************************************************************/ - -var onMessage = function(request, sender, callback) { - // Async - switch ( request.what ) { - default: - break; - } - - let tabId = sender && sender.tab ? sender.tab.id || 0 : 0, - tabContext = µm.tabContextManager.lookup(tabId), - srcHn = tabContext && tabContext.rootHostname, - pageStore = µm.pageStoreFromTabId(tabId); - - // Sync - let response; - - switch ( request.what ) { - case 'contentScriptHasLocalStorage': - response = contentScriptLocalStorageHandler(tabId, request.originURL); - break; - - case 'lookupBlockedCollapsibles': - response = lookupBlockedCollapsibles(tabId, request); - break; - - case 'mustRenderNoscriptTags?': - if ( tabContext === null ) { break; } - response = - µm.tMatrix.mustBlock(srcHn, srcHn, 'script') && - µm.tMatrix.evaluateSwitchZ('noscript-spoof', srcHn); - if ( pageStore !== null ) { - pageStore.hasNoscriptTags = true; - } - // https://github.com/gorhill/uMatrix/issues/225 - // A good place to force an update of the page title, as at - // this point the DOM has been loaded. - µm.updateTitle(tabId); - break; - - case 'securityPolicyViolation': - if ( request.directive === 'worker-src' ) { - let desURL = request.blockedURI; - let desHn = µm.URI.hostnameFromURI(desURL); - if ( desHn === '' ) { - desURL = request.documentURI; - desHn = µm.URI.hostnameFromURI(desURL); - } - if ( pageStore !== null ) { - pageStore.hasWebWorkers = true; - pageStore.recordRequest('script', desURL, request.blocked); - } - if ( tabContext !== null ) { - µm.logger.writeOne({ - tabId, - srcHn, - desHn, - desURL, - type: 'worker', - blocked: request.blocked - }); - } - } else if ( request.directive === 'script-src' ) { - foundInlineCode(tabId, pageStore, request, 'script'); - } else if ( request.directive === 'style-src' ) { - foundInlineCode(tabId, pageStore, request, 'css'); - } - break; - - case 'shutdown?': - if ( tabContext !== null ) { - response = µm.tMatrix.evaluateSwitchZ('matrix-off', srcHn); - } - break; - - default: - return vAPI.messaging.UNHANDLED; - } - - callback(response); -}; - -vAPI.messaging.listen('contentscript.js', onMessage); - -/******************************************************************************/ - -})(); - -/******************************************************************************/ -/******************************************************************************/ - -// cloud-ui.js - -(function() { - -/******************************************************************************/ - -var µm = µMatrix; - -/******************************************************************************/ - -var onMessage = function(request, sender, callback) { - // Async - switch ( request.what ) { - case 'cloudGetOptions': - vAPI.cloud.getOptions(function(options) { - options.enabled = µm.userSettings.cloudStorageEnabled === true; - callback(options); - }); - return; - - case 'cloudSetOptions': - vAPI.cloud.setOptions(request.options, callback); - return; - - case 'cloudPull': - return vAPI.cloud.pull(request.datakey, callback); - - case 'cloudPush': - return vAPI.cloud.push(request.datakey, request.data, callback); - - default: - break; - } - - // Sync - var response; - - switch ( request.what ) { - // For when cloud storage is disabled. - case 'cloudPull': - // fallthrough - case 'cloudPush': - break; - - default: - return vAPI.messaging.UNHANDLED; - } - - callback(response); -}; - -/******************************************************************************/ - -vAPI.messaging.listen('cloud-ui.js', onMessage); - -})(); - -/******************************************************************************/ -/******************************************************************************/ - -// user-rules.js - -(function() { - -var µm = µMatrix; - -var modifyRuleset = function(details) { - let ruleset = details.permanent ? µm.pMatrix : µm.tMatrix, - modifiedTime = ruleset.modifiedTime; - let toRemove = new Set(details.toRemove.trim().split(/\s*[\n\r]+\s*/)); - for ( let rule of toRemove ) { - ruleset.removeFromLine(rule); - } - let toAdd = new Set(details.toAdd.trim().split(/\s*[\n\r]+\s*/)); - for ( let rule of toAdd ) { - ruleset.addFromLine(rule); - } - if ( details.permanent && ruleset.modifiedTime !== modifiedTime ) { - µm.saveMatrix(); - } -}; - -/******************************************************************************/ - -var onMessage = function(request, sender, callback) { - - // Async - switch ( request.what ) { - default: - break; - } - - // Sync - var response; - - switch ( request.what ) { - case 'modifyRuleset': - modifyRuleset(request); - /* falls through */ - - case 'getRuleset': - response = { - temporaryRules: µm.tMatrix.toArray(), - permanentRules: µm.pMatrix.toArray() - }; - break; - - default: - return vAPI.messaging.UNHANDLED; - } - - callback(response); -}; - -vAPI.messaging.listen('user-rules.js', onMessage); - -})(); - -/******************************************************************************/ -/******************************************************************************/ - -// hosts-files.js - -(function() { - -var µm = µMatrix; - -/******************************************************************************/ - -var getAssets = function(callback) { - var r = { - autoUpdate: µm.userSettings.autoUpdate, - blockedHostnameCount: µm.ubiquitousBlacklist.count, - hosts: null, - recipes: null, - userRecipes: µm.userSettings.userRecipes, - cache: null, - contributor: µm.rawSettings.contributorMode - }; - var onMetadataReady = function(entries) { - r.cache = entries; - callback(r); - }; - var onAvailableRecipeFilesReady = function(collection) { - r.recipes = Array.from(collection); - µm.assets.metadata(onMetadataReady); - }; - var onAvailableHostsFilesReady = function(collection) { - r.hosts = Array.from(collection); - µm.getAvailableRecipeFiles(onAvailableRecipeFilesReady); - }; - µm.getAvailableHostsFiles(onAvailableHostsFilesReady); -}; - -/******************************************************************************/ - -var onMessage = function(request, sender, callback) { - var µm = µMatrix; - - // Async - switch ( request.what ) { - case 'getAssets': - return getAssets(callback); - - default: - break; - } - - // Sync - var response; - - switch ( request.what ) { - case 'purgeCache': - µm.assets.purge(request.assetKey); - µm.assets.remove('compiled/' + request.assetKey); - break; - - case 'purgeAllCaches': - if ( request.hard ) { - µm.assets.remove(/./); - } else { - µm.assets.purge(/./, 'public_suffix_list.dat'); - } - break; - - default: - return vAPI.messaging.UNHANDLED; - } - - callback(response); -}; - -vAPI.messaging.listen('hosts-files.js', onMessage); - -})(); - -/******************************************************************************/ -/******************************************************************************/ - -// about.js - -(function() { - -var µm = µMatrix; - -/******************************************************************************/ - -var restoreUserData = function(userData) { - var countdown = 0; - var onCountdown = function() { - countdown -= 1; - if ( countdown === 0 ) { - vAPI.app.restart(); - } - }; - - var onAllRemoved = function() { - let µm = µMatrix; - countdown += 1; - vAPI.storage.set(userData.settings, onCountdown); - countdown += 1; - let bin = { userMatrix: userData.rules }; - if ( userData.hostsFiles instanceof Object ) { - bin.liveHostsFiles = userData.hostsFiles; - } - vAPI.storage.set(bin, onCountdown); - if ( userData.rawSettings instanceof Object ) { - countdown += 1; - µm.saveRawSettings(userData.rawSettings, onCountdown); - } - }; - - // If we are going to restore all, might as well wipe out clean local - // storage - vAPI.storage.clear(onAllRemoved); -}; - -/******************************************************************************/ - -var resetUserData = function() { - var onAllRemoved = function() { - vAPI.app.restart(); - }; - vAPI.storage.clear(onAllRemoved); -}; - -/******************************************************************************/ - -var onMessage = function(request, sender, callback) { - // Async - switch ( request.what ) { - default: - break; - } - - // Sync - var response; - - switch ( request.what ) { - case 'getAllUserData': - response = { - app: vAPI.app.name, - version: vAPI.app.version, - when: Date.now(), - settings: µm.userSettings, - rules: µm.pMatrix.toArray().sort(), - rawSettings: µm.rawSettings - }; - break; - - case 'getSomeStats': - response = { - version: vAPI.app.version, - storageUsed: µm.storageUsed - }; - break; - - case 'restoreAllUserData': - restoreUserData(request.userData); - break; - - case 'resetAllUserData': - resetUserData(); - break; - - default: - return vAPI.messaging.UNHANDLED; - } - - callback(response); -}; - -vAPI.messaging.listen('about.js', onMessage); - -/******************************************************************************/ -/******************************************************************************/ - -// logger-ui.js - -(function() { - -/******************************************************************************/ - -var µm = µMatrix, - loggerURL = vAPI.getURL('logger-ui.html'); - -/******************************************************************************/ - -var onMessage = function(request, sender, callback) { - // Async - switch ( request.what ) { - default: - break; - } - - // Sync - var response; - - switch ( request.what ) { - case 'getPublicSuffixListData': - response = publicSuffixList.toSelfie(); - break; - - case 'getRuleEditorOptions': - response = { - colorBlindFriendly: µm.userSettings.colorBlindFriendly, - popupScopeLevel: µm.userSettings.popupScopeLevel - }; - break; - - case 'readMany': - if ( - µm.logger.ownerId !== undefined && - request.ownerId !== µm.logger.ownerId - ) { - response = { unavailable: true }; - break; - } - let pageStores; - if ( request.pageStoresToken !== µm.pageStoresToken ) { - pageStores = []; - for ( let entry of µm.pageStores ) { - let tabId = entry[0]; - let pageStore = entry[1]; - if ( pageStore.rawURL.startsWith(loggerURL) ) { continue; } - pageStores.push([ tabId, pageStore.title || pageStore.rawURL ]); - } - } - response = { - colorBlind: false, - entries: µm.logger.readAll(request.ownerId), - maxLoggedRequests: µm.userSettings.maxLoggedRequests, - noTabId: vAPI.noTabId, - pageStores: pageStores, - pageStoresToken: µm.pageStoresToken - }; - break; - - case 'releaseView': - if ( request.ownerId === µm.logger.ownerId ) { - µm.logger.ownerId = undefined; - } - break; - - default: - return vAPI.messaging.UNHANDLED; - } - - callback(response); -}; - -vAPI.messaging.listen('logger-ui.js', onMessage); - -/******************************************************************************/ - -})(); - -/******************************************************************************/ -/******************************************************************************/ - -})(); - -/******************************************************************************/ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/pagestats.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/pagestats.js deleted file mode 100644 index 04a777b..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/pagestats.js +++ /dev/null @@ -1,268 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to black/white list requests. - Copyright (C) 2013-2018 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -'use strict'; - -/******************************************************************************/ - -µMatrix.pageStoreFactory = (function() { - -/******************************************************************************/ - -var µm = µMatrix; - -/******************************************************************************/ - -var BlockedCollapsibles = function() { - this.boundPruneAsyncCallback = this.pruneAsyncCallback.bind(this); - this.blocked = new Map(); - this.hash = 0; - this.timer = null; - this.tOrigin = Date.now(); -}; - -BlockedCollapsibles.prototype = { - - shelfLife: 10 * 1000, - - add: function(type, url, isSpecific) { - if ( this.blocked.size === 0 ) { this.pruneAsync(); } - let tStamp = Date.now() - this.tOrigin; - // The following "trick" is to encode the specifity into the lsb of the - // time stamp so as to avoid to have to allocate a memory structure to - // store both time stamp and specificity. - if ( isSpecific ) { - tStamp |= 0x00000001; - } else { - tStamp &= 0xFFFFFFFE; - } - this.blocked.set(type + ' ' + url, tStamp); - this.hash += 1; - }, - - reset: function() { - this.blocked.clear(); - this.hash = 0; - if ( this.timer !== null ) { - clearTimeout(this.timer); - this.timer = null; - } - this.tOrigin = Date.now(); - }, - - pruneAsync: function() { - if ( this.timer === null ) { - this.timer = vAPI.setTimeout( - this.boundPruneAsyncCallback, - this.shelfLife * 2 - ); - } - }, - - pruneAsyncCallback: function() { - this.timer = null; - let tObsolete = Date.now() - this.tOrigin - this.shelfLife; - for ( let entry of this.blocked ) { - if ( entry[1] <= tObsolete ) { - this.blocked.delete(entry[0]); - } - } - if ( this.blocked.size !== 0 ) { - this.pruneAsync(); - } else { - this.tOrigin = Date.now(); - } - } -}; - -/******************************************************************************/ - -// Ref: Given a URL, returns a (somewhat) unique 32-bit value -// Based on: FNV32a -// http://www.isthe.com/chongo/tech/comp/fnv/index.html#FNV-reference-source -// The rest is custom, suited for uMatrix. - -var PageStore = function(tabContext) { - this.hostnameTypeCells = new Map(); - this.domains = new Set(); - this.blockedCollapsibles = new BlockedCollapsibles(); - this.init(tabContext); -}; - -PageStore.prototype = { - - collapsibleTypes: new Set([ 'image' ]), - pageStoreJunkyard: [], - - init: function(tabContext) { - this.tabId = tabContext.tabId; - this.rawURL = tabContext.rawURL; - this.pageUrl = tabContext.normalURL; - this.pageHostname = tabContext.rootHostname; - this.pageDomain = tabContext.rootDomain; - this.title = ''; - this.hostnameTypeCells.clear(); - this.domains.clear(); - this.allHostnamesString = ' '; - this.blockedCollapsibles.reset(); - this.perLoadAllowedRequestCount = 0; - this.perLoadBlockedRequestCount = 0; - this.perLoadBlockedReferrerCount = 0; - this.has3pReferrer = false; - this.hasMixedContent = false; - this.hasNoscriptTags = false; - this.hasWebWorkers = false; - this.incinerationTimer = null; - this.mtxContentModifiedTime = 0; - this.mtxCountModifiedTime = 0; - return this; - }, - - dispose: function() { - this.tabId = ''; - this.rawURL = ''; - this.pageUrl = ''; - this.pageHostname = ''; - this.pageDomain = ''; - this.title = ''; - this.hostnameTypeCells.clear(); - this.domains.clear(); - this.allHostnamesString = ' '; - this.blockedCollapsibles.reset(); - if ( this.incinerationTimer !== null ) { - clearTimeout(this.incinerationTimer); - this.incinerationTimer = null; - } - if ( this.pageStoreJunkyard.length < 8 ) { - this.pageStoreJunkyard.push(this); - } - }, - - cacheBlockedCollapsible: function(type, url, specificity) { - if ( this.collapsibleTypes.has(type) ) { - this.blockedCollapsibles.add( - type, - url, - specificity !== 0 && specificity < 5 - ); - } - }, - - lookupBlockedCollapsibles: function(request, response) { - var tabContext = µm.tabContextManager.lookup(this.tabId); - if ( tabContext === null ) { return; } - - if ( - Array.isArray(request.toFilter) && - request.toFilter.length !== 0 - ) { - let roothn = tabContext.rootHostname, - hnFromURI = µm.URI.hostnameFromURI, - tMatrix = µm.tMatrix; - for ( let entry of request.toFilter ) { - if ( tMatrix.mustBlock(roothn, hnFromURI(entry.url), entry.type) ) { - this.blockedCollapsibles.add( - entry.type, - entry.url, - tMatrix.specificityRegister < 5 - ); - } - } - } - - if ( this.blockedCollapsibles.hash === response.hash ) { return; } - response.hash = this.blockedCollapsibles.hash; - - let collapseBlacklisted = µm.userSettings.collapseBlacklisted, - collapseBlocked = µm.userSettings.collapseBlocked, - blockedResources = response.blockedResources; - - for ( let entry of this.blockedCollapsibles.blocked ) { - blockedResources.push([ - entry[0], - collapseBlocked || collapseBlacklisted && (entry[1] & 1) !== 0 - ]); - } - }, - - recordRequest: function(type, url, block) { - if ( this.tabId <= 0 ) { return; } - - if ( block ) { - this.perLoadBlockedRequestCount++; - } else { - this.perLoadAllowedRequestCount++; - } - - // Store distinct network requests. This is used to: - // - remember which hostname/type were seen - // - count the number of distinct URLs for any given - // hostname-type pair - var hostname = µm.URI.hostnameFromURI(url), - key = hostname + ' ' + type, - uids = this.hostnameTypeCells.get(key); - if ( uids === undefined ) { - this.hostnameTypeCells.set(key, (uids = new Set())); - } else if ( uids.size > 99 ) { - return; - } - var uid = this.uidFromURL(url); - if ( uids.has(uid) ) { return; } - uids.add(uid); - - µm.updateBadgeAsync(this.tabId); - - this.mtxCountModifiedTime = Date.now(); - - if ( this.domains.has(hostname) === false ) { - this.domains.add(hostname); - this.allHostnamesString += hostname + ' '; - this.mtxContentModifiedTime = Date.now(); - } - }, - - uidFromURL: function(uri) { - var hint = 0x811c9dc5, - i = uri.length; - while ( i-- ) { - hint ^= uri.charCodeAt(i) | 0; - hint += (hint<<1) + (hint<<4) + (hint<<7) + (hint<<8) + (hint<<24) | 0; - hint >>>= 0; - } - return hint; - } -}; - -/******************************************************************************/ - -return function pageStoreFactory(tabContext) { - var entry = PageStore.prototype.pageStoreJunkyard.pop(); - if ( entry ) { - return entry.init(tabContext); - } - return new PageStore(tabContext); -}; - -/******************************************************************************/ - -})(); - -/******************************************************************************/ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/popup.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/popup.js deleted file mode 100644 index 47acae9..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/popup.js +++ /dev/null @@ -1,1592 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to black/white list requests. - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -/* global punycode, uDom, uMatrixScopeWidget */ -/* jshint esnext: true, bitwise: false */ - -'use strict'; - -/******************************************************************************/ -/******************************************************************************/ - -(function() { - -/******************************************************************************/ -/******************************************************************************/ - -// Stuff which is good to do very early so as to avoid visual glitches. - -(function() { - var paneContentPaddingTop = vAPI.localStorage.getItem('paneContentPaddingTop'), - touchDevice = vAPI.localStorage.getItem('touchDevice'); - - if ( typeof paneContentPaddingTop === 'string' ) { - document.querySelector('.paneContent').style.setProperty( - 'padding-top', - paneContentPaddingTop - ); - } - if ( touchDevice === 'true' ) { - document.body.setAttribute('data-touch', 'true'); - } else { - document.addEventListener('touchstart', function onTouched(ev) { - document.removeEventListener(ev.type, onTouched); - document.body.setAttribute('data-touch', 'true'); - vAPI.localStorage.setItem('touchDevice', 'true'); - resizePopup(); - }); - } -})(); - -var popupWasResized = function() { - document.body.setAttribute('data-resize-popup', ''); -}; - -var resizePopup = (function() { - var timer; - var fix = function() { - timer = undefined; - var doc = document; - // Manually adjust the position of the main matrix according to the - // height of the toolbar/matrix header. - var paddingTop = (doc.querySelector('.paneHead').clientHeight + 2) + 'px', - paneContent = doc.querySelector('.paneContent'); - if ( paddingTop !== paneContent.style.paddingTop ) { - paneContent.style.setProperty('padding-top', paddingTop); - vAPI.localStorage.setItem('paneContentPaddingTop', paddingTop); - } - document.body.classList.toggle( - 'hConstrained', - window.innerWidth < document.body.clientWidth - ); - popupWasResized(); - }; - return function() { - if ( timer !== undefined ) { - clearTimeout(timer); - } - timer = vAPI.setTimeout(fix, 97); - }; -})(); - -/******************************************************************************/ -/******************************************************************************/ - -// Must be consistent with definitions in matrix.js -var Dark = 0x80; -var Red = 1; -var Green = 2; -var DarkRed = Dark | Red; -var DarkGreen = Dark | Green; - -var matrixSnapshot = {}; -var groupsSnapshot = []; -var allHostnamesSnapshot = 'do not leave this initial string empty'; - -var matrixCellHotspots = null; - -var matrixHeaderPrettyNames = { - 'all': '', - 'cookie': '', - 'css': '', - 'image': '', - 'media': '', - 'script': '', - 'xhr': '', - 'frame': '', - 'other': '' -}; - -var firstPartyLabel = ''; -var blacklistedHostnamesLabel = ''; - -var expandosIdGenerator = 1; -var nodeToExpandosMap = (function() { - if ( typeof window.Map === 'function' ) { - return new window.Map(); - } -})(); - -var expandosFromNode = function(node) { - if ( - node instanceof HTMLElement === false && - typeof node.nodeAt === 'function' - ) { - node = node.nodeAt(0); - } - if ( nodeToExpandosMap ) { - var expandosId = node.getAttribute('data-expandos'); - if ( !expandosId ) { - expandosId = '' + (expandosIdGenerator++); - node.setAttribute('data-expandos', expandosId); - } - var expandos = nodeToExpandosMap.get(expandosId); - if ( expandos === undefined ) { - nodeToExpandosMap.set(expandosId, (expandos = Object.create(null))); - } - return expandos; - } - return node; -}; - -/******************************************************************************/ -/******************************************************************************/ - -function getUserSetting(setting) { - return matrixSnapshot.userSettings[setting]; - } - -function setUserSetting(setting, value) { - matrixSnapshot.userSettings[setting] = value; - vAPI.messaging.send('popup.js', { - what: 'userSettings', - name: setting, - value: value - }); -} - -/******************************************************************************/ - -function getUISetting(setting) { - var r = vAPI.localStorage.getItem(setting); - if ( typeof r !== 'string' ) { - return undefined; - } - return JSON.parse(r); -} - -function setUISetting(setting, value) { - vAPI.localStorage.setItem( - setting, - JSON.stringify(value) - ); -} - -/******************************************************************************/ - -function updateMatrixSnapshot() { - matrixSnapshotPoller.pollNow(); -} - -/******************************************************************************/ - -// For display purpose, create four distinct groups of rows: -// 0th: literal "1st-party" row -// 1st: page domain's related -// 2nd: whitelisted -// 3rd: graylisted -// 4th: blacklisted - -function getGroupStats() { - - // Try to not reshuffle groups around while popup is opened if - // no new hostname added. - var latestDomainListSnapshot = Object.keys(matrixSnapshot.rows).sort().join(); - if ( latestDomainListSnapshot === allHostnamesSnapshot ) { - return groupsSnapshot; - } - allHostnamesSnapshot = latestDomainListSnapshot; - - // First, group according to whether at least one node in the domain - // hierarchy is white or blacklisted - var pageDomain = matrixSnapshot.domain; - var rows = matrixSnapshot.rows; - var anyTypeOffset = matrixSnapshot.headerIndices.get('*'); - var hostname, domain; - var row, color, count, groupIndex; - var domainToGroupMap = {}; - - // These have hard-coded position which cannot be overriden - domainToGroupMap['1st-party'] = 0; - domainToGroupMap[pageDomain] = 1; - - // 1st pass: domain wins if it has an explicit rule or a count - for ( hostname in rows ) { - if ( rows.hasOwnProperty(hostname) === false ) { - continue; - } - if ( hostname === '*' || hostname === '1st-party' ) { - continue; - } - domain = rows[hostname].domain; - if ( domain === pageDomain || hostname !== domain ) { - continue; - } - row = rows[domain]; - color = row.temporary[anyTypeOffset]; - if ( color === DarkGreen ) { - domainToGroupMap[domain] = 2; - continue; - } - if ( color === DarkRed ) { - domainToGroupMap[domain] = 4; - continue; - } - count = row.counts[anyTypeOffset]; - if ( count !== 0 ) { - domainToGroupMap[domain] = 3; - continue; - } - } - // 2nd pass: green wins - for ( hostname in rows ) { - if ( rows.hasOwnProperty(hostname) === false ) { - continue; - } - row = rows[hostname]; - domain = row.domain; - if ( domainToGroupMap.hasOwnProperty(domain) ) { - continue; - } - color = row.temporary[anyTypeOffset]; - if ( color === DarkGreen ) { - domainToGroupMap[domain] = 2; - } - } - // 3rd pass: gray with count wins - for ( hostname in rows ) { - if ( rows.hasOwnProperty(hostname) === false ) { - continue; - } - row = rows[hostname]; - domain = row.domain; - if ( domainToGroupMap.hasOwnProperty(domain) ) { - continue; - } - color = row.temporary[anyTypeOffset]; - count = row.counts[anyTypeOffset]; - if ( color !== DarkRed && count !== 0 ) { - domainToGroupMap[domain] = 3; - } - } - // 4th pass: red wins whatever is left - for ( hostname in rows ) { - if ( rows.hasOwnProperty(hostname) === false ) { - continue; - } - row = rows[hostname]; - domain = row.domain; - if ( domainToGroupMap.hasOwnProperty(domain) ) { - continue; - } - color = row.temporary[anyTypeOffset]; - if ( color === DarkRed ) { - domainToGroupMap[domain] = 4; - } - } - // 5th pass: gray wins whatever is left - for ( hostname in rows ) { - if ( rows.hasOwnProperty(hostname) === false ) { - continue; - } - domain = rows[hostname].domain; - if ( domainToGroupMap.hasOwnProperty(domain) ) { - continue; - } - domainToGroupMap[domain] = 3; - } - - // Last pass: put each domain in a group - var groups = [ {}, {}, {}, {}, {} ]; - var group; - for ( hostname in rows ) { - if ( rows.hasOwnProperty(hostname) === false ) { - continue; - } - if ( hostname === '*' ) { - continue; - } - domain = rows[hostname].domain; - groupIndex = domainToGroupMap[domain]; - group = groups[groupIndex]; - if ( group.hasOwnProperty(domain) === false ) { - group[domain] = {}; - } - group[domain][hostname] = true; - } - - groupsSnapshot = groups; - - return groups; -} - -/******************************************************************************/ - -// helpers - -function getTemporaryColor(hostname, type) { - return matrixSnapshot.rows[hostname].temporary[matrixSnapshot.headerIndices.get(type)]; -} - -function getPermanentColor(hostname, type) { - return matrixSnapshot.rows[hostname].permanent[matrixSnapshot.headerIndices.get(type)]; -} - -function addCellClass(cell, hostname, type) { - var cl = cell.classList; - cl.add('matCell'); - cl.add('t' + getTemporaryColor(hostname, type).toString(16)); - cl.add('p' + getPermanentColor(hostname, type).toString(16)); -} - -/******************************************************************************/ - -// This is required for when we update the matrix while it is open: -// the user might have collapsed/expanded one or more domains, and we don't -// want to lose all his hardwork. - -function getCollapseState(domain) { - var states = getUISetting('popupCollapseSpecificDomains'); - if ( typeof states === 'object' && states[domain] !== undefined ) { - return states[domain]; - } - return matrixSnapshot.collapseAllDomains === true; -} - -function toggleCollapseState(elem) { - if ( elem.ancestors('#matHead.collapsible').length > 0 ) { - toggleMainCollapseState(elem); - } else { - toggleSpecificCollapseState(elem); - } - popupWasResized(); -} - -function toggleMainCollapseState(uelem) { - var matHead = uelem.ancestors('#matHead.collapsible').toggleClass('collapsed'); - var collapsed = matrixSnapshot.collapseAllDomains = matHead.hasClass('collapsed'); - uDom('#matList .matSection.collapsible').toggleClass('collapsed', collapsed); - setUserSetting('popupCollapseAllDomains', collapsed); - - var specificCollapseStates = getUISetting('popupCollapseSpecificDomains') || {}; - var domains = Object.keys(specificCollapseStates); - var i = domains.length; - var domain; - while ( i-- ) { - domain = domains[i]; - if ( specificCollapseStates[domain] === collapsed ) { - delete specificCollapseStates[domain]; - } - } - setUISetting('popupCollapseSpecificDomains', specificCollapseStates); -} - -function toggleSpecificCollapseState(uelem) { - // Remember collapse state forever, but only if it is different - // from main collapse switch. - var section = uelem.ancestors('.matSection.collapsible').toggleClass('collapsed'), - domain = expandosFromNode(section).domain, - collapsed = section.hasClass('collapsed'), - mainCollapseState = matrixSnapshot.collapseAllDomains === true, - specificCollapseStates = getUISetting('popupCollapseSpecificDomains') || {}; - if ( collapsed !== mainCollapseState ) { - specificCollapseStates[domain] = collapsed; - setUISetting('popupCollapseSpecificDomains', specificCollapseStates); - } else if ( specificCollapseStates[domain] !== undefined ) { - delete specificCollapseStates[domain]; - setUISetting('popupCollapseSpecificDomains', specificCollapseStates); - } -} - -/******************************************************************************/ - -// Update count value of matrix cells(s) - -function updateMatrixCounts() { - var matCells = uDom('.matrix .matRow.rw > .matCell'), - i = matCells.length, - matRow, matCell, count, counts, - headerIndices = matrixSnapshot.headerIndices, - rows = matrixSnapshot.rows, - expandos; - while ( i-- ) { - matCell = matCells.nodeAt(i); - expandos = expandosFromNode(matCell); - if ( expandos.hostname === '*' || expandos.reqType === '*' ) { - continue; - } - matRow = matCell.parentNode; - counts = matRow.classList.contains('meta') ? 'totals' : 'counts'; - count = rows[expandos.hostname][counts][headerIndices.get(expandos.reqType)]; - if ( count === expandos.count ) { continue; } - expandos.count = count; - matCell.textContent = cellTextFromCount(count); - } -} - -function cellTextFromCount(count) { - if ( count === 0 ) { return '\u00A0'; } - if ( count < 100 ) { return count; } - return '99+'; -} - -/******************************************************************************/ - -// Update color of matrix cells(s) -// Color changes when rules change - -function updateMatrixColors() { - var cells = uDom('.matrix .matRow.rw > .matCell').removeClass(), - i = cells.length, - cell, expandos; - while ( i-- ) { - cell = cells.nodeAt(i); - expandos = expandosFromNode(cell); - addCellClass(cell, expandos.hostname, expandos.reqType); - } - popupWasResized(); -} - -/******************************************************************************/ - -// Update behavior of matrix: -// - Whether a section is collapsible or not. It is collapsible if: -// - It has at least one subdomain AND -// - There is no explicit rule anywhere in the subdomain cells AND -// - It is not part of group 3 (blacklisted hostnames) - -function updateMatrixBehavior() { - matrixList = matrixList || uDom('#matList'); - var sections = matrixList.descendants('.matSection'); - var i = sections.length; - var section, subdomainRows, j, subdomainRow; - while ( i-- ) { - section = sections.at(i); - subdomainRows = section.descendants('.l2:not(.g4)'); - j = subdomainRows.length; - while ( j-- ) { - subdomainRow = subdomainRows.at(j); - subdomainRow.toggleClass('collapsible', subdomainRow.descendants('.t81,.t82').length === 0); - } - section.toggleClass('collapsible', subdomainRows.filter('.collapsible').length > 0); - } -} - -/******************************************************************************/ - -// handle user interaction with filters - -function getCellAction(hostname, type, leaning) { - var temporaryColor = getTemporaryColor(hostname, type); - var hue = temporaryColor & 0x03; - // Special case: root toggle only between two states - if ( type === '*' && hostname === '*' ) { - return hue === Green ? 'blacklistMatrixCell' : 'whitelistMatrixCell'; - } - // When explicitly blocked/allowed, can only graylist - var saturation = temporaryColor & 0x80; - if ( saturation === Dark ) { - return 'graylistMatrixCell'; - } - return leaning === 'whitelisting' ? 'whitelistMatrixCell' : 'blacklistMatrixCell'; -} - -function handleFilter(button, leaning) { - // our parent cell knows who we are - let cell = button.ancestors('div.matCell'), - expandos = expandosFromNode(cell), - type = expandos.reqType, - desHostname = expandos.hostname; - // https://github.com/gorhill/uMatrix/issues/24 - // No hostname can happen -- like with blacklist meta row - if ( desHostname === '' ) { return; } - let request = { - what: getCellAction(desHostname, type, leaning), - srcHostname: matrixSnapshot.scope, - desHostname: desHostname, - type: type - }; - vAPI.messaging.send('default', request, updateMatrixSnapshot); -} - -function handleWhitelistFilter(button) { - handleFilter(button, 'whitelisting'); -} - -function handleBlacklistFilter(button) { - handleFilter(button, 'blacklisting'); -} - -/******************************************************************************/ - -var matrixRowPool = []; -var matrixSectionPool = []; -var matrixGroupPool = []; -var matrixRowTemplate = null; -var matrixList = null; - -var startMatrixUpdate = function() { - matrixList = matrixList || uDom('#matList'); - matrixList.detach(); - var rows = matrixList.descendants('.matRow'); - rows.detach(); - matrixRowPool = matrixRowPool.concat(rows.toArray()); - var sections = matrixList.descendants('.matSection'); - sections.detach(); - matrixSectionPool = matrixSectionPool.concat(sections.toArray()); - var groups = matrixList.descendants('.matGroup'); - groups.detach(); - matrixGroupPool = matrixGroupPool.concat(groups.toArray()); -}; - -var endMatrixUpdate = function() { - // https://github.com/gorhill/httpswitchboard/issues/246 - // If the matrix has no rows, we need to insert a dummy one, invisible, - // to ensure the extension pop-up is properly sized. This is needed because - // the header pane's `position` property is `fixed`, which means it doesn't - // affect layout size, hence the matrix header row will be truncated. - if ( matrixSnapshot.rowCount <= 1 ) { - matrixList.append(createMatrixRow().css('visibility', 'hidden')); - } - updateMatrixBehavior(); - matrixList.css('display', ''); - matrixList.appendTo('.paneContent'); -}; - -var createMatrixGroup = function() { - var group = matrixGroupPool.pop(); - if ( group ) { - return uDom(group).removeClass().addClass('matGroup'); - } - return uDom(document.createElement('div')).addClass('matGroup'); -}; - -var createMatrixSection = function() { - var section = matrixSectionPool.pop(); - if ( section ) { - return uDom(section).removeClass().addClass('matSection'); - } - return uDom(document.createElement('div')).addClass('matSection'); -}; - -var createMatrixRow = function() { - var row = matrixRowPool.pop(); - if ( row ) { - row.style.visibility = ''; - row = uDom(row); - row.descendants('.matCell').removeClass().addClass('matCell'); - row.removeClass().addClass('matRow'); - return row; - } - if ( matrixRowTemplate === null ) { - matrixRowTemplate = uDom('#templates .matRow'); - } - return matrixRowTemplate.clone(); -}; - -/******************************************************************************/ - -function renderMatrixHeaderRow() { - var matHead = uDom('#matHead.collapsible'); - matHead.toggleClass('collapsed', matrixSnapshot.collapseAllDomains === true); - var cells = matHead.descendants('.matCell'), cell, expandos; - cell = cells.nodeAt(0); - expandos = expandosFromNode(cell); - expandos.reqType = '*'; - expandos.hostname = '*'; - addCellClass(cell, '*', '*'); - cell = cells.nodeAt(1); - expandos = expandosFromNode(cell); - expandos.reqType = 'cookie'; - expandos.hostname = '*'; - addCellClass(cell, '*', 'cookie'); - cell = cells.nodeAt(2); - expandos = expandosFromNode(cell); - expandos.reqType = 'css'; - expandos.hostname = '*'; - addCellClass(cell, '*', 'css'); - cell = cells.nodeAt(3); - expandos = expandosFromNode(cell); - expandos.reqType = 'image'; - expandos.hostname = '*'; - addCellClass(cell, '*', 'image'); - cell = cells.nodeAt(4); - expandos = expandosFromNode(cell); - expandos.reqType = 'media'; - expandos.hostname = '*'; - addCellClass(cell, '*', 'media'); - cell = cells.nodeAt(5); - expandos = expandosFromNode(cell); - expandos.reqType = 'script'; - expandos.hostname = '*'; - addCellClass(cell, '*', 'script'); - cell = cells.nodeAt(6); - expandos = expandosFromNode(cell); - expandos.reqType = 'xhr'; - expandos.hostname = '*'; - addCellClass(cell, '*', 'xhr'); - cell = cells.nodeAt(7); - expandos = expandosFromNode(cell); - expandos.reqType = 'frame'; - expandos.hostname = '*'; - addCellClass(cell, '*', 'frame'); - cell = cells.nodeAt(8); - expandos = expandosFromNode(cell); - expandos.reqType = 'other'; - expandos.hostname = '*'; - addCellClass(cell, '*', 'other'); - uDom('#matHead .matRow').css('display', ''); -} - -/******************************************************************************/ - -function renderMatrixCellDomain(cell, domain) { - var expandos = expandosFromNode(cell); - expandos.hostname = domain; - expandos.reqType = '*'; - addCellClass(cell.nodeAt(0), domain, '*'); - var contents = cell.contents(); - contents.nodeAt(0).textContent = domain === '1st-party' ? - firstPartyLabel : - punycode.toUnicode(domain); - contents.nodeAt(1).textContent = ' '; -} - -function renderMatrixCellSubdomain(cell, domain, subomain) { - var expandos = expandosFromNode(cell); - expandos.hostname = subomain; - expandos.reqType = '*'; - addCellClass(cell.nodeAt(0), subomain, '*'); - var contents = cell.contents(); - contents.nodeAt(0).textContent = punycode.toUnicode(subomain.slice(0, subomain.lastIndexOf(domain)-1)) + '.'; - contents.nodeAt(1).textContent = punycode.toUnicode(domain); -} - -function renderMatrixMetaCellDomain(cell, domain) { - var expandos = expandosFromNode(cell); - expandos.hostname = domain; - expandos.reqType = '*'; - addCellClass(cell.nodeAt(0), domain, '*'); - var contents = cell.contents(); - contents.nodeAt(0).textContent = '\u2217.' + punycode.toUnicode(domain); - contents.nodeAt(1).textContent = ' '; -} - -function renderMatrixCellType(cell, hostname, type, count) { - var node = cell.nodeAt(0), - expandos = expandosFromNode(node); - expandos.hostname = hostname; - expandos.reqType = type; - expandos.count = count; - addCellClass(node, hostname, type); - node.textContent = cellTextFromCount(count); -} - -function renderMatrixCellTypes(cells, hostname, countName) { - var counts = matrixSnapshot.rows[hostname][countName]; - var headerIndices = matrixSnapshot.headerIndices; - renderMatrixCellType(cells.at(1), hostname, 'cookie', counts[headerIndices.get('cookie')]); - renderMatrixCellType(cells.at(2), hostname, 'css', counts[headerIndices.get('css')]); - renderMatrixCellType(cells.at(3), hostname, 'image', counts[headerIndices.get('image')]); - renderMatrixCellType(cells.at(4), hostname, 'media', counts[headerIndices.get('media')]); - renderMatrixCellType(cells.at(5), hostname, 'script', counts[headerIndices.get('script')]); - renderMatrixCellType(cells.at(6), hostname, 'xhr', counts[headerIndices.get('xhr')]); - renderMatrixCellType(cells.at(7), hostname, 'frame', counts[headerIndices.get('frame')]); - renderMatrixCellType(cells.at(8), hostname, 'other', counts[headerIndices.get('other')]); -} - -/******************************************************************************/ - -function makeMatrixRowDomain(domain) { - var matrixRow = createMatrixRow().addClass('rw'); - var cells = matrixRow.descendants('.matCell'); - renderMatrixCellDomain(cells.at(0), domain); - renderMatrixCellTypes(cells, domain, 'counts'); - return matrixRow; -} - -function makeMatrixRowSubdomain(domain, subdomain) { - var matrixRow = createMatrixRow().addClass('rw'); - var cells = matrixRow.descendants('.matCell'); - renderMatrixCellSubdomain(cells.at(0), domain, subdomain); - renderMatrixCellTypes(cells, subdomain, 'counts'); - return matrixRow; -} - -function makeMatrixMetaRowDomain(domain) { - var matrixRow = createMatrixRow().addClass('rw'); - var cells = matrixRow.descendants('.matCell'); - renderMatrixMetaCellDomain(cells.at(0), domain); - renderMatrixCellTypes(cells, domain, 'totals'); - return matrixRow; -} - -/******************************************************************************/ - -function renderMatrixMetaCellType(cell, count) { - // https://github.com/gorhill/uMatrix/issues/24 - // Don't forget to reset cell properties - var node = cell.nodeAt(0), - expandos = expandosFromNode(node); - expandos.hostname = ''; - expandos.reqType = ''; - expandos.count = count; - cell.addClass('t1'); - node.textContent = cellTextFromCount(count); -} - -function makeMatrixMetaRow(totals) { - var headerIndices = matrixSnapshot.headerIndices, - matrixRow = createMatrixRow().at(0).addClass('ro'), - cells = matrixRow.descendants('.matCell'), - contents = cells.at(0).addClass('t81').contents(), - expandos = expandosFromNode(cells.nodeAt(0)); - expandos.hostname = ''; - expandos.reqType = '*'; - contents.nodeAt(0).textContent = ' '; - contents.nodeAt(1).textContent = blacklistedHostnamesLabel.replace( - '{{count}}', - totals[headerIndices.get('*')].toLocaleString() - ); - renderMatrixMetaCellType(cells.at(1), totals[headerIndices.get('cookie')]); - renderMatrixMetaCellType(cells.at(2), totals[headerIndices.get('css')]); - renderMatrixMetaCellType(cells.at(3), totals[headerIndices.get('image')]); - renderMatrixMetaCellType(cells.at(4), totals[headerIndices.get('media')]); - renderMatrixMetaCellType(cells.at(5), totals[headerIndices.get('script')]); - renderMatrixMetaCellType(cells.at(6), totals[headerIndices.get('xhr')]); - renderMatrixMetaCellType(cells.at(7), totals[headerIndices.get('frame')]); - renderMatrixMetaCellType(cells.at(8), totals[headerIndices.get('other')]); - return matrixRow; -} - -/******************************************************************************/ - -function computeMatrixGroupMetaStats(group) { - var headerIndices = matrixSnapshot.headerIndices, - anyTypeIndex = headerIndices.get('*'), - n = headerIndices.size, - totals = new Array(n), - i = n; - while ( i-- ) { - totals[i] = 0; - } - var rows = matrixSnapshot.rows, row; - for ( var hostname in rows ) { - if ( rows.hasOwnProperty(hostname) === false ) { - continue; - } - row = rows[hostname]; - if ( group.hasOwnProperty(row.domain) === false ) { - continue; - } - if ( row.counts[anyTypeIndex] === 0 ) { - continue; - } - totals[0] += 1; - for ( i = 1; i < n; i++ ) { - totals[i] += row.counts[i]; - } - } - return totals; -} - -/******************************************************************************/ - -// Compare hostname helper, to order hostname in a logical manner: -// top-most < bottom-most, take into account whether IP address or -// named hostname - -function hostnameCompare(a,b) { - // Normalize: most significant parts first - if ( !a.match(/^\d+(\.\d+){1,3}$/) ) { - var aa = a.split('.'); - a = aa.slice(-2).concat(aa.slice(0,-2).reverse()).join('.'); - } - if ( !b.match(/^\d+(\.\d+){1,3}$/) ) { - var bb = b.split('.'); - b = bb.slice(-2).concat(bb.slice(0,-2).reverse()).join('.'); - } - return a.localeCompare(b); -} - -/******************************************************************************/ - -function makeMatrixGroup0SectionDomain() { - return makeMatrixRowDomain('1st-party').addClass('g0 l1'); -} - -function makeMatrixGroup0Section() { - var domainDiv = createMatrixSection(); - expandosFromNode(domainDiv).domain = '1st-party'; - makeMatrixGroup0SectionDomain().appendTo(domainDiv); - return domainDiv; -} - -function makeMatrixGroup0() { - // Show literal "1st-party" row only if there is - // at least one 1st-party hostname - if ( Object.keys(groupsSnapshot[1]).length === 0 ) { - return; - } - var groupDiv = createMatrixGroup().addClass('g0'); - makeMatrixGroup0Section().appendTo(groupDiv); - groupDiv.appendTo(matrixList); -} - -/******************************************************************************/ - -function makeMatrixGroup1SectionDomain(domain) { - return makeMatrixRowDomain(domain) - .addClass('g1 l1'); -} - -function makeMatrixGroup1SectionSubomain(domain, subdomain) { - return makeMatrixRowSubdomain(domain, subdomain) - .addClass('g1 l2'); -} - -function makeMatrixGroup1SectionMetaDomain(domain) { - return makeMatrixMetaRowDomain(domain).addClass('g1 l1 meta'); -} - -function makeMatrixGroup1Section(hostnames) { - var domain = hostnames[0]; - var domainDiv = createMatrixSection() - .toggleClass('collapsed', getCollapseState(domain)); - expandosFromNode(domainDiv).domain = domain; - if ( hostnames.length > 1 ) { - makeMatrixGroup1SectionMetaDomain(domain) - .appendTo(domainDiv); - } - makeMatrixGroup1SectionDomain(domain) - .appendTo(domainDiv); - for ( var i = 1; i < hostnames.length; i++ ) { - makeMatrixGroup1SectionSubomain(domain, hostnames[i]) - .appendTo(domainDiv); - } - return domainDiv; -} - -function makeMatrixGroup1(group) { - var domains = Object.keys(group).sort(hostnameCompare); - if ( domains.length ) { - var groupDiv = createMatrixGroup().addClass('g1'); - makeMatrixGroup1Section(Object.keys(group[domains[0]]).sort(hostnameCompare)) - .appendTo(groupDiv); - for ( var i = 1; i < domains.length; i++ ) { - makeMatrixGroup1Section(Object.keys(group[domains[i]]).sort(hostnameCompare)) - .appendTo(groupDiv); - } - groupDiv.appendTo(matrixList); - } -} - -/******************************************************************************/ - -function makeMatrixGroup2SectionDomain(domain) { - return makeMatrixRowDomain(domain) - .addClass('g2 l1'); -} - -function makeMatrixGroup2SectionSubomain(domain, subdomain) { - return makeMatrixRowSubdomain(domain, subdomain) - .addClass('g2 l2'); -} - -function makeMatrixGroup2SectionMetaDomain(domain) { - return makeMatrixMetaRowDomain(domain).addClass('g2 l1 meta'); -} - -function makeMatrixGroup2Section(hostnames) { - var domain = hostnames[0]; - var domainDiv = createMatrixSection() - .toggleClass('collapsed', getCollapseState(domain)); - expandosFromNode(domainDiv).domain = domain; - if ( hostnames.length > 1 ) { - makeMatrixGroup2SectionMetaDomain(domain).appendTo(domainDiv); - } - makeMatrixGroup2SectionDomain(domain) - .appendTo(domainDiv); - for ( var i = 1; i < hostnames.length; i++ ) { - makeMatrixGroup2SectionSubomain(domain, hostnames[i]) - .appendTo(domainDiv); - } - return domainDiv; -} - -function makeMatrixGroup2(group) { - var domains = Object.keys(group).sort(hostnameCompare); - if ( domains.length) { - var groupDiv = createMatrixGroup() - .addClass('g2'); - makeMatrixGroup2Section(Object.keys(group[domains[0]]).sort(hostnameCompare)) - .appendTo(groupDiv); - for ( var i = 1; i < domains.length; i++ ) { - makeMatrixGroup2Section(Object.keys(group[domains[i]]).sort(hostnameCompare)) - .appendTo(groupDiv); - } - groupDiv.appendTo(matrixList); - } -} - -/******************************************************************************/ - -function makeMatrixGroup3SectionDomain(domain) { - return makeMatrixRowDomain(domain) - .addClass('g3 l1'); -} - -function makeMatrixGroup3SectionSubomain(domain, subdomain) { - return makeMatrixRowSubdomain(domain, subdomain) - .addClass('g3 l2'); -} - -function makeMatrixGroup3SectionMetaDomain(domain) { - return makeMatrixMetaRowDomain(domain).addClass('g3 l1 meta'); -} - -function makeMatrixGroup3Section(hostnames) { - var domain = hostnames[0]; - var domainDiv = createMatrixSection() - .toggleClass('collapsed', getCollapseState(domain)); - expandosFromNode(domainDiv).domain = domain; - if ( hostnames.length > 1 ) { - makeMatrixGroup3SectionMetaDomain(domain).appendTo(domainDiv); - } - makeMatrixGroup3SectionDomain(domain) - .appendTo(domainDiv); - for ( var i = 1; i < hostnames.length; i++ ) { - makeMatrixGroup3SectionSubomain(domain, hostnames[i]) - .appendTo(domainDiv); - } - return domainDiv; -} - -function makeMatrixGroup3(group) { - var domains = Object.keys(group).sort(hostnameCompare); - if ( domains.length) { - var groupDiv = createMatrixGroup() - .addClass('g3'); - makeMatrixGroup3Section(Object.keys(group[domains[0]]).sort(hostnameCompare)) - .appendTo(groupDiv); - for ( var i = 1; i < domains.length; i++ ) { - makeMatrixGroup3Section(Object.keys(group[domains[i]]).sort(hostnameCompare)) - .appendTo(groupDiv); - } - groupDiv.appendTo(matrixList); - } -} - -/******************************************************************************/ - -function makeMatrixGroup4SectionDomain(domain) { - return makeMatrixRowDomain(domain) - .addClass('g4 l1'); -} - -function makeMatrixGroup4SectionSubomain(domain, subdomain) { - return makeMatrixRowSubdomain(domain, subdomain) - .addClass('g4 l2'); -} - -function makeMatrixGroup4Section(hostnames) { - var domain = hostnames[0]; - var domainDiv = createMatrixSection(); - expandosFromNode(domainDiv).domain = domain; - makeMatrixGroup4SectionDomain(domain) - .appendTo(domainDiv); - for ( var i = 1; i < hostnames.length; i++ ) { - makeMatrixGroup4SectionSubomain(domain, hostnames[i]) - .appendTo(domainDiv); - } - return domainDiv; -} - -function makeMatrixGroup4(group) { - var domains = Object.keys(group).sort(hostnameCompare); - if ( domains.length === 0 ) { - return; - } - var groupDiv = createMatrixGroup().addClass('g4'); - createMatrixSection() - .addClass('g4Meta') - .toggleClass('g4Collapsed', !!matrixSnapshot.collapseBlacklistedDomains) - .appendTo(groupDiv); - makeMatrixMetaRow(computeMatrixGroupMetaStats(group), 'g4') - .appendTo(groupDiv); - makeMatrixGroup4Section(Object.keys(group[domains[0]]).sort(hostnameCompare)) - .appendTo(groupDiv); - for ( var i = 1; i < domains.length; i++ ) { - makeMatrixGroup4Section(Object.keys(group[domains[i]]).sort(hostnameCompare)) - .appendTo(groupDiv); - } - groupDiv.appendTo(matrixList); -} - -/******************************************************************************/ - -var makeMenu = function() { - var groupStats = getGroupStats(); - - if ( Object.keys(groupStats).length === 0 ) { return; } - - // https://github.com/gorhill/httpswitchboard/issues/31 - if ( matrixCellHotspots ) { - matrixCellHotspots.detach(); - } - - renderMatrixHeaderRow(); - - startMatrixUpdate(); - makeMatrixGroup0(groupStats[0]); - makeMatrixGroup1(groupStats[1]); - makeMatrixGroup2(groupStats[2]); - makeMatrixGroup3(groupStats[3]); - makeMatrixGroup4(groupStats[4]); - endMatrixUpdate(); - - uMatrixScopeWidget.init( - matrixSnapshot.domain, - matrixSnapshot.hostname, - matrixSnapshot.scope - ); - updateMatrixButtons(); - resizePopup(); - recipeManager.fetch(); -}; - -/******************************************************************************/ - -// Do all the stuff that needs to be done before building menu et al. - -function initMenuEnvironment() { - document.body.style.setProperty( - 'font-size', - getUserSetting('displayTextSize') - ); - uDom.nodeFromId('version').textContent = matrixSnapshot.appVersion || ''; - document.body.classList.toggle( - 'colorblind', - getUserSetting('colorBlindFriendly') - ); - document.body.classList.toggle( - 'noTooltips', - getUserSetting('noTooltips') - ); - - var prettyNames = matrixHeaderPrettyNames; - var keys = Object.keys(prettyNames); - var i = keys.length; - var cell, key, text; - while ( i-- ) { - key = keys[i]; - cell = uDom('#matHead .matCell[data-req-type="'+ key +'"]'); - text = vAPI.i18n(key + 'PrettyName'); - cell.text(text); - prettyNames[key] = text; - } - - firstPartyLabel = uDom('[data-i18n="matrix1stPartyLabel"]').text(); - blacklistedHostnamesLabel = uDom('[data-i18n="matrixBlacklistedHostnames"]').text(); -} - -/******************************************************************************/ - -function scopeChangeHandler(ev) { - let newScope = ev.detail.scope; - if ( !newScope || matrixSnapshot.scope === newScope ) { return; } - matrixSnapshot.scope = newScope; - matrixSnapshot.tMatrixModifiedTime = undefined; - updateMatrixSnapshot(); - dropDownMenuHide(); -} - -/******************************************************************************/ - -function updateMatrixSwitches() { - var count = 0, - enabled, - switches = matrixSnapshot.tSwitches; - for ( var switchName in switches ) { - if ( switches.hasOwnProperty(switchName) === false ) { continue; } - enabled = switches[switchName]; - if ( enabled && switchName !== 'matrix-off' ) { - count += 1; - } - uDom('#mtxSwitch_' + switchName).toggleClass('switchTrue', enabled); - } - uDom.nodeFromId('mtxSwitch_https-strict').classList.toggle( - 'relevant', - matrixSnapshot.hasMixedContent - ); - uDom.nodeFromId('mtxSwitch_no-workers').classList.toggle( - 'relevant', - matrixSnapshot.hasWebWorkers - ); - uDom.nodeFromId('mtxSwitch_referrer-spoof').classList.toggle( - 'relevant', - matrixSnapshot.has3pReferrer - ); - uDom.nodeFromId('mtxSwitch_noscript-spoof').classList.toggle( - 'relevant', - matrixSnapshot.hasNoscriptTags - ); - uDom.nodeFromSelector('#buttonMtxSwitches .fa-icon-badge').textContent = - count.toLocaleString(); - uDom.nodeFromSelector('#mtxSwitch_matrix-off .fa-icon-badge').textContent = - matrixSnapshot.blockedCount.toLocaleString(); - document.body.classList.toggle('powerOff', switches['matrix-off']); -} - -function toggleMatrixSwitch(ev) { - if ( ev.target.localName === 'a' ) { return; } - var elem = ev.currentTarget; - var pos = elem.id.indexOf('_'); - if ( pos === -1 ) { return; } - var switchName = elem.id.slice(pos + 1); - var request = { - what: 'toggleMatrixSwitch', - switchName: switchName, - srcHostname: matrixSnapshot.scope - }; - vAPI.messaging.send('popup.js', request, updateMatrixSnapshot); -} - -/******************************************************************************/ - -function updatePersistButton() { - var diffCount = matrixSnapshot.diff.length; - var button = uDom('#buttonPersist'); - button.contents() - .filter(function(){return this.nodeType===3;}) - .first() - .text(diffCount > 0 ? '\uf13e' : '\uf023'); - button.descendants('.fa-icon-badge').text(diffCount > 0 ? diffCount : ''); - var disabled = diffCount === 0; - button.toggleClass('disabled', disabled); - uDom('#buttonRevertScope').toggleClass('disabled', disabled); -} - -/******************************************************************************/ - -function persistMatrix() { - var request = { - what: 'applyDiffToPermanentMatrix', - diff: matrixSnapshot.diff - }; - vAPI.messaging.send('popup.js', request, updateMatrixSnapshot); -} - -/******************************************************************************/ - -// rhill 2014-03-12: revert completely ALL changes related to the -// current page, including scopes. - -function revertMatrix() { - var request = { - what: 'applyDiffToTemporaryMatrix', - diff: matrixSnapshot.diff - }; - vAPI.messaging.send('popup.js', request, updateMatrixSnapshot); -} - -/******************************************************************************/ - -// Buttons which are affected by any changes in the matrix - -function updateMatrixButtons() { - uMatrixScopeWidget.update(matrixSnapshot.scope); - updateMatrixSwitches(); - updatePersistButton(); -} - -/******************************************************************************/ - -function buttonReloadHandler(ev) { - vAPI.messaging.send('default', { - what: 'forceReloadTab', - tabId: matrixSnapshot.tabId, - bypassCache: ev.ctrlKey || ev.metaKey || ev.shiftKey - }); -} - -/******************************************************************************/ - -let recipeManager = (function() { - let recipes = []; - let reScopeAlias = /(^|\s+)_(\s+|$)/g; - - function createEntry(name, ruleset, parent) { - let li = document.querySelector('#templates li.recipe') - .cloneNode(true); - li.querySelector('.name').textContent = name; - li.querySelector('.ruleset').textContent = ruleset; - if ( parent ) { - parent.appendChild(li); - } - return li; - } - - function apply(ev) { - if ( - ev.target.classList.contains('expander') || - ev.target.classList.contains('name') - ) { - ev.currentTarget.classList.toggle('expanded'); - return; - } - if ( - ev.target.classList.contains('importer') === false && - ev.target.classList.contains('committer') === false - ) { - return; - } - let root = ev.currentTarget; - let ruleset = root.querySelector('.ruleset'); - let commit = ev.target.classList.contains('committer'); - vAPI.messaging.send( - 'popup.js', - { - what: 'applyRecipe', - ruleset: ruleset.textContent, - commit: commit - }, - updateMatrixSnapshot - ); - root.classList.remove('mustImport'); - if ( commit ) { - root.classList.remove('mustCommit'); - } - //dropDownMenuHide(); - } - - function show(details) { - let root = document.querySelector('#dropDownMenuRecipes .dropdown-menu'); - let ul = document.createElement('ul'); - for ( let recipe of details.recipes ) { - let li = createEntry( - recipe.name, - recipe.ruleset.replace(reScopeAlias, '$1' + details.scope + '$2'), - ul - ); - li.classList.toggle('mustImport', recipe.mustImport === true); - li.classList.toggle('mustCommit', recipe.mustCommit === true); - li.addEventListener('click', apply); - } - root.replaceChild(ul, root.querySelector('ul')); - dropDownMenuShow(uDom.nodeFromId('buttonRecipes')); - } - - function beforeShow() { - if ( recipes.length === 0 ) { return; } - vAPI.messaging.send( - 'popup.js', - { - what: 'fetchRecipeCommitStatuses', - scope: matrixSnapshot.scope, - recipes: recipes - }, - show - ); - } - - function fetch() { - let onResponse = function(response) { - recipes = Array.isArray(response) ? response : []; - let button = uDom.nodeFromId('buttonRecipes'); - if ( recipes.length === 0 ) { - button.classList.add('disabled'); - return; - } - button.classList.remove('disabled'); - button.querySelector('.fa-icon-badge').textContent = recipes.length; - }; - - let desHostnames = []; - for ( let hostname in matrixSnapshot.rows ) { - if ( matrixSnapshot.rows.hasOwnProperty(hostname) === false ) { - continue; - } - let row = matrixSnapshot.rows[hostname]; - if ( row.domain === matrixSnapshot.domain ) { continue; } - if ( row.counts[0] !== 0 || row.domain === hostname ) { - desHostnames.push(hostname); - } - } - - vAPI.messaging.send('popup.js', - { - what: 'fetchRecipes', - srcHostname: matrixSnapshot.hostname, - desHostnames: desHostnames - }, - onResponse - ); - } - - return { - fetch: fetch, - show: beforeShow, - apply: apply - }; -})(); - -/******************************************************************************/ - -function revertAll() { - vAPI.messaging.send( - 'popup.js', - { what: 'revertTemporaryMatrix' }, - updateMatrixSnapshot - ); -} - -/******************************************************************************/ - -function mouseenterMatrixCellHandler(ev) { - matrixCellHotspots.appendTo(ev.target); -} - -function mouseleaveMatrixCellHandler() { - matrixCellHotspots.detach(); -} - -/******************************************************************************/ - -function gotoExtensionURL(ev) { - var url = uDom(ev.currentTarget).attr('data-extension-url'); - if ( url ) { - vAPI.messaging.send('popup.js', { - what: 'gotoExtensionURL', - url: url, - shiftKey: ev.shiftKey - }); - } - dropDownMenuHide(); - vAPI.closePopup(); -} - -/******************************************************************************/ - -function dropDownMenuShow(button) { - var menuOverlay = document.getElementById(button.getAttribute('data-dropdown-menu')); - var butnRect = button.getBoundingClientRect(); - var viewRect = document.body.getBoundingClientRect(); - var butnNormalLeft = butnRect.left / (viewRect.width - butnRect.width); - menuOverlay.classList.add('show'); - var menu = menuOverlay.querySelector('.dropdown-menu'); - var menuRect = menu.getBoundingClientRect(); - var menuLeft = butnNormalLeft * (viewRect.width - menuRect.width); - menu.style.top = butnRect.bottom + 'px'; - if ( menuOverlay.classList.contains('dropdown-menu-centered') === false ) { - menu.style.left = menuLeft.toFixed(0) + 'px'; - } -} - -function dropDownMenuHide() { - uDom('.dropdown-menu-capture').removeClass('show'); -} - -/******************************************************************************/ - -var onMatrixSnapshotReady = function(response) { - if ( response === 'ENOTFOUND' ) { - uDom.nodeFromId('noTabFound').textContent = - vAPI.i18n('matrixNoTabFound'); - document.body.classList.add('noTabFound'); - return; - } - - // Now that tabId and pageURL are set, we can build our menu - initMenuEnvironment(); - makeMenu(); - - // After popup menu is built, check whether there is a non-empty matrix - if ( matrixSnapshot.url === '' ) { - uDom('#matHead').remove(); - uDom('#toolbarContainer').remove(); - - // https://github.com/gorhill/httpswitchboard/issues/191 - uDom('#noNetTrafficPrompt').text(vAPI.i18n('matrixNoNetTrafficPrompt')); - uDom('#noNetTrafficPrompt').css('display', ''); - } - - // Create a hash to find out whether the reload button needs to be - // highlighted. - // TODO: -}; - -/******************************************************************************/ - -const matrixSnapshotPoller = (function() { - let timer; - - const preprocessMatrixSnapshot = function(snapshot) { - if ( Array.isArray(snapshot.headerIndices) ) { - snapshot.headerIndices = new Map(snapshot.headerIndices); - } - return snapshot; - }; - - const processPollResult = function(response) { - if ( typeof response !== 'object' ) { - return; - } - if ( - response.mtxContentModified === false && - response.mtxCountModified === false && - response.pMatrixModified === false && - response.tMatrixModified === false - ) { - return; - } - if ( response instanceof Object ) { - matrixSnapshot = preprocessMatrixSnapshot(response); - } - if ( response.mtxContentModified ) { - makeMenu(); - return; - } - if ( response.mtxCountModified ) { - updateMatrixCounts(); - } - if ( - response.pMatrixModified || - response.tMatrixModified || - response.scopeModified - ) { - updateMatrixColors(); - updateMatrixBehavior(); - updateMatrixButtons(); - } - }; - - const onPolled = function(response) { - processPollResult(response); - pollAsync(); - }; - - const pollNow = function() { - unpollAsync(); - vAPI.messaging.send('popup.js', { - what: 'matrixSnapshot', - tabId: matrixSnapshot.tabId, - scope: matrixSnapshot.scope, - mtxContentModifiedTime: matrixSnapshot.mtxContentModifiedTime, - mtxCountModifiedTime: matrixSnapshot.mtxCountModifiedTime, - mtxDiffCount: matrixSnapshot.diff.length, - pMatrixModifiedTime: matrixSnapshot.pMatrixModifiedTime, - tMatrixModifiedTime: matrixSnapshot.tMatrixModifiedTime, - }, onPolled); - }; - - const pollAsync = function() { - if ( timer !== undefined ) { return; } - if ( document.defaultView === null ) { return; } - timer = vAPI.setTimeout( - ( ) => { - timer = undefined; - pollNow(); - }, - 1414 - ); - }; - - const unpollAsync = function() { - if ( timer !== undefined ) { - clearTimeout(timer); - timer = undefined; - } - }; - - (function() { - let tabId = matrixSnapshot.tabId; - - // If no tab id yet, see if there is one specified in our URL - if ( tabId === undefined ) { - const matches = window.location.search.match(/(?:\?|&)tabId=([^&]+)/); - if ( matches !== null ) { - tabId = parseInt(matches[1], 10); - // No need for logger button when embedded in logger - uDom('[data-extension-url="logger-ui.html"]').remove(); - } - } - - const snapshotFetched = function(response) { - if ( response instanceof Object ) { - matrixSnapshot = preprocessMatrixSnapshot(response); - } - onMatrixSnapshotReady(response); - pollAsync(); - }; - - vAPI.messaging.send('popup.js', { - what: 'matrixSnapshot', - tabId: tabId - }, snapshotFetched); - })(); - - return { - pollNow: pollNow - }; -})(); - -/******************************************************************************/ - -// Below is UI stuff which is not key to make the menu, so this can -// be done without having to wait for a tab to be bound to the menu. - -// We reuse for all cells the one and only cell hotspots. -uDom('#whitelist').on('click', function() { - handleWhitelistFilter(uDom(this)); - return false; - }); -uDom('#blacklist').on('click', function() { - handleBlacklistFilter(uDom(this)); - return false; - }); -uDom('#domainOnly').on('click', function() { - toggleCollapseState(uDom(this)); - return false; - }); -matrixCellHotspots = uDom('#cellHotspots').detach(); -uDom('body') - .on('mouseenter', '.matCell', mouseenterMatrixCellHandler) - .on('mouseleave', '.matCell', mouseleaveMatrixCellHandler); -window.addEventListener('uMatrixScopeWidgetChange', scopeChangeHandler); -uDom('#buttonMtxSwitches').on('click', function(ev) { - dropDownMenuShow(ev.target); -}); -uDom('[id^="mtxSwitch_"]').on('click', toggleMatrixSwitch); -uDom('#buttonPersist').on('click', persistMatrix); -uDom('#buttonRevertScope').on('click', revertMatrix); - -uDom('#buttonRecipes').on('click', function() { - recipeManager.show(); -}); - -uDom('#buttonRevertAll').on('click', revertAll); -uDom('#buttonReload').on('click', buttonReloadHandler); -uDom('.extensionURL').on('click', gotoExtensionURL); -uDom('body').on('click', '.dropdown-menu-capture', dropDownMenuHide); - -uDom('#matList').on('click', '.g4Meta', function(ev) { - matrixSnapshot.collapseBlacklistedDomains = - ev.target.classList.toggle('g4Collapsed'); - setUserSetting( - 'popupCollapseBlacklistedDomains', - matrixSnapshot.collapseBlacklistedDomains - ); -}); - -/******************************************************************************/ - -})(); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/raw-settings.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/raw-settings.js deleted file mode 100644 index c1fb3f1..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/raw-settings.js +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to black/white list requests. - Copyright (C) 2018-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/* global uDom */ - -'use strict'; - -/******************************************************************************/ - -(function() { - -/******************************************************************************/ - -var messaging = vAPI.messaging; -var cachedData = ''; -var rawSettingsInput = uDom.nodeFromId('rawSettings'); - -/******************************************************************************/ - -var hashFromRawSettings = function(raw) { - return raw.trim().replace(/\s+/g, '|'); -}; - -/******************************************************************************/ - -// This is to give a visual hint that the content of user blacklist has changed. - -var rawSettingsChanged = (function () { - var timer = null; - - var handler = function() { - timer = null; - var changed = - hashFromRawSettings(rawSettingsInput.value) !== cachedData; - uDom.nodeFromId('rawSettingsApply').disabled = !changed; - }; - - return function() { - if ( timer !== null ) { - clearTimeout(timer); - } - timer = vAPI.setTimeout(handler, 100); - }; -})(); - -/******************************************************************************/ - -function renderRawSettings() { - var onRead = function(raw) { - cachedData = hashFromRawSettings(raw); - var pretty = [], - whitespaces = ' ', - lines = raw.split('\n'), - max = 0, - pos, - i, n = lines.length; - for ( i = 0; i < n; i++ ) { - pos = lines[i].indexOf(' '); - if ( pos > max ) { - max = pos; - } - } - for ( i = 0; i < n; i++ ) { - pos = lines[i].indexOf(' '); - pretty.push(whitespaces.slice(0, max - pos) + lines[i]); - } - rawSettingsInput.value = pretty.join('\n') + '\n'; - rawSettingsChanged(); - rawSettingsInput.focus(); - }; - messaging.send('dashboard', { what: 'readRawSettings' }, onRead); -} - -/******************************************************************************/ - -var applyChanges = function() { - messaging.send( - 'dashboard', - { - what: 'writeRawSettings', - content: rawSettingsInput.value - }, - renderRawSettings - ); -}; - -/******************************************************************************/ - -// Handle user interaction -uDom('#rawSettings').on('input', rawSettingsChanged); -uDom('#rawSettingsApply').on('click', applyChanges); - -renderRawSettings(); - -/******************************************************************************/ - -})(); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/recipe-manager.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/recipe-manager.js deleted file mode 100644 index 568bf5d..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/recipe-manager.js +++ /dev/null @@ -1,272 +0,0 @@ -/******************************************************************************* - - uMatrix - a Chromium browser extension to black/white list requests. - Copyright (C) 2018 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -/* global punycode */ - -'use strict'; - -/******************************************************************************/ - -µMatrix.recipeManager = (function() { - let rawRecipes = []; - let recipeIdGenerator = 1; - let recipeBook = new Map(); - let reNoUnicode = /^[\x00-\x7F]$/; - - const authorFromHeader = function(header) { - let match = /^! +maintainer: +([^\n\r]+)/im.exec(header); - return match !== null ? match[1].trim() : ''; - }; - - const conditionMatch = function(condition, srcHostname, desHostnames) { - let i = condition.indexOf(' '); - if ( i === -1 ) { return false; } - let targetHostname = condition.slice(0, i).trim(); - if ( targetHostname !== '*' ) { - let hn = srcHostname; - if ( targetHostname.endsWith('.*') ) { - let domain = µMatrix.URI.domainFromHostname(hn); - let pos = domain.indexOf('.'); - if ( pos !== -1 ) { - hn = hn.slice(0, pos + hn.length - domain.length) + '.*'; - } - } - if ( hn.endsWith(targetHostname) === false ) { return false; } - let pos = hn.length - targetHostname.length; - if ( pos !== 0 && hn.charAt(pos - 1) !== '.' ) { return false; } - } - targetHostname = condition.slice(i + 1).trim(); - if ( targetHostname === '*' ) { return true; } - for ( let hn of desHostnames ) { - if ( hn === srcHostname ) { continue; } - if ( hn.endsWith(targetHostname) ) { return true; } - } - return false; - }; - - const toASCII = function(rule) { - if ( reNoUnicode.test(rule) ) { return rule; } - let parts = rule.split(/\s+/); - for ( let i = 0; i < parts.length; i++ ) { - parts[i] = punycode.toASCII(parts[i]); - } - return parts.join(' '); - }; - - const compareLength = function(a, b) { - return b.length - a.length; - }; - - const getTokens = function(s) { - let tokens = s.match(/[a-z0-9]+/gi); - if ( tokens === null ) { return []; } - return tokens; - }; - - const addRecipe = function(recipe) { - let tokens = getTokens(recipe.condition); - tokens.sort(compareLength); - let token = tokens[0]; - let recipes = recipeBook.get(token); - if ( recipes === undefined ) { - recipeBook.set(token, recipes = []); - } - recipes.push(recipe); - }; - - const fromString = function(raw) { - const reValidRecipeFile = /^! uMatrix: Ruleset recipes [0-9.]+[\n\r]+/; - const rawHeader = raw.slice(0, 1024); - if ( reValidRecipeFile.test(rawHeader) === false ) { return; } - const reComment = /^[!#]/; - let maintainer = authorFromHeader(rawHeader); - let recipeName, - recipeCondition, - recipeRuleset; - let lineIter = new µMatrix.LineIterator(raw); - for (;;) { - let line = lineIter.next().trim(); - if ( line.length === 0 ) { - if ( - recipeName !== undefined && - recipeCondition !== undefined && - recipeRuleset.length !== 0 - ) { - addRecipe({ - id: recipeIdGenerator++, - name: recipeName, - maintainer: maintainer, - condition: recipeCondition, - ruleset: recipeRuleset - }); - } - recipeName = undefined; - recipeCondition = undefined; - } - if ( lineIter.eot() && recipeName === undefined ) { break; } - if ( line.length === 0 ) { continue; } - let isComment = reComment.test(line); - if ( isComment && recipeCondition === undefined ) { continue; } - if ( recipeName === undefined ) { - recipeName = line; - recipeCondition = undefined; - continue; - } - if ( recipeCondition === undefined ) { - recipeCondition = toASCII(line); - recipeRuleset = ''; - continue; - } - if ( recipeRuleset.length !== 0 ) { - recipeRuleset += '\n'; - } - recipeRuleset += isComment ? line : toASCII(line); - } - }; - - const fromPendingStrings = function() { - if ( rawRecipes.length === 0 ) { return; } - for ( var raw of rawRecipes ) { - fromString(raw); - } - rawRecipes = []; - }; - - // true = blocked, false = not blocked - const evaluateRuleParts = function(matrix, scope, parts) { - if ( parts[0].endsWith(':') ) { - return matrix.evaluateSwitchZ(parts[0].slice(0, -1), scope); - } - return matrix.evaluateCellZXY(scope, parts[1], parts[2]) === 1; - }; - - const api = {}; - - api.apply = function(details) { - const reComment = /^[!#]/; - const µm = µMatrix; - const tMatrix = µm.tMatrix; - const pMatrix = µm.pMatrix; - let mustPersist = false; - for ( const rule of details.ruleset.split('\n') ) { - if ( reComment.test(rule) ) { continue; } - let parts = rule.split(/\s+/); - if ( parts.length < 2 ) { continue; } - let f0 = parts[0]; - let f1 = parts[1]; - // Switch - if ( f0.endsWith(':') ) { - f0 = f0.slice(0, -1); - if ( tMatrix.evaluateSwitchZ(f0, f1) !== false ) { - tMatrix.setSwitchZ(f0, f1, false); - if ( details.commit ) { - pMatrix.setSwitchZ(f0, f1, false); - mustPersist = true; - } - } - continue; - } - // Rule - if ( parts.length < 3 ) { continue; } - let f2 = parts[2]; - let action = tMatrix.evaluateCellZXY(f0, f1, f2); - if ( (action & 3) === 1 ) { - tMatrix.whitelistCell(f0, f1, f2); - } - if ( details.commit !== true ) { continue; } - action = pMatrix.evaluateCellZXY(f0, f1, f2); - if ( (action & 3) === 1 ) { - pMatrix.whitelistCell(f0, f1, f2); - mustPersist = true; - } - } - if ( mustPersist ) { - µm.saveMatrix(); - } - }; - - api.fetch = function(srcHostname, desHostnames, callback) { - fromPendingStrings(); - let out = []; - let fetched = new Set(); - let tokens = getTokens(srcHostname + ' ' + desHostnames.join(' ')); - for ( let token of tokens ) { - let recipes = recipeBook.get(token); - if ( recipes === undefined ) { continue; } - for ( let recipe of recipes ) { - if ( fetched.has(recipe.id) ) { continue; } - if ( - conditionMatch( - recipe.condition, - srcHostname, - desHostnames - ) - ) { - out.push(recipe); - fetched.add(recipe.id); - } - } - } - callback(out); - }; - - api.statuses = function(details) { - let pMatrix = µMatrix.pMatrix, - tMatrix = µMatrix.tMatrix; - let reComment = /^[!#]/; - for ( let recipe of details.recipes ) { - let ruleIter = new µMatrix.LineIterator(recipe.ruleset); - while ( ruleIter.eot() === false ) { - let rule = ruleIter.next(); - if ( reComment.test(rule) ) { continue; } - let parts = rule.split(/\s+/); - if ( - recipe.mustCommit !== true && - evaluateRuleParts(pMatrix, details.scope, parts) - ) { - recipe.mustCommit = true; - if ( recipe.mustImport ) { break; } - } - if ( - recipe.mustImport !== true && - evaluateRuleParts(tMatrix, details.scope, parts) - ) { - recipe.mustImport = true; - if ( recipe.mustCommit ) { break; } - } - } - } - return details; - }; - - api.fromString = function(raw) { - rawRecipes.push(raw); - }; - - api.reset = function() { - rawRecipes.length = 0; - recipeBook.clear(); - }; - - return api; -})(); - -/******************************************************************************/ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/scope-selector.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/scope-selector.js deleted file mode 100644 index 0fa53bf..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/scope-selector.js +++ /dev/null @@ -1,152 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to black/white list requests. - Copyright (C) 2018-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -/* exported uMatrixScopeWidget */ -/* global punycode */ - -'use strict'; - -/******************************************************************************/ -/******************************************************************************/ - -let uMatrixScopeWidget = (function() { - -// Start of private namespace -// >>>>>>>> - -/******************************************************************************/ - -let currentScope = ''; -let listening = false; - -let fireChangeEvent = function() { - document.body.setAttribute('data-scope', currentScope); - let ev = new CustomEvent( - 'uMatrixScopeWidgetChange', - { - detail: { scope: currentScope } - } - ); - window.dispatchEvent(ev); -}; - -let init = function(domain, hostname, scope, container) { - if ( typeof domain !== 'string' ) { return; } - - currentScope = ''; - - // Reset widget - if ( !container ) { - container = document; - } - let specificScope = container.querySelector('#specificScope'); - while ( specificScope.firstChild !== null ) { - specificScope.removeChild(specificScope.firstChild); - } - - // Fill in the scope menu entries - let pos = domain.indexOf('.'); - let tld, labels; - if ( pos === -1 ) { - tld = ''; - labels = hostname; - } else { - tld = domain.slice(pos + 1); - labels = hostname.slice(0, -tld.length); - } - let beg = 0; - while ( beg < labels.length ) { - pos = labels.indexOf('.', beg); - if ( pos === -1 ) { - pos = labels.length; - } else { - pos += 1; - } - let label = document.createElement('span'); - label.appendChild( - document.createTextNode(punycode.toUnicode(labels.slice(beg, pos))) - ); - let span = document.createElement('span'); - span.setAttribute('data-scope', labels.slice(beg) + tld); - span.appendChild(label); - specificScope.appendChild(span); - beg = pos; - } - if ( tld !== '' ) { - let label = document.createElement('span'); - label.appendChild(document.createTextNode(punycode.toUnicode(tld))); - let span = document.createElement('span'); - span.setAttribute('data-scope', tld); - span.appendChild(label); - specificScope.appendChild(span); - } - - if ( listening === false ) { - container.querySelector('#specificScope').addEventListener( - 'click', - ev => { update(ev.target.getAttribute('data-scope')); } - ); - container.querySelector('#globalScope').addEventListener( - 'click', - ( ) => { update('*'); } - ); - listening = true; - } - - update(scope || hostname, container); -}; - -let getScope = function() { - return currentScope; -}; - -let update = function(scope, container) { - if ( scope === currentScope ) { return; } - currentScope = scope; - if ( !container ) { - container = document; - } - let specificScope = container.querySelector('#specificScope'), - isGlobal = scope === '*'; - specificScope.classList.toggle('on', !isGlobal); - container.querySelector('#globalScope').classList.toggle('on', isGlobal); - for ( let node of specificScope.children ) { - node.classList.toggle( - 'on', - !isGlobal && - scope.endsWith(node.getAttribute('data-scope')) - ); - } - fireChangeEvent(); -}; - -return { init, getScope, update }; - -/******************************************************************************/ - -// <<<<<<<< -// End of private namespace - -})(); - -/******************************************************************************/ -/******************************************************************************/ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/settings.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/settings.js deleted file mode 100644 index 26fe414..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/settings.js +++ /dev/null @@ -1,195 +0,0 @@ -/******************************************************************************* - - uMatrix - a Chromium browser extension to black/white list requests. - Copyright (C) 2014-2018 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -/* global uDom */ - -'use strict'; - -/******************************************************************************/ - -(function() { - -/******************************************************************************/ - -var cachedSettings = {}; - -/******************************************************************************/ - -function changeUserSettings(name, value) { - vAPI.messaging.send('settings.js', { - what: 'userSettings', - name: name, - value: value - }); -} - -/******************************************************************************/ - -function changeMatrixSwitch(name, state) { - vAPI.messaging.send('settings.js', { - what: 'setMatrixSwitch', - switchName: name, - state: state - }); -} - -/******************************************************************************/ - -function onChangeValueHandler(elem, setting, min, max) { - var oldVal = cachedSettings.userSettings[setting]; - var newVal = Math.round(parseFloat(elem.value)); - if ( typeof newVal !== 'number' ) { - newVal = oldVal; - } else { - newVal = Math.max(newVal, min); - newVal = Math.min(newVal, max); - } - elem.value = newVal; - if ( newVal !== oldVal ) { - changeUserSettings(setting, newVal); - } -} - -/******************************************************************************/ - -function prepareToDie() { - onChangeValueHandler( - uDom.nodeFromId('deleteUnusedSessionCookiesAfter'), - 'deleteUnusedSessionCookiesAfter', - 15, 1440 - ); - onChangeValueHandler( - uDom.nodeFromId('clearBrowserCacheAfter'), - 'clearBrowserCacheAfter', - 15, 1440 - ); -} - -/******************************************************************************/ - -function onInputChanged(ev) { - var target = ev.target; - - switch ( target.id ) { - case 'displayTextSize': - changeUserSettings('displayTextSize', target.value + 'px'); - break; - case 'clearBrowserCache': - case 'cloudStorageEnabled': - case 'collapseBlacklisted': - case 'collapseBlocked': - case 'colorBlindFriendly': - case 'deleteCookies': - case 'deleteLocalStorage': - case 'deleteUnusedSessionCookies': - case 'iconBadgeEnabled': - case 'noTooltips': - case 'processHyperlinkAuditing': - changeUserSettings(target.id, target.checked); - break; - case 'noMixedContent': - case 'noscriptTagsSpoofed': - case 'processReferer': - changeMatrixSwitch( - target.getAttribute('data-matrix-switch'), - target.checked - ); - break; - case 'deleteUnusedSessionCookiesAfter': - onChangeValueHandler(target, 'deleteUnusedSessionCookiesAfter', 15, 1440); - break; - case 'clearBrowserCacheAfter': - onChangeValueHandler(target, 'clearBrowserCacheAfter', 15, 1440); - break; - case 'popupScopeLevel': - changeUserSettings('popupScopeLevel', target.value); - break; - default: - break; - } - - switch ( target.id ) { - case 'collapseBlocked': - synchronizeWidgets(); - break; - default: - break; - } -} - -/******************************************************************************/ - -function synchronizeWidgets() { - var e1, e2; - - e1 = uDom.nodeFromId('collapseBlocked'); - e2 = uDom.nodeFromId('collapseBlacklisted'); - if ( e1.checked ) { - e2.setAttribute('disabled', ''); - } else { - e2.removeAttribute('disabled'); - } -} - -/******************************************************************************/ - -vAPI.messaging.send( - 'settings.js', - { what: 'getUserSettings' }, - function onSettingsReceived(settings) { - // Cache copy - cachedSettings = settings; - - var userSettings = settings.userSettings; - var matrixSwitches = settings.matrixSwitches; - - uDom('[data-setting-bool]').forEach(function(elem){ - elem.prop('checked', userSettings[elem.prop('id')] === true); - }); - - uDom('[data-matrix-switch]').forEach(function(elem){ - var switchName = elem.attr('data-matrix-switch'); - if ( typeof switchName === 'string' && switchName !== '' ) { - elem.prop('checked', matrixSwitches[switchName] === true); - } - }); - - uDom.nodeFromId('displayTextSize').value = - parseInt(userSettings.displayTextSize, 10) || 14; - - uDom.nodeFromId('popupScopeLevel').value = userSettings.popupScopeLevel; - uDom.nodeFromId('deleteUnusedSessionCookiesAfter').value = - userSettings.deleteUnusedSessionCookiesAfter; - uDom.nodeFromId('clearBrowserCacheAfter').value = - userSettings.clearBrowserCacheAfter; - - synchronizeWidgets(); - - document.addEventListener('change', onInputChanged); - - // https://github.com/gorhill/httpswitchboard/issues/197 - uDom(window).on('beforeunload', prepareToDie); - } -); - -/******************************************************************************/ - -})(); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/start.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/start.js deleted file mode 100644 index 41f0bed..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/start.js +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to black/white list requests. - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -// ORDER IS IMPORTANT - -/******************************************************************************/ - -// Load everything - -(function() { - -'use strict'; - -/******************************************************************************/ - -var µm = µMatrix; - -/******************************************************************************/ - -var processCallbackQueue = function(queue, callback) { - var processOne = function() { - var fn = queue.pop(); - if ( fn ) { - fn(processOne); - } else if ( typeof callback === 'function' ) { - callback(); - } - }; - processOne(); -}; - -/******************************************************************************/ - -var onAllDone = function() { - µm.webRequest.start(); - - µm.loadRecipes(); - - // https://github.com/uBlockOrigin/uMatrix-issues/issues/63 - // Ensure user settings are fully loaded before launching the - // asset updater. - µm.assets.addObserver(µm.assetObserver.bind(µm)); - µm.scheduleAssetUpdater(µm.userSettings.autoUpdate ? 7 * 60 * 1000 : 0); - - vAPI.cloud.start([ 'myRulesPane' ]); -}; - -/******************************************************************************/ - -var onPSLReady = function() { - // TODO: Promisify - let count = 4; - const countdown = ( ) => { - count -= 1; - if ( count !== 0 ) { return; } - onAllDone(); - }; - - µm.loadRawSettings(countdown); - µm.loadMatrix(countdown); - µm.loadHostsFiles(countdown); - - vAPI.tabs.getAll(tabs => { - const pageStore = - µm.pageStoreFactory(µm.tabContextManager.mustLookup(vAPI.noTabId)); - pageStore.title = vAPI.i18n('statsPageDetailedBehindTheScenePage'); - µm.pageStores.set(vAPI.noTabId, pageStore); - - if ( Array.isArray(tabs) ) { - for ( const tab of tabs ) { - µm.tabContextManager.push(tab.id, tab.url, 'newURL'); - } - } - countdown(); - }); -}; - -/******************************************************************************/ - -processCallbackQueue(µm.onBeforeStartQueue, function() { - // TODO: Promisify - let count = 2; - const countdown = ( ) => { - count -= 1; - if ( count !== 0 ) { return; } - onPSLReady(); - }; - - µm.publicSuffixList.load(countdown); - µm.loadUserSettings(countdown); -}); - -/******************************************************************************/ - -})(); - -/******************************************************************************/ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/storage.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/storage.js deleted file mode 100644 index c470639..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/storage.js +++ /dev/null @@ -1,991 +0,0 @@ -/******************************************************************************* - - uMatrix - a Chromium browser extension to black/white list requests. - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -/* global punycode, publicSuffixList */ - -'use strict'; - -/******************************************************************************/ - -µMatrix.getBytesInUse = function() { - var µm = this; - var getBytesInUseHandler = function(bytesInUse) { - µm.storageUsed = bytesInUse; - }; - // Not all WebExtension implementations support getBytesInUse(). - if ( typeof vAPI.storage.getBytesInUse === 'function' ) { - vAPI.storage.getBytesInUse(null, getBytesInUseHandler); - } else { - µm.storageUsed = undefined; - } -}; - -/******************************************************************************/ - -µMatrix.saveUserSettings = function() { - vAPI.storage.set( - this.userSettings, - this.getBytesInUse.bind(this) - ); -}; - -µMatrix.loadUserSettings = function(callback) { - var µm = this; - - if ( typeof callback !== 'function' ) { - callback = this.noopFunc; - } - - var onAvailableRulesetFilesReady = function(availableRulesetFiles) { - let selectedAssetKeys = new Set(); - for ( let entry of availableRulesetFiles ) { - let assetKey = entry[0]; - let assetLang = entry[1].lang; - if ( assetLang === undefined ) { - selectedAssetKeys.add(assetKey); - continue; - } - for ( let lang of navigator.languages ) { - if ( assetLang.indexOf(lang) !== -1 ) { - selectedAssetKeys.add(assetKey); - break; - } - } - } - µm.userSettings.selectedRecipeFiles = Array.from(selectedAssetKeys); - vAPI.storage.set({ - selectedRecipeFiles: µm.userSettings.selectedRecipeFiles - }); - callback(µm.userSettings); - }; - - var initializeSelectedRulesetFiles = function() { - if ( - µm.userSettings.selectedRecipeFiles.length === 1 && - µm.userSettings.selectedRecipeFiles[0] === '' - ) { - µm.getAvailableRecipeFiles(onAvailableRulesetFilesReady); - return; - } - callback(µm.userSettings); - }; - - var onAvailableHostsFilesReady = function(availableHostFiles) { - µm.userSettings.selectedHostsFiles = - Array.from(availableHostFiles.keys()); - vAPI.storage.set({ - selectedHostsFiles: µm.userSettings.selectedHostsFiles - }); - initializeSelectedRulesetFiles(); - }; - - var migrateSelectedHostsFiles = function(bin) { - if ( - bin instanceof Object === false || - bin.liveHostsFiles instanceof Object === false - ) { - µm.getAvailableHostsFiles(onAvailableHostsFilesReady); - return; - } - let selectedHostsFiles = new Set(); - for ( let entry of µm.toMap(bin.liveHostsFiles) ) { - if ( entry[1].off !== true ) { - selectedHostsFiles.add(entry[0]); - } - } - µm.userSettings.selectedHostsFiles = Array.from(selectedHostsFiles); - vAPI.storage.set({ - selectedHostsFiles: µm.userSettings.selectedHostsFiles - }); - initializeSelectedRulesetFiles(); - }; - - var initializeSelectedHostsFiles = function() { - // Backward-compatibility: populate the new list selection array with - // existing data. - if ( - µm.userSettings.selectedHostsFiles.length === 1 && - µm.userSettings.selectedHostsFiles[0] === '' - ) { - vAPI.storage.get('liveHostsFiles', migrateSelectedHostsFiles); - return; - } - initializeSelectedRulesetFiles(); - }; - - var settingsLoaded = function(store) { - µm.userSettings = store; - if ( typeof µm.userSettings.externalHostsFiles === 'string' ) { - µm.userSettings.externalHostsFiles = - µm.userSettings.externalHostsFiles.length !== 0 ? - µm.userSettings.externalHostsFiles.split('\n') : - []; - } - initializeSelectedHostsFiles(); - }; - - vAPI.storage.get(this.userSettings, settingsLoaded); -}; - -/******************************************************************************/ - -µMatrix.loadRawSettings = function(callback) { - if ( typeof callback !== 'function' ) { - callback = this.noopFunc; - } - - const onLoaded = bin => { - if ( - bin instanceof Object === false || - bin.rawSettings instanceof Object === false - ) { - return callback(); - } - for ( const key of Object.keys(bin.rawSettings) ) { - if ( - this.rawSettings.hasOwnProperty(key) === false || - typeof bin.rawSettings[key] !== typeof this.rawSettings[key] - ) { - continue; - } - this.rawSettings[key] = bin.rawSettings[key]; - } - this.rawSettingsWriteTime = Date.now(); - callback(); - }; - - vAPI.storage.get('rawSettings', onLoaded); -}; - -µMatrix.saveRawSettings = function(rawSettings, callback) { - const keys = Object.keys(rawSettings); - if ( keys.length === 0 ) { - if ( typeof callback === 'function' ) { - callback(); - } - return; - } - for ( const key of keys ) { - if ( - this.rawSettingsDefault.hasOwnProperty(key) && - typeof rawSettings[key] === typeof this.rawSettingsDefault[key] - ) { - this.rawSettings[key] = rawSettings[key]; - } - } - vAPI.storage.set({ rawSettings: this.rawSettings }, callback); - this.saveImmediateHiddenSettings(); - this.rawSettingsWriteTime = Date.now(); -}; - -µMatrix.rawSettingsFromString = function(raw) { - var result = {}, - lineIter = new this.LineIterator(raw), - line, matches, name, value; - while ( lineIter.eot() === false ) { - line = lineIter.next().trim(); - matches = /^(\S+)(\s+(.+))?$/.exec(line); - if ( matches === null ) { continue; } - name = matches[1]; - if ( this.rawSettingsDefault.hasOwnProperty(name) === false ) { - continue; - } - value = (matches[2] || '').trim(); - switch ( typeof this.rawSettingsDefault[name] ) { - case 'boolean': - if ( value === 'true' ) { - value = true; - } else if ( value === 'false' ) { - value = false; - } else { - value = this.rawSettingsDefault[name]; - } - break; - case 'string': - if ( value === '' ) { - value = this.rawSettingsDefault[name]; - } - break; - case 'number': - value = parseInt(value, 10); - if ( isNaN(value) ) { - value = this.rawSettingsDefault[name]; - } - break; - default: - break; - } - if ( this.rawSettings[name] !== value ) { - result[name] = value; - } - } - this.saveRawSettings(result); -}; - -µMatrix.stringFromRawSettings = function() { - const out = []; - for ( const key of Object.keys(this.rawSettings).sort() ) { - out.push(key + ' ' + this.rawSettings[key]); - } - return out.join('\n'); -}; - -// These settings must be available immediately on startup, without delay -// through the vAPI.localStorage. Add/remove settings as needed. - -µMatrix.saveImmediateHiddenSettings = function() { - vAPI.localStorage.setItem( - 'immediateRawSettings', - JSON.stringify({ - suspendTabsUntilReady: this.rawSettings.suspendTabsUntilReady, - }) - ); -}; - -/******************************************************************************/ - -µMatrix.saveMatrix = function() { - vAPI.storage.set({ userMatrix: this.pMatrix.toArray() }); -}; - -µMatrix.loadMatrix = function(callback) { - if ( typeof callback !== 'function' ) { - callback = this.noopFunc; - } - const onLoaded = bin => { - if ( bin instanceof Object === false ) { - return callback(); - } - if ( typeof bin.userMatrix === 'string' ) { - this.pMatrix.fromString(bin.userMatrix); - } else if ( Array.isArray(bin.userMatrix) ) { - this.pMatrix.fromArray(bin.userMatrix); - } - this.tMatrix.assign(this.pMatrix); - callback(); - }; - vAPI.storage.get('userMatrix', onLoaded); -}; - -/******************************************************************************/ - -µMatrix.loadRecipes = function(reset, callback) { - if ( typeof callback !== 'function' ) { - callback = this.noopFunc; - } - - let µm = this, - countdownCount = 0; - - if ( reset ) { - µm.recipeManager.reset(); - } - - let recipeMetadata; - - let onDone = function() { - vAPI.messaging.broadcast({ what: 'loadRecipeFilesCompleted' }); - µm.getBytesInUse(); - callback(); - }; - - let onLoaded = function(details) { - if ( details.content ) { - let entry = recipeMetadata.get(details.assetKey); - if ( entry.submitter === 'user' ) { - let match = /^! +Title: *(.+)$/im.exec( - details.content.slice(2048) - ); - if ( match !== null && match[1] !== entry.title ) { - µm.assets.registerAssetSource( - details.assetKey, - { title: match[1] } - ); - } - } - µm.recipeManager.fromString(details.content); - } - countdownCount -= 1; - if ( countdownCount === 0 ) { - onDone(); - } - }; - - let onMetadataReady = function(metadata) { - recipeMetadata = metadata; - for ( let entry of metadata ) { - let assetKey = entry[0]; - let recipeFile = entry[1]; - if ( recipeFile.selected !== true ) { continue; } - µm.assets.get(assetKey, onLoaded); - countdownCount += 1; - } - let userRecipes = µm.userSettings.userRecipes; - if ( userRecipes.enabled ) { - µm.recipeManager.fromString( - '! uMatrix: Ruleset recipes 1.0\n' + userRecipes.content - ); - } - if ( countdownCount === 0 ) { - onDone(); - } - }; - - this.getAvailableRecipeFiles(onMetadataReady); -}; - -/******************************************************************************/ - -µMatrix.assetKeysFromImportedAssets = function(raw) { - var out = new Set(), - reIgnore = /^[!#]/, - reValid = /^[a-z-]+:\/\/\S+\/./, - lineIter = new this.LineIterator(raw); - while ( lineIter.eot() === false ) { - let location = lineIter.next().trim(); - if ( reIgnore.test(location) || !reValid.test(location) ) { continue; } - out.add(location); - } - return out; -}; - -/******************************************************************************/ - -µMatrix.getAvailableHostsFiles = function(callback) { - var µm = this, - availableHostsFiles = new Map(); - - // Custom filter lists. - var importedListKeys = new Set(µm.userSettings.externalHostsFiles); - - for ( let assetKey of importedListKeys ) { - let entry = { - type: 'filters', - contentURL: assetKey, - external: true, - submitter: 'user', - title: assetKey - }; - this.assets.registerAssetSource(assetKey, entry); - availableHostsFiles.set(assetKey, entry); - } - - // Populate available lists with useful data. - var onHostsFilesDataReady = function(bin) { - if ( bin && bin.liveHostsFiles ) { - for ( let entry of µm.toMap(bin.liveHostsFiles) ) { - let assetKey = entry[0]; - let availableAsset = availableHostsFiles.get(assetKey); - if ( availableAsset === undefined ) { continue; } - let liveAsset = entry[1]; - if ( liveAsset.entryCount !== undefined ) { - availableAsset.entryCount = liveAsset.entryCount; - } - if ( liveAsset.entryUsedCount !== undefined ) { - availableAsset.entryUsedCount = liveAsset.entryUsedCount; - } - // This may happen if the list name was pulled from the list content - if ( availableAsset.title === '' && liveAsset.title !== undefined ) { - availableAsset.title = liveAsset.title; - } - } - } - - for ( let asseyKey of µm.userSettings.selectedHostsFiles ) { - let asset = availableHostsFiles.get(asseyKey); - if ( asset !== undefined ) { - asset.selected = true; - } - } - - callback(availableHostsFiles); - }; - - // built-in lists - var onBuiltinHostsFilesLoaded = function(entries) { - for ( let assetKey in entries ) { - if ( entries.hasOwnProperty(assetKey) === false ) { continue; } - let entry = entries[assetKey]; - if ( entry.type !== 'filters' ) { continue; } - if ( - entry.submitter === 'user' && - importedListKeys.has(assetKey) === false - ) { - µm.assets.unregisterAssetSource(assetKey); - µm.assets.remove(assetKey); - continue; - } - availableHostsFiles.set(assetKey, Object.assign({}, entry)); - } - - vAPI.storage.get('liveHostsFiles', onHostsFilesDataReady); - }; - - this.assets.metadata(onBuiltinHostsFilesLoaded); -}; - -/******************************************************************************/ - -µMatrix.getAvailableRecipeFiles = function(callback) { - var µm = this, - availableRecipeFiles = new Map(); - - // Imported recipe resources. - var importedResourceKeys = new Set(µm.userSettings.externalRecipeFiles); - - for ( let assetKey of importedResourceKeys ) { - let entry = { - type: 'recipes', - contentURL: assetKey, - external: true, - submitter: 'user' - }; - this.assets.registerAssetSource(assetKey, entry); - availableRecipeFiles.set(assetKey, entry); - } - - var onBuiltinRecipeFilesLoaded = function(entries) { - for ( let assetKey in entries ) { - if ( entries.hasOwnProperty(assetKey) === false ) { continue; } - let entry = entries[assetKey]; - if ( entry.type !== 'recipes' ) { continue; } - if ( - entry.submitter === 'user' && - importedResourceKeys.has(assetKey) === false - ) { - µm.assets.unregisterAssetSource(assetKey); - µm.assets.remove(assetKey); - continue; - } - availableRecipeFiles.set(assetKey, Object.assign({}, entry)); - } - - for ( let asseyKey of µm.userSettings.selectedRecipeFiles ) { - let asset = availableRecipeFiles.get(asseyKey); - if ( asset !== undefined ) { - asset.selected = true; - } - } - - callback(availableRecipeFiles); - }; - - this.assets.metadata(onBuiltinRecipeFilesLoaded); -}; - -/******************************************************************************/ - -µMatrix.loadHostsFiles = function(callback) { - let hostsFileLoadCount; - - if ( typeof callback !== 'function' ) { - callback = this.noopFunc; - } - - const loadHostsFilesEnd = fromSelfie => { - if ( fromSelfie !== true ) { - this.ubiquitousBlacklist.freeze(); - vAPI.storage.set({ liveHostsFiles: Array.from(this.liveHostsFiles) }); - this.hostsFilesSelfie.create(); - } - vAPI.messaging.broadcast({ what: 'loadHostsFilesCompleted' }); - this.getBytesInUse(); - callback(); - }; - - const mergeHostsFile = details => { - this.mergeHostsFile(details); - hostsFileLoadCount -= 1; - if ( hostsFileLoadCount === 0 ) { - loadHostsFilesEnd(); - } - }; - - const loadHostsFilesStart = hostsFiles => { - this.liveHostsFiles = hostsFiles; - this.ubiquitousBlacklist.reset(); - hostsFileLoadCount = this.userSettings.selectedHostsFiles.length; - - // Load all hosts file which are not disabled. - for ( const assetKey of this.userSettings.selectedHostsFiles ) { - this.assets.get(assetKey, mergeHostsFile); - } - - // https://github.com/gorhill/uMatrix/issues/2 - if ( hostsFileLoadCount === 0 ) { - loadHostsFilesEnd(); - return; - } - }; - - const onSelfieReady = status => { - if ( status === true ) { - return loadHostsFilesEnd(true); - } - this.getAvailableHostsFiles(loadHostsFilesStart); - }; - - this.hostsFilesSelfie.load(onSelfieReady); -}; - -/******************************************************************************/ - -µMatrix.mergeHostsFile = function(details) { - var usedCount = this.ubiquitousBlacklist.count; - var duplicateCount = this.ubiquitousBlacklist.duplicateCount; - - // https://www.reddit.com/r/uMatrix/comments/ftebgz/ - // Be ready to deal with a removed asset. - - if ( typeof details.content === 'string' && details.content !== '' ) { - this.mergeHostsFileContent(details.content); - } - - usedCount = this.ubiquitousBlacklist.count - usedCount; - duplicateCount = this.ubiquitousBlacklist.duplicateCount - duplicateCount; - - const hostsFileMeta = this.liveHostsFiles.get(details.assetKey); - if ( hostsFileMeta === undefined ) { - this.liveHostsFiles.delete(details.assetKey); - return; - } - - hostsFileMeta.entryCount = usedCount + duplicateCount; - hostsFileMeta.entryUsedCount = usedCount; -}; - -/******************************************************************************/ - -µMatrix.mergeHostsFileContent = function(rawText) { - var rawEnd = rawText.length; - var ubiquitousBlacklist = this.ubiquitousBlacklist; - var reLocalhost = new RegExp( - [ - '(?:^|\\s+)(?:', - [ - 'localhost\\.localdomain', - 'ip6-allrouters', - 'broadcasthost', - 'ip6-localhost', - 'ip6-allnodes', - 'ip6-loopback', - 'localhost', - 'local', - '255\\.255\\.255\\.255', - '127\\.0\\.0\\.1', - '0\\.0\\.0\\.0', - 'fe80::1%lo0', - 'ff02::1', - 'ff02::2', - '::1' - ].join('|'), - ')(?=\\s+|$)' - ].join(''), - 'g' - ); - var reAsciiSegment = /^[\x21-\x7e]+$/; - var lineBeg = 0, lineEnd; - - while ( lineBeg < rawEnd ) { - lineEnd = rawText.indexOf('\n', lineBeg); - if ( lineEnd < 0 ) { - lineEnd = rawText.indexOf('\r', lineBeg); - if ( lineEnd < 0 ) { - lineEnd = rawEnd; - } - } - - // rhill 2014-04-18: The trim is important here, as without it there - // could be a lingering `\r` which would cause problems in the - // following parsing code. - let line = rawText.slice(lineBeg, lineEnd).trim(); - lineBeg = lineEnd + 1; - - // https://github.com/gorhill/httpswitchboard/issues/15 - // Ensure localhost et al. don't end up in the ubiquitous blacklist. - line = line - .replace(/#.*$/, '') - .toLowerCase() - .replace(reLocalhost, '') - .trim(); - - // The filter is whatever sequence of printable ascii character without - // whitespaces - let matches = reAsciiSegment.exec(line); - if ( matches === null ) { continue; } - - // Bypass anomalies - // For example, when a filter contains whitespace characters, or - // whatever else outside the range of printable ascii characters. - if ( matches[0] !== line ) { continue; } - line = matches[0]; - if ( line === '' ) { continue; } - - ubiquitousBlacklist.add(line); - } -}; - -/******************************************************************************/ - -µMatrix.selectAssets = function(details, callback) { - var µm = this; - - var applyAssetSelection = function( - metadata, - details, - propSelectedAssetKeys, - propImportedAssetKeys, - propInlineAsset - ) { - let µmus = µm.userSettings; - let selectedAssetKeys = new Set(); - let importedAssetKeys = new Set(µmus[propImportedAssetKeys]); - - if ( Array.isArray(details.toSelect) ) { - for ( let assetKey of details.toSelect ) { - if ( metadata.has(assetKey) ) { - selectedAssetKeys.add(assetKey); - } - } - } - - if ( Array.isArray(details.toRemove) ) { - for ( let assetKey of details.toRemove ) { - importedAssetKeys.delete(assetKey); - µm.assets.remove(assetKey); - } - } - - // Hosts file to import - // https://github.com/gorhill/uBlock/issues/1181 - // Try mapping the URL of an imported filter list to the assetKey of - // an existing stock list. - if ( typeof details.toImport === 'string' ) { - var assetKeyFromURL = function(url) { - var needle = url.replace(/^https?:/, ''); - for ( let entry of metadata ) { - let asset = entry[1]; - if ( asset.type === 'internal' ) { continue; } - let assetKey = entry[0]; - if ( typeof asset.contentURL === 'string' ) { - if ( asset.contentURL.endsWith(needle) ) { return assetKey; } - continue; - } - if ( Array.isArray(asset.contentURL) === false ) { continue; } - for ( let i = 0, n = asset.contentURL.length; i < n; i++ ) { - if ( asset.contentURL[i].endsWith(needle) ) { - return assetKey; - } - } - } - return url; - }; - var toImport = µm.assetKeysFromImportedAssets(details.toImport); - for ( let url of toImport ) { - if ( importedAssetKeys.has(url) ) { continue; } - let assetKey = assetKeyFromURL(url); - if ( assetKey === url ) { - importedAssetKeys.add(assetKey); - } - selectedAssetKeys.add(assetKey); - } - } - - let bin = {}, - needReload = false; - - if ( details.toInline instanceof Object ) { - let newInline = details.toInline; - let oldInline = µmus[propInlineAsset]; - newInline.content = newInline.content.trim(); - if ( newInline.content.length !== 0 ) { - newInline.content += '\n'; - } - let newContent = newInline.enabled ? newInline.content : ''; - let oldContent = oldInline.enabled ? oldInline.content : ''; - if ( newContent !== oldContent ) { - needReload = true; - } - if ( - newInline.enabled !== oldInline.enabled || - newInline.content !== oldInline.content - ) { - µmus[propInlineAsset] = newInline; - bin[propInlineAsset] = newInline; - } - } - - selectedAssetKeys = Array.from(selectedAssetKeys).sort(); - µmus[propSelectedAssetKeys].sort(); - if ( selectedAssetKeys.join() !== µmus[propSelectedAssetKeys].join() ) { - µmus[propSelectedAssetKeys] = selectedAssetKeys; - bin[propSelectedAssetKeys] = selectedAssetKeys; - needReload = true; - } - - importedAssetKeys = Array.from(importedAssetKeys).sort(); - µmus[propImportedAssetKeys].sort(); - if ( importedAssetKeys.join() !== µmus[propImportedAssetKeys].join() ) { - µmus[propImportedAssetKeys] = importedAssetKeys; - bin[propImportedAssetKeys] = importedAssetKeys; - needReload = true; - } - - if ( Object.keys(bin).length !== 0 ) { - vAPI.storage.set(bin); - } - - return needReload; - }; - - var onMetadataReady = function(response) { - let metadata = µm.toMap(response); - let hostsChanged = applyAssetSelection( - metadata, - details.hosts, - 'selectedHostsFiles', - 'externalHostsFiles', - 'userHosts' - ); - if ( hostsChanged ) { - µm.hostsFilesSelfie.destroy(); - } - let recipesChanged = applyAssetSelection( - metadata, - details.recipes, - 'selectedRecipeFiles', - 'externalRecipeFiles', - 'userRecipes' - ); - if ( typeof callback === 'function' ) { - callback({ - hostsChanged: hostsChanged, - recipesChanged: recipesChanged - }); - } - }; - - this.assets.metadata(onMetadataReady); -}; - -/******************************************************************************/ - -// `switches` contains the preset blacklists for which the switch must be -// revisited. - -µMatrix.reloadHostsFiles = function() { - this.loadHostsFiles(); -}; - -/******************************************************************************/ - -µMatrix.hostsFilesSelfie = (function() { - let timer; - - return { - create: function() { - this.cancel(); - timer = vAPI.setTimeout( - function() { - timer = undefined; - vAPI.cacheStorage.set({ - hostsFilesSelfie: µMatrix.ubiquitousBlacklist.toSelfie() - }); - }, - 120000 - ); - }, - destroy: function() { - this.cancel(); - vAPI.cacheStorage.remove('hostsFilesSelfie'); - }, - load: function(callback) { - this.cancel(); - vAPI.cacheStorage.get('hostsFilesSelfie', function(bin) { - callback( - bin instanceof Object && - bin.hostsFilesSelfie instanceof Object && - µMatrix.ubiquitousBlacklist.fromSelfie(bin.hostsFilesSelfie) - ); - }); - }, - cancel: function() { - if ( timer !== undefined ) { - clearTimeout(timer); - } - timer = undefined; - } - }; -})(); - -/******************************************************************************/ - -µMatrix.publicSuffixList = (function() { - let µm = µMatrix; - - var onPSLReady = function(details, callback) { - if ( - !details.error && - typeof details.content === 'string' && - details.content.length !== 0 - ) { - publicSuffixList.parse(details.content, punycode.toASCII); - vAPI.cacheStorage.set({ - publicSuffixListSelfie: publicSuffixList.toSelfie() - }); - } - callback(); - }; - - let onSelfieReady = function(bin, callback) { - if ( - bin instanceof Object && - bin.publicSuffixListSelfie instanceof Object && - publicSuffixList.fromSelfie(bin.publicSuffixListSelfie) - ) { - return callback(); - } - µm.assets.get(µm.pslAssetKey, function(details) { - onPSLReady(details, callback); - }); - }; - - return { - update: function(details) { - onPSLReady(details, µm.noopFunc); - }, - load: function(callback) { - if ( typeof callback !== 'function' ) { - callback = µm.noopFunc; - } - vAPI.cacheStorage.get('publicSuffixListSelfie', function(bin) { - onSelfieReady(bin, callback); - }); - } - }; -})(); - -/******************************************************************************/ - -µMatrix.scheduleAssetUpdater = (function() { - var timer, next = 0; - return function(updateDelay) { - if ( timer ) { - clearTimeout(timer); - timer = undefined; - } - if ( updateDelay === 0 ) { - this.assets.updateStop(); - next = 0; - return; - } - var now = Date.now(); - // Use the new schedule if and only if it is earlier than the previous - // one. - if ( next !== 0 ) { - updateDelay = Math.min(updateDelay, Math.max(next - now, 0)); - } - next = now + updateDelay; - timer = vAPI.setTimeout(function() { - timer = undefined; - next = 0; - µMatrix.assets.updateStart({ delay: 120000 }); - }, updateDelay); - }; -})(); - -/******************************************************************************/ - -µMatrix.assetObserver = function(topic, details) { - let µmus = this.userSettings; - - // Do not update filter list if not in use. - if ( topic === 'before-asset-updated' ) { - if ( - details.type === 'internal' || - details.type === 'filters' && - µmus.selectedHostsFiles.indexOf(details.assetKey) !== -1 || - details.type === 'recipes' && - µmus.selectedRecipeFiles.indexOf(details.assetKey) !== -1 - ) { - return true; - } - return; - } - - if ( topic === 'after-asset-updated' ) { - if ( - details.type === 'filters' && - µmus.selectedHostsFiles.indexOf(details.assetKey) !== -1 - ) { - this.hostsFilesSelfie.destroy(); - } else if ( details.assetKey === this.pslAssetKey ) { - this.publicSuffixList.update(details); - } - vAPI.messaging.broadcast({ - what: 'assetUpdated', - key: details.assetKey, - cached: true - }); - return; - } - - // Update failed. - if ( topic === 'asset-update-failed' ) { - vAPI.messaging.broadcast({ - what: 'assetUpdated', - key: details.assetKey, - failed: true - }); - return; - } - - // Reload all filter lists if needed. - if ( topic === 'after-assets-updated' ) { - if ( - this.arraysIntersect( - details.assetKeys, - µmus.selectedRecipeFiles - ) - ) { - this.loadRecipes(true); - } - if ( - this.arraysIntersect( - details.assetKeys, - µmus.selectedHostsFiles - ) - ) { - this.hostsFilesSelfie.destroy(); - this.loadHostsFiles(); - } - if ( µmus.autoUpdate ) { - this.scheduleAssetUpdater(25200000); - } else { - this.scheduleAssetUpdater(0); - } - vAPI.messaging.broadcast({ - what: 'assetsUpdated', - assetKeys: details.assetKeys - }); - return; - } -}; diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/tab.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/tab.js deleted file mode 100644 index 56187a0..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/tab.js +++ /dev/null @@ -1,742 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to black/white list requests. - Copyright (C) 2014-2018 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -/******************************************************************************/ -/******************************************************************************/ - -(function() { - -'use strict'; - -/******************************************************************************/ - -var µm = µMatrix; - -// https://github.com/gorhill/httpswitchboard/issues/303 -// Some kind of trick going on here: -// Any scheme other than 'http' and 'https' is remapped into a fake -// URL which trick the rest of µMatrix into being able to process an -// otherwise unmanageable scheme. µMatrix needs web page to have a proper -// hostname to work properly, so just like the 'behind-the-scene' -// fake domain name, we map unknown schemes into a fake '{scheme}-scheme' -// hostname. This way, for a specific scheme you can create scope with -// rules which will apply only to that scheme. - -/******************************************************************************/ -/******************************************************************************/ - -µm.normalizePageURL = function(tabId, pageURL) { - if ( vAPI.isBehindTheSceneTabId(tabId) ) { - return 'http://' + this.behindTheSceneScope + '/'; - } - - // https://github.com/gorhill/uMatrix/issues/992 - // Firefox-specific quirk: some top documents are reported by Firefox API - // as loading from `wyciwyg://`, and this breaks uMatrix usability. - // Firefox should probably made such loading from cache seamless through - // its APIs, but since this is not the case, uMatrix inherits the duty to - // make it seamless on its side. - if ( pageURL.startsWith('wyciwyg:') ) { - let match = /^wyciwyg:\/\/\d+\//.exec(pageURL); - if ( match !== null ) { - pageURL = pageURL.slice(match[0].length); - } - } - - // If the URL is that of our "blocked page" document, return the URL of - // the blocked page. - if ( pageURL.startsWith(vAPI.getURL('main-blocked.html')) ) { - let matches = /main-blocked\.html\?details=([^&]+)/.exec(pageURL); - if ( matches && matches.length === 2 ) { - try { - let details = JSON.parse(atob(matches[1])); - pageURL = details.url; - } catch (e) { - } - } - } - - let uri = this.URI.set(pageURL); - let scheme = uri.scheme; - if ( scheme === 'https' || scheme === 'http' ) { - return uri.normalizedURI(); - } - - let fakeHostname = scheme + '-scheme'; - - if ( uri.hostname !== '' ) { - fakeHostname = uri.hostname + '.' + fakeHostname; - } else if ( scheme === 'about' ) { - fakeHostname = uri.path + '.' + fakeHostname; - } - - return 'http://' + fakeHostname + '/'; -}; - -/******************************************************************************/ -/****************************************************************************** - -To keep track from which context *exactly* network requests are made. This is -often tricky for various reasons, and the challenge is not specific to one -browser. - -The time at which a URL is assigned to a tab and the time when a network -request for a root document is made must be assumed to be unrelated: it's all -asynchronous. There is no guaranteed order in which the two events are fired. - -Also, other "anomalies" can occur: - -- a network request for a root document is fired without the corresponding -tab being really assigned a new URL - - -- a network request for a secondary resource is labeled with a tab id for -which no root document was pulled for that tab. - - -- a network request for a secondary resource is made without the root -document to which it belongs being formally bound yet to the proper tab id, -causing a bad scope to be used for filtering purpose. - - - -So the solution here is to keep a lightweight data structure which only -purpose is to keep track as accurately as possible of which root document -belongs to which tab. That's the only purpose, and because of this, there are -no restrictions for when the URL of a root document can be associated to a tab. - -Before, the PageStore object was trying to deal with this, but it had to -enforce some restrictions so as to not descend into one of the above issues, or -other issues. The PageStore object can only be associated with a tab for which -a definitive navigation event occurred, because it collects information about -what occurred in the tab (for example, the number of requests blocked for a -page). - -The TabContext objects do not suffer this restriction, and as a result they -offer the most reliable picture of which root document URL is really associated -to which tab. Moreover, the TabObject can undo an association from a root -document, and automatically re-associate with the next most recent. This takes -care of . - -The PageStore object no longer cache the various information about which -root document it is currently bound. When it needs to find out, it will always -defer to the TabContext object, which will provide the real answer. This takes -case of . In effect, the -master switch and dynamic filtering rules can be evaluated now properly even -in the absence of a PageStore object, this was not the case before. - -Also, the TabContext object will try its best to find a good candidate root -document URL for when none exists. This takes care of -. - -The TabContext manager is self-contained, and it takes care to properly -housekeep itself. - -*/ - -µm.tabContextManager = (function() { - let tabContexts = new Map(); - - let urlToTabIds = { - associations: new Map(), - associate: function(tabId, url) { - let tabIds = this.associations.get(url); - if ( tabIds === undefined ) { - this.associations.set(url, (tabIds = [])); - } else { - let i = tabIds.indexOf(tabId); - if ( i !== -1 ) { - tabIds.splice(i, 1); - } - } - tabIds.push(tabId); - }, - dissociate: function(tabId, url) { - let tabIds = this.associations.get(url); - if ( tabIds === undefined ) { return; } - let i = tabIds.indexOf(tabId); - if ( i !== -1 ) { - tabIds.splice(i, 1); - } - if ( tabIds.length === 0 ) { - this.associations.delete(url); - } - } - }; - - // https://github.com/chrisaljoudi/uBlock/issues/1001 - // This is to be used as last-resort fallback in case a tab is found to not - // be bound while network requests are fired for the tab. - let mostRecentRootDocURL = ''; - let mostRecentRootDocURLTimestamp = 0; - - let gcPeriod = 31 * 60 * 1000; // every 31 minutes - - // A pushed entry is removed from the stack unless it is committed with - // a set time. - let StackEntry = function(url, commit) { - this.url = url; - this.committed = commit; - this.tstamp = Date.now(); - }; - - let TabContext = function(tabId) { - this.tabId = tabId; - this.stack = []; - this.rawURL = - this.normalURL = - this.scheme = - this.rootHostname = - this.rootDomain = ''; - this.secure = false; - this.commitTimer = null; - this.gcTimer = null; - - tabContexts.set(tabId, this); - }; - - TabContext.prototype.destroy = function() { - if ( vAPI.isBehindTheSceneTabId(this.tabId) ) { return; } - if ( this.gcTimer !== null ) { - clearTimeout(this.gcTimer); - this.gcTimer = null; - } - urlToTabIds.dissociate(this.tabId, this.rawURL); - tabContexts.delete(this.tabId); - }; - - TabContext.prototype.onTab = function(tab) { - if ( tab ) { - this.gcTimer = vAPI.setTimeout(this.onGC.bind(this), gcPeriod); - } else { - this.destroy(); - } - }; - - TabContext.prototype.onGC = function() { - this.gcTimer = null; - if ( vAPI.isBehindTheSceneTabId(this.tabId) ) { return; } - vAPI.tabs.get(this.tabId, this.onTab.bind(this)); - }; - - // https://github.com/gorhill/uBlock/issues/248 - // Stack entries have to be committed to stick. Non-committed stack - // entries are removed after a set delay. - TabContext.prototype.onCommit = function() { - if ( vAPI.isBehindTheSceneTabId(this.tabId) ) { return; } - this.commitTimer = null; - // Remove uncommitted entries at the top of the stack. - let i = this.stack.length; - while ( i-- ) { - if ( this.stack[i].committed ) { - break; - } - } - // https://github.com/gorhill/uBlock/issues/300 - // If no committed entry was found, fall back on the bottom-most one - // as being the committed one by default. - if ( i === -1 && this.stack.length !== 0 ) { - this.stack[0].committed = true; - i = 0; - } - i += 1; - if ( i < this.stack.length ) { - this.stack.length = i; - this.update(); - µm.bindTabToPageStats(this.tabId, 'newURL'); - } - }; - - // This takes care of orphanized tab contexts. Can't be started for all - // contexts, as the behind-the-scene context is permanent -- so we do not - // want to flush it. - TabContext.prototype.autodestroy = function() { - if ( vAPI.isBehindTheSceneTabId(this.tabId) ) { return; } - this.gcTimer = vAPI.setTimeout(this.onGC.bind(this), gcPeriod); - }; - - // Update just force all properties to be updated to match the most recent - // root URL. - TabContext.prototype.update = function() { - urlToTabIds.dissociate(this.tabId, this.rawURL); - if ( this.stack.length === 0 ) { - this.rawURL = this.normalURL = this.scheme = - this.rootHostname = this.rootDomain = ''; - this.secure = false; - return; - } - this.rawURL = this.stack[this.stack.length - 1].url; - this.normalURL = µm.normalizePageURL(this.tabId, this.rawURL); - this.scheme = µm.URI.schemeFromURI(this.rawURL); - this.rootHostname = µm.URI.hostnameFromURI(this.normalURL); - this.rootDomain = µm.URI.domainFromHostname(this.rootHostname) || this.rootHostname; - this.secure = µm.URI.isSecureScheme(this.scheme); - urlToTabIds.associate(this.tabId, this.rawURL); - }; - - // Called whenever a candidate root URL is spotted for the tab. - TabContext.prototype.push = function(url, context) { - if ( vAPI.isBehindTheSceneTabId(this.tabId) ) { return; } - let committed = context !== undefined; - let count = this.stack.length; - let topEntry = this.stack[count - 1]; - if ( topEntry && topEntry.url === url ) { - if ( committed ) { - topEntry.committed = true; - } - return; - } - if ( this.commitTimer !== null ) { - clearTimeout(this.commitTimer); - } - if ( committed ) { - this.stack = [new StackEntry(url, true)]; - } else { - this.stack.push(new StackEntry(url)); - this.commitTimer = vAPI.setTimeout(this.onCommit.bind(this), 1000); - } - this.update(); - µm.bindTabToPageStats(this.tabId, context); - }; - - // These are to be used for the API of the tab context manager. - - let push = function(tabId, url, context) { - let entry = tabContexts.get(tabId); - if ( entry === undefined ) { - entry = new TabContext(tabId); - entry.autodestroy(); - } - entry.push(url, context); - mostRecentRootDocURL = url; - mostRecentRootDocURLTimestamp = Date.now(); - return entry; - }; - - // Find a tab context for a specific tab. If none is found, attempt to - // fix this. When all fail, the behind-the-scene context is returned. - let mustLookup = function(tabId, url) { - let entry; - if ( url !== undefined ) { - entry = push(tabId, url); - } else { - entry = tabContexts.get(tabId); - } - if ( entry !== undefined ) { - return entry; - } - // https://github.com/chrisaljoudi/uBlock/issues/1025 - // Google Hangout popup opens without a root frame. So for now we will - // just discard that best-guess root frame if it is too far in the - // future, at which point it ceases to be a "best guess". - if ( mostRecentRootDocURL !== '' && mostRecentRootDocURLTimestamp + 500 < Date.now() ) { - mostRecentRootDocURL = ''; - } - // https://github.com/chrisaljoudi/uBlock/issues/1001 - // Not a behind-the-scene request, yet no page store found for the - // tab id: we will thus bind the last-seen root document to the - // unbound tab. It's a guess, but better than ending up filtering - // nothing at all. - if ( mostRecentRootDocURL !== '' ) { - return push(tabId, mostRecentRootDocURL); - } - // If all else fail at finding a page store, re-categorize the - // request as behind-the-scene. At least this ensures that ultimately - // the user can still inspect/filter those net requests which were - // about to fall through the cracks. - // Example: Chromium + case #12 at - // http://raymondhill.net/ublock/popup.html - return tabContexts.get(vAPI.noTabId); - }; - - let lookup = function(tabId) { - return tabContexts.get(tabId) || null; - }; - - let tabIdFromURL = function(url) { - let tabIds = urlToTabIds.associations.get(url); - if ( tabIds === undefined ) { return -1; } - return tabIds[tabIds.length - 1]; - }; - - // Behind-the-scene tab context - (function() { - let entry = new TabContext(vAPI.noTabId); - entry.stack.push(new StackEntry('', true)); - entry.rawURL = ''; - entry.normalURL = µm.normalizePageURL(entry.tabId); - entry.rootHostname = µm.URI.hostnameFromURI(entry.normalURL); - entry.rootDomain = µm.URI.domainFromHostname(entry.rootHostname) || entry.rootHostname; - })(); - - // https://github.com/gorhill/uMatrix/issues/513 - // Force a badge update here, it could happen that all the subsequent - // network requests are already in the page store, which would cause - // the badge to no be updated for these network requests. - - vAPI.tabs.onNavigation = function(details) { - let tabId = details.tabId; - if ( vAPI.isBehindTheSceneTabId(tabId) ) { return; } - push(tabId, details.url, 'newURL'); - µm.updateBadgeAsync(tabId); - }; - - // https://github.com/gorhill/uMatrix/issues/872 - // `changeInfo.url` may not always be available (Firefox). - - vAPI.tabs.onUpdated = function(tabId, changeInfo, tab) { - if ( vAPI.isBehindTheSceneTabId(tabId) ) { return; } - if ( typeof tab.url !== 'string' || tab.url === '' ) { return; } - let url = changeInfo.url || tab.url; - if ( url ) { - push(tabId, url, 'updateURL'); - } - }; - - vAPI.tabs.onClosed = function(tabId) { - µm.unbindTabFromPageStats(tabId); - let entry = tabContexts.get(tabId); - if ( entry instanceof TabContext ) { - entry.destroy(); - } - }; - - return { - push: push, - lookup: lookup, - mustLookup: mustLookup, - tabIdFromURL: tabIdFromURL - }; -})(); - -vAPI.tabs.registerListeners(); - -/******************************************************************************/ -/******************************************************************************/ - -// Create an entry for the tab if it doesn't exist - -µm.bindTabToPageStats = function(tabId, context) { - this.updateBadgeAsync(tabId); - - // Do not create a page store for URLs which are of no interests - // Example: dev console - let tabContext = this.tabContextManager.lookup(tabId); - if ( tabContext === null ) { return; } - - // rhill 2013-11-24: Never ever rebind behind-the-scene - // virtual tab. - // https://github.com/gorhill/httpswitchboard/issues/67 - if ( vAPI.isBehindTheSceneTabId(tabId) ) { - return this.pageStores.get(tabId); - } - - let normalURL = tabContext.normalURL; - let pageStore = this.pageStores.get(tabId); - - // The previous page URL, if any, associated with the tab - if ( pageStore !== undefined ) { - // No change, do not rebind - if ( pageStore.pageUrl === normalURL ) { - return pageStore; - } - - // https://github.com/gorhill/uMatrix/issues/37 - // Just rebind whenever possible: the URL changed, but the document - // maybe is the same. - // Example: Google Maps, Github - // https://github.com/gorhill/uMatrix/issues/72 - // Need to double-check that the new scope is same as old scope - if ( - context === 'updateURL' && - pageStore.pageHostname === tabContext.rootHostname - ) { - pageStore.rawURL = tabContext.rawURL; - pageStore.pageUrl = normalURL; - this.updateTitle(tabId); - this.pageStoresToken = Date.now(); - return pageStore; - } - - // We won't be reusing this page store. - this.unbindTabFromPageStats(tabId); - } - - // Try to resurrect first. - pageStore = this.resurrectPageStore(tabId, normalURL); - if ( pageStore === null ) { - pageStore = this.pageStoreFactory(tabContext); - } - this.pageStores.set(tabId, pageStore); - this.updateTitle(tabId); - this.pageStoresToken = Date.now(); - - return pageStore; -}; - -/******************************************************************************/ - -µm.unbindTabFromPageStats = function(tabId) { - if ( vAPI.isBehindTheSceneTabId(tabId) ) { return; } - - let pageStore = this.pageStores.get(tabId); - if ( pageStore === undefined ) { return; } - - this.pageStores.delete(tabId); - this.pageStoresToken = Date.now(); - - if ( pageStore.incinerationTimer ) { - clearTimeout(pageStore.incinerationTimer); - pageStore.incinerationTimer = null; - } - - let pageStoreCrypt = this.pageStoreCemetery.get(tabId); - if ( pageStoreCrypt === undefined ) { - this.pageStoreCemetery.set(tabId, (pageStoreCrypt = new Map())); - } - - let pageURL = pageStore.pageUrl; - pageStoreCrypt.set(pageURL, pageStore); - - pageStore.incinerationTimer = vAPI.setTimeout( - this.incineratePageStore.bind(this, tabId, pageURL), - 4 * 60 * 1000 - ); -}; - -/******************************************************************************/ - -µm.resurrectPageStore = function(tabId, pageURL) { - let pageStoreCrypt = this.pageStoreCemetery.get(tabId); - if ( pageStoreCrypt === undefined ) { return null; } - - let pageStore = pageStoreCrypt.get(pageURL); - if ( pageStore === undefined ) { return null; } - - - if ( pageStore.incinerationTimer !== null ) { - clearTimeout(pageStore.incinerationTimer); - pageStore.incinerationTimer = null; - } - - pageStoreCrypt.delete(pageURL); - if ( pageStoreCrypt.size === 0 ) { - this.pageStoreCemetery.delete(tabId); - } - - return pageStore; -}; - -/******************************************************************************/ - -µm.incineratePageStore = function(tabId, pageURL) { - let pageStoreCrypt = this.pageStoreCemetery.get(tabId); - if ( pageStoreCrypt === undefined ) { return; } - - let pageStore = pageStoreCrypt.get(pageURL); - if ( pageStore === undefined ) { return; } - - if ( pageStore.incinerationTimer !== null ) { - clearTimeout(pageStore.incinerationTimer); - pageStore.incinerationTimer = null; - } - - pageStoreCrypt.delete(pageURL); - if ( pageStoreCrypt.size === 0 ) { - this.pageStoreCemetery.delete(tabId); - } - - pageStore.dispose(); -}; - -/******************************************************************************/ - -µm.pageStoreFromTabId = function(tabId) { - return this.pageStores.get(tabId) || null; -}; - -// Never return null -µm.mustPageStoreFromTabId = function(tabId) { - return this.pageStores.get(tabId) || this.pageStores.get(vAPI.noTabId); -}; - -/******************************************************************************/ - -µm.forceReload = function(tabId, bypassCache) { - vAPI.tabs.reload(tabId, bypassCache); -}; - -/******************************************************************************/ - -µm.updateBadgeAsync = (function() { - let tabIdToTimer = new Map(); - - let updateBadge = function(tabId) { - tabIdToTimer.delete(tabId); - - let iconId = 'off'; - let badgeStr = ''; - - let pageStore = this.pageStoreFromTabId(tabId); - if ( pageStore !== null ) { - let total = pageStore.perLoadAllowedRequestCount + - pageStore.perLoadBlockedRequestCount; - if ( total ) { - let squareSize = 19; - let greenSize = squareSize * Math.sqrt( - pageStore.perLoadAllowedRequestCount / total - ); - iconId = greenSize < squareSize/2 ? - Math.ceil(greenSize) : - Math.floor(greenSize); - } - if ( - this.userSettings.iconBadgeEnabled && - pageStore.perLoadBlockedRequestCount !== 0 - ) { - badgeStr = this.formatCount(pageStore.perLoadBlockedRequestCount); - } - } - - vAPI.setIcon( - tabId, - 'img/browsericons/icon19-' + iconId + '.png', - { text: badgeStr, color: '#666' } - ); - }; - - return function(tabId) { - if ( tabIdToTimer.has(tabId) ) { return; } - if ( vAPI.isBehindTheSceneTabId(tabId) ) { return; } - tabIdToTimer.set( - tabId, - vAPI.setTimeout(updateBadge.bind(this, tabId), 750) - ); - }; -})(); - -/******************************************************************************/ - -µm.updateTitle = (function() { - let tabIdToTimer = new Map(); - let tabIdToTryCount = new Map(); - let delay = 499; - - let tryNoMore = function(tabId) { - tabIdToTryCount.delete(tabId); - }; - - let tryAgain = function(tabId) { - let count = tabIdToTryCount.get(tabId); - if ( count === undefined ) { return false; } - if ( count === 1 ) { - tabIdToTryCount.delete(tabId); - return false; - } - tabIdToTryCount.set(tabId, count - 1); - tabIdToTimer.set( - tabId, - vAPI.setTimeout(updateTitle.bind(µm, tabId), delay) - ); - return true; - }; - - var onTabReady = function(tabId, tab) { - if ( !tab ) { - return tryNoMore(tabId); - } - var pageStore = this.pageStoreFromTabId(tabId); - if ( pageStore === null ) { - return tryNoMore(tabId); - } - if ( !tab.title && tryAgain(tabId) ) { - return; - } - // https://github.com/gorhill/uMatrix/issues/225 - // Sometimes title changes while page is loading. - var settled = tab.title && tab.title === pageStore.title; - pageStore.title = tab.title || tab.url || ''; - this.pageStoresToken = Date.now(); - if ( settled || !tryAgain(tabId) ) { - tryNoMore(tabId); - } - }; - - var updateTitle = function(tabId) { - tabIdToTimer.delete(tabId); - vAPI.tabs.get(tabId, onTabReady.bind(this, tabId)); - }; - - return function(tabId) { - if ( vAPI.isBehindTheSceneTabId(tabId) ) { return; } - let timer = tabIdToTimer.get(tabId); - if ( timer !== undefined ) { - clearTimeout(timer); - } - tabIdToTimer.set( - tabId, - vAPI.setTimeout(updateTitle.bind(this, tabId), delay) - ); - tabIdToTryCount.set(tabId, 5); - }; -})(); - -/******************************************************************************/ - -// Stale page store entries janitor -// https://github.com/chrisaljoudi/uBlock/issues/455 - -(function() { - var cleanupPeriod = 7 * 60 * 1000; - var cleanupSampleAt = 0; - var cleanupSampleSize = 11; - - var cleanup = function() { - var vapiTabs = vAPI.tabs; - var tabIds = Array.from(µm.pageStores.keys()).sort(); - var checkTab = function(tabId) { - vapiTabs.get(tabId, function(tab) { - if ( !tab ) { - µm.unbindTabFromPageStats(tabId); - } - }); - }; - if ( cleanupSampleAt >= tabIds.length ) { - cleanupSampleAt = 0; - } - var tabId; - var n = Math.min(cleanupSampleAt + cleanupSampleSize, tabIds.length); - for ( var i = cleanupSampleAt; i < n; i++ ) { - tabId = tabIds[i]; - if ( vAPI.isBehindTheSceneTabId(tabId) ) { continue; } - checkTab(tabId); - } - cleanupSampleAt = n; - - vAPI.setTimeout(cleanup, cleanupPeriod); - }; - - vAPI.setTimeout(cleanup, cleanupPeriod); -})(); - -/******************************************************************************/ - -})(); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/traffic.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/traffic.js deleted file mode 100644 index c3376ad..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/traffic.js +++ /dev/null @@ -1,664 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to black/white list requests. - Copyright (C) 2014-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -'use strict'; - -/******************************************************************************/ - -// Start isolation from global scope - -µMatrix.webRequest = (function() { - -/******************************************************************************/ - -// Intercept and filter web requests according to white and black lists. - -var onBeforeRootFrameRequestHandler = function(details) { - let µm = µMatrix; - let desURL = details.url; - let desHn = µm.URI.hostnameFromURI(desURL); - let type = requestTypeNormalizer[details.type] || 'other'; - let tabId = details.tabId; - - µm.tabContextManager.push(tabId, desURL); - - let tabContext = µm.tabContextManager.mustLookup(tabId); - let srcHn = tabContext.rootHostname; - - // Disallow request as per matrix? - let blocked = µm.mustBlock(srcHn, desHn, type); - - let pageStore = µm.pageStoreFromTabId(tabId); - pageStore.recordRequest(type, desURL, blocked); - pageStore.perLoadAllowedRequestCount = 0; - pageStore.perLoadBlockedRequestCount = 0; - µm.logger.writeOne({ tabId, srcHn, desHn, desURL, type, blocked }); - - // Not blocked - if ( !blocked ) { - let redirectURL = maybeRedirectRootFrame(desHn, desURL); - if ( redirectURL !== desURL ) { - return { redirectUrl: redirectURL }; - } - µm.cookieHunter.recordPageCookies(pageStore); - return; - } - - // Blocked - let query = btoa(JSON.stringify({ url: desURL, hn: desHn, type, why: '?' })); - - vAPI.tabs.replace(tabId, vAPI.getURL('main-blocked.html?details=') + query); - - return { cancel: true }; -}; - -/******************************************************************************/ - -// https://twitter.com/thatcks/status/958776519765225473 - -var maybeRedirectRootFrame = function(hostname, url) { - let µm = µMatrix; - if ( µm.rawSettings.enforceEscapedFragment !== true ) { return url; } - let block1pScripts = µm.mustBlock(hostname, hostname, 'script'); - let reEscapedFragment = /[?&]_escaped_fragment_=/; - if ( reEscapedFragment.test(url) ) { - return block1pScripts ? url : url.replace(reEscapedFragment, '#!') ; - } - if ( block1pScripts === false ) { return url; } - let pos = url.indexOf('#!'); - if ( pos === -1 ) { return url; } - let separator = url.lastIndexOf('?', pos) === -1 ? '?' : '&'; - return url.slice(0, pos) + - separator + '_escaped_fragment_=' + - url.slice(pos + 2); -}; - -/******************************************************************************/ - -// Intercept and filter web requests according to white and black lists. - -var onBeforeRequestHandler = function(details) { - let µm = µMatrix, - µmuri = µm.URI, - desURL = details.url, - desScheme = µmuri.schemeFromURI(desURL); - - if ( µmuri.isNetworkScheme(desScheme) === false ) { return; } - - let type = requestTypeNormalizer[details.type] || 'other'; - - // https://github.com/gorhill/httpswitchboard/issues/303 - // Wherever the main doc comes from, create a receiver page URL: synthetize - // one if needed. - if ( type === 'doc' && details.parentFrameId === -1 ) { - return onBeforeRootFrameRequestHandler(details); - } - - // Re-classify orphan HTTP requests as behind-the-scene requests. There is - // not much else which can be done, because there are URLs - // which cannot be handled by µMatrix, i.e. `opera://startpage`, - // as this would lead to complications with no obvious solution, like how - // to scope on unknown scheme? Etc. - // https://github.com/gorhill/httpswitchboard/issues/191 - // https://github.com/gorhill/httpswitchboard/issues/91#issuecomment-37180275 - let tabContext = µm.tabContextManager.mustLookup(details.tabId), - tabId = tabContext.tabId, - srcHn = tabContext.rootHostname, - desHn = µmuri.hostnameFromURI(desURL), - docURL = details.documentUrl, - specificity = 0; - - if ( docURL !== undefined ) { - // Extract context from initiator for behind-the-scene requests. - if ( tabId < 0 ) { - srcHn = µmuri.hostnameFromURI(µm.normalizePageURL(0, docURL)); - } - // https://github.com/uBlockOrigin/uMatrix-issues/issues/72 - // Workaround of weird Firefox behavior: when a service worker exists - // for a site, the `doc` requests when loading a page from that site - // are not being made: this potentially prevents uMatrix to properly - // keep track of the context in which requests are made. - else if ( - details.parentFrameId === -1 && - docURL !== tabContext.rawURL - ) { - srcHn = µmuri.hostnameFromURI(µm.normalizePageURL(0, docURL)); - } - } - - let blocked = µm.tMatrix.mustBlock(srcHn, desHn, type); - if ( blocked ) { - specificity = µm.tMatrix.specificityRegister; - } - - // Record request. - // https://github.com/gorhill/httpswitchboard/issues/342 - // The way requests are handled now, it may happen at this point some - // processing has already been performed, and that a synthetic URL has - // been constructed for logging purpose. Use this synthetic URL if - // it is available. - let pageStore = µm.mustPageStoreFromTabId(tabId); - - // Enforce strict secure connection? - if ( tabContext.secure && µmuri.isSecureScheme(desScheme) === false ) { - pageStore.hasMixedContent = true; - if ( blocked === false ) { - blocked = µm.tMatrix.evaluateSwitchZ('https-strict', srcHn); - } - } - - pageStore.recordRequest(type, desURL, blocked); - if ( µm.logger.enabled ) { - µm.logger.writeOne({ tabId, srcHn, desHn, desURL, type, blocked }); - } - - if ( blocked ) { - pageStore.cacheBlockedCollapsible(type, desURL, specificity); - return { 'cancel': true }; - } -}; - -/******************************************************************************/ - -// Sanitize outgoing headers as per user settings. - -var onBeforeSendHeadersHandler = function(details) { - let µm = µMatrix, - µmuri = µm.URI, - desURL = details.url, - desScheme = µmuri.schemeFromURI(desURL); - - // Ignore non-network schemes - if ( µmuri.isNetworkScheme(desScheme) === false ) { return; } - - // Re-classify orphan HTTP requests as behind-the-scene requests. There is - // not much else which can be done, because there are URLs - // which cannot be handled by HTTP Switchboard, i.e. `opera://startpage`, - // as this would lead to complications with no obvious solution, like how - // to scope on unknown scheme? Etc. - // https://github.com/gorhill/httpswitchboard/issues/191 - // https://github.com/gorhill/httpswitchboard/issues/91#issuecomment-37180275 - const tabId = details.tabId; - const pageStore = µm.mustPageStoreFromTabId(tabId); - const desHn = µmuri.hostnameFromURI(desURL); - const requestType = requestTypeNormalizer[details.type] || 'other'; - const requestHeaders = details.requestHeaders; - - // https://github.com/uBlockOrigin/uMatrix-issues/issues/155 - // https://github.com/uBlockOrigin/uMatrix-issues/issues/159 - // TODO: import all filtering context improvements from uBO. - const srcHn = tabId < 0 || - details.parentFrameId < 0 || - details.parentFrameId === 0 && details.type === 'sub_frame' - ? µmuri.hostnameFromURI(details.documentUrl) || pageStore.pageHostname - : pageStore.pageHostname; - - // https://github.com/gorhill/httpswitchboard/issues/342 - // Is this hyperlink auditing? - // If yes, create a synthetic URL for reporting hyperlink auditing - // in request log. This way the user is better informed of what went - // on. - - // https://html.spec.whatwg.org/multipage/links.html#hyperlink-auditing - // - // Target URL = the href of the link - // Doc URL = URL of the document containing the target URL - // Ping URLs = servers which will be told that user clicked target URL - // - // `Content-Type` = `text/ping` (always present) - // `Ping-To` = target URL (always present) - // `Ping-From` = doc URL - // `Referer` = doc URL - // request URL = URL which will receive the information - // - // With hyperlink-auditing, removing header(s) is pointless, the whole - // request must be cancelled. - - let headerIndex = headerIndexFromName('ping-to', requestHeaders); - if ( headerIndex !== -1 ) { - let headerValue = requestHeaders[headerIndex].value; - if ( headerValue !== '' ) { - let blocked = µm.userSettings.processHyperlinkAuditing; - pageStore.recordRequest('other', desURL + '{Ping-To:' + headerValue + '}', blocked); - µm.logger.writeOne({ tabId, srcHn, desHn, desURL, type: 'ping', blocked }); - if ( blocked ) { - µm.hyperlinkAuditingFoiledCounter += 1; - return { 'cancel': true }; - } - } - } - - // If we reach this point, request is not blocked, so what is left to do - // is to sanitize headers. - - let modified = false; - - // Process `Cookie` header. - - headerIndex = headerIndexFromName('cookie', requestHeaders); - if ( - headerIndex !== -1 && - µm.mustBlock(srcHn, desHn, 'cookie') - ) { - modified = true; - let headerValue = requestHeaders[headerIndex].value; - requestHeaders.splice(headerIndex, 1); - µm.cookieHeaderFoiledCounter++; - if ( requestType === 'doc' ) { - pageStore.perLoadBlockedRequestCount++; - µm.logger.writeOne({ - tabId, - srcHn, - header: { name: 'COOKIE', value: headerValue }, - change: -1 - }); - } - } - - // Process `Referer` header. - - // https://github.com/gorhill/httpswitchboard/issues/222#issuecomment-44828402 - - // https://github.com/gorhill/uMatrix/issues/320 - // http://tools.ietf.org/html/rfc6454#section-7.3 - // "The user agent MAY include an Origin header field in any HTTP - // "request. - // "The user agent MUST NOT include more than one Origin header field in - // "any HTTP request. - // "Whenever a user agent issues an HTTP request from a "privacy- - // "sensitive" context, the user agent MUST send the value "null" in the - // "Origin header field." - - // https://github.com/gorhill/uMatrix/issues/358 - // Do not spoof `Origin` header for the time being. - - // https://github.com/gorhill/uMatrix/issues/773 - // For non-GET requests, remove `Referer` header instead of spoofing it. - - headerIndex = headerIndexFromName('referer', requestHeaders); - if ( headerIndex !== -1 ) { - let headerValue = requestHeaders[headerIndex].value; - if ( headerValue !== '' ) { - let toDomain = µmuri.domainFromHostname(desHn); - if ( toDomain !== '' && toDomain !== µmuri.domainFromURI(headerValue) ) { - pageStore.has3pReferrer = true; - if ( µm.tMatrix.evaluateSwitchZ('referrer-spoof', srcHn) ) { - modified = true; - let newValue; - if ( details.method === 'GET' ) { - newValue = requestHeaders[headerIndex].value = - desScheme + '://' + desHn + '/'; - } else { - requestHeaders.splice(headerIndex, 1); - } - if ( pageStore.perLoadBlockedReferrerCount === 0 ) { - pageStore.perLoadBlockedRequestCount += 1; - µm.logger.writeOne({ - tabId, - srcHn, - header: { name: 'REFERER', value: headerValue }, - change: -1 - }); - if ( newValue !== undefined ) { - µm.logger.writeOne({ - tabId, - srcHn, - header: { name: 'REFERER', value: newValue }, - change: +1 - }); - } - } - pageStore.perLoadBlockedReferrerCount += 1; - } - } - } - } - - if ( modified !== true ) { return; } - - µm.updateBadgeAsync(tabId); - - return { requestHeaders: requestHeaders }; -}; - -/******************************************************************************/ - -// To prevent inline javascript from being executed. - -// Prevent inline scripting using `Content-Security-Policy`: -// https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html - -// This fixes: -// https://github.com/gorhill/httpswitchboard/issues/35 - -var onHeadersReceivedHandler = function(details) { - // Ignore schemes other than 'http...' - let µm = µMatrix, - tabId = details.tabId, - requestURL = details.url, - requestType = requestTypeNormalizer[details.type] || 'other', - headers = details.responseHeaders; - - // https://github.com/gorhill/uMatrix/issues/145 - // Check if the main_frame is a download - if ( requestType === 'doc' ) { - µm.tabContextManager.push(tabId, requestURL); - let contentType = typeFromHeaders(headers); - if ( contentType !== undefined ) { - details.type = contentType; - return onBeforeRootFrameRequestHandler(details); - } - } - - let tabContext = µm.tabContextManager.lookup(tabId); - if ( tabContext === null ) { return; } - - let csp = [], - cspReport = [], - srcHn = tabContext.rootHostname, - desHn = µm.URI.hostnameFromURI(requestURL); - - // Inline script tags. - if ( µm.mustBlock(srcHn, desHn, 'script' ) ) { - csp.push(µm.cspNoInlineScript); - } - - // Inline style tags. - if ( µm.mustBlock(srcHn, desHn, 'css' ) ) { - csp.push(µm.cspNoInlineStyle); - } - - if ( µm.tMatrix.evaluateSwitchZ('no-workers', srcHn) ) { - csp.push(µm.cspNoWorker); - } else if ( µm.rawSettings.disableCSPReportInjection === false ) { - cspReport.push(µm.cspNoWorker); - } - - if ( csp.length === 0 && cspReport.length === 0 ) { return; } - - // https://github.com/gorhill/uMatrix/issues/967 - // Inject a new CSP header rather than modify an existing one, except - // if the current environment does not support merging headers: - // Firefox 58/webext and less can't merge CSP headers, so we will merge - // them here. - - if ( csp.length !== 0 ) { - let cspRight = csp.join(', '); - let cspTotal = cspRight; - if ( µm.cantMergeCSPHeaders ) { - let i = headerIndexFromName( - 'content-security-policy', - headers - ); - if ( i !== -1 ) { - cspTotal = headers[i].value.trim() + ', ' + cspTotal; - headers.splice(i, 1); - } - } - headers.push({ - name: 'Content-Security-Policy', - value: cspTotal - }); - if ( requestType === 'doc' ) { - µm.logger.writeOne({ - tabId, - srcHn, - header: { name: 'CSP', value: cspRight }, - change: +1 - }); - } - } - - if ( cspReport.length !== 0 ) { - let cspRight = cspReport.join(', '); - let cspTotal = cspRight; - if ( µm.cantMergeCSPHeaders ) { - let i = headerIndexFromName( - 'content-security-policy-report-only', - headers - ); - if ( i !== -1 ) { - cspTotal = headers[i].value.trim() + ', ' + cspTotal; - headers.splice(i, 1); - } - } - headers.push({ - name: 'Content-Security-Policy-Report-Only', - value: cspTotal - }); - } - - return { responseHeaders: headers }; -}; - -/******************************************************************************/ - -// https://bugzilla.mozilla.org/show_bug.cgi?id=1302667 -// https://github.com/gorhill/uMatrix/issues/967#issuecomment-373002011 - -window.addEventListener('webextFlavor', function() { - if ( vAPI.webextFlavor.soup.has('firefox') === false ) { return; } - if ( vAPI.webextFlavor.major <= 57 ) { - µMatrix.cspNoWorker = - "child-src 'none'; frame-src data: blob: *; report-uri about:blank"; - } - if ( vAPI.webextFlavor.major <= 58 ) { - µMatrix.cantMergeCSPHeaders = true; - } -}, { once: true }); - -/******************************************************************************/ - -// Caller must ensure headerName is normalized to lower case. - -var headerIndexFromName = function(headerName, headers) { - var i = headers.length; - while ( i-- ) { - if ( headers[i].name.toLowerCase() === headerName ) { - return i; - } - } - return -1; -}; - -/******************************************************************************/ - -// Extract request type from content headers. - -let typeFromHeaders = function(headers) { - let i = headerIndexFromName('content-type', headers); - if ( i === -1 ) { return; } - let mime = headers[i].value.toLowerCase(); - if ( mime.startsWith('image/') ) { return 'image'; } - if ( mime.startsWith('video/') || mime.startsWith('audio/') ) { - return 'media'; - } -}; - -/******************************************************************************/ - -var requestTypeNormalizer = { - 'font' : 'css', - 'image' : 'image', - 'imageset' : 'image', - 'main_frame' : 'doc', - 'media' : 'media', - 'object' : 'media', - 'other' : 'other', - 'script' : 'script', - 'stylesheet' : 'css', - 'sub_frame' : 'frame', - 'websocket' : 'xhr', - 'xmlhttprequest': 'xhr' -}; - -/******************************************************************************* - - Use a `http-equiv` `meta` tag to enforce CSP directives for documents - which protocol is `file:` (which do not cause our webRequest.onHeadersReceived - handler to be called). - - Idea borrowed from NoScript: - https://github.com/hackademix/noscript/commit/6e80d3f130773fc9a9123c5c4c2e97d63e90fa2a - -**/ - -(function() { - if ( - typeof self.browser !== 'object' || - typeof browser.contentScripts !== 'object' - ) { - return; - } - - let csRules = [ - { - name: 'script', - file: '/js/contentscript-no-inline-script.js', - pending: undefined, - registered: undefined, - mustRegister: false - }, - ]; - - let csSwitches = [ - { - name: 'no-workers', - file: '/js/contentscript-no-workers.js', - pending: undefined, - registered: undefined, - mustRegister: false - }, - ]; - - let register = function(entry) { - if ( entry.pending !== undefined ) { return; } - entry.pending = browser.contentScripts.register({ - js: [ { file: entry.file } ], - matches: [ 'file:///*' ], - runAt: 'document_start' - }).then( - result => { - if ( entry.mustRegister ) { - entry.registered = result; - } - entry.pending = undefined; - }, - ( ) => { - entry.registered = undefined; - entry.pending = undefined; - } - ); - }; - - let unregister = function(entry) { - if ( entry.registered === undefined ) { return; } - entry.registered.unregister(); - entry.registered = undefined; - }; - - let handler = function(ev) { - let matrix = ev && ev.detail; - if ( matrix !== µMatrix.tMatrix ) { return; } - for ( let cs of csRules ) { - cs.mustRegister = matrix.mustBlock('file-scheme', 'file-scheme', cs.name); - if ( cs.mustRegister === (cs.registered !== undefined) ) { continue; } - if ( cs.mustRegister ) { - register(cs); - } else { - unregister(cs); - } - } - for ( let cs of csSwitches ) { - cs.mustRegister = matrix.evaluateSwitchZ(cs.name, 'file-scheme'); - if ( cs.mustRegister === (cs.registered !== undefined) ) { continue; } - if ( cs.mustRegister ) { - register(cs); - } else { - unregister(cs); - } - } - }; - - window.addEventListener('matrixRulesetChange', handler); -})(); - -/******************************************************************************/ - -const start = (function() { - if ( - vAPI.net.onBeforeReady instanceof Object && - ( - vAPI.net.onBeforeReady.experimental !== true || - µMatrix.rawSettings.suspendTabsUntilReady - ) - ) { - vAPI.net.onBeforeReady.start(); - } - - return function() { - vAPI.net.addListener( - 'onBeforeRequest', - onBeforeRequestHandler, - { }, - [ 'blocking' ] - ); - - // https://github.com/uBlockOrigin/uMatrix-issues/issues/74#issuecomment-450687707 - // https://groups.google.com/a/chromium.org/forum/#!topic/chromium-extensions/vYIaeezZwfQ - // Chromium 72+: use `extraHeaders` to keep the ability to access - // the `Cookie`, `Referer` headers. - const beforeSendHeadersExtra = [ 'blocking', 'requestHeaders' ]; - const wrObsho = browser.webRequest.OnBeforeSendHeadersOptions; - if ( - wrObsho instanceof Object && - wrObsho.hasOwnProperty('EXTRA_HEADERS') - ) { - beforeSendHeadersExtra.push(wrObsho.EXTRA_HEADERS); - } - vAPI.net.addListener( - 'onBeforeSendHeaders', - onBeforeSendHeadersHandler, - { }, - beforeSendHeadersExtra - ); - - vAPI.net.addListener( - 'onHeadersReceived', - onHeadersReceivedHandler, - { types: [ 'main_frame', 'sub_frame' ] }, - [ 'blocking', 'responseHeaders' ] - ); - - if ( vAPI.net.onBeforeReady instanceof Object ) { - vAPI.net.onBeforeReady.stop(onBeforeRequestHandler); - } - }; -})(); - -return { start }; - -/******************************************************************************/ - -})(); - -/******************************************************************************/ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/udom.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/udom.js deleted file mode 100644 index 3ac2f97..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/udom.js +++ /dev/null @@ -1,728 +0,0 @@ -/******************************************************************************* - - µBlock - a browser extension to block requests. - Copyright (C) 2014-2017 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uBlock -*/ - -/* global DOMTokenList */ -/* exported uDom */ - -'use strict'; - -/******************************************************************************/ - -// It's just a silly, minimalist DOM framework: this allows me to not rely -// on jQuery. jQuery contains way too much stuff than I need, and as per -// Opera rules, I am not allowed to use a cut-down version of jQuery. So -// the code here does *only* what I need, and nothing more, and with a lot -// of assumption on passed parameters, etc. I grow it on a per-need-basis only. - -var uDom = (function() { - -/******************************************************************************/ - -var DOMList = function() { - this.nodes = []; -}; - -/******************************************************************************/ - -Object.defineProperty( - DOMList.prototype, - 'length', - { - get: function() { - return this.nodes.length; - } - } -); - -/******************************************************************************/ - -var DOMListFactory = function(selector, context) { - var r = new DOMList(); - if ( typeof selector === 'string' ) { - selector = selector.trim(); - if ( selector !== '' ) { - return addSelectorToList(r, selector, context); - } - } - if ( selector instanceof Node ) { - return addNodeToList(r, selector); - } - if ( selector instanceof NodeList ) { - return addNodeListToList(r, selector); - } - if ( selector instanceof DOMList ) { - return addListToList(r, selector); - } - return r; -}; - -/******************************************************************************/ - -DOMListFactory.onLoad = function(callback) { - window.addEventListener('load', callback); -}; - -/******************************************************************************/ - -DOMListFactory.nodeFromId = function(id) { - return document.getElementById(id); -}; - -DOMListFactory.nodeFromSelector = function(selector) { - return document.querySelector(selector); -}; - -/******************************************************************************/ - -var addNodeToList = function(list, node) { - if ( node ) { - list.nodes.push(node); - } - return list; -}; - -/******************************************************************************/ - -var addNodeListToList = function(list, nodelist) { - if ( nodelist ) { - var n = nodelist.length; - for ( var i = 0; i < n; i++ ) { - list.nodes.push(nodelist[i]); - } - } - return list; -}; - -/******************************************************************************/ - -var addListToList = function(list, other) { - list.nodes = list.nodes.concat(other.nodes); - return list; -}; - -/******************************************************************************/ - -var addSelectorToList = function(list, selector, context) { - var p = context || document; - var r = p.querySelectorAll(selector); - var n = r.length; - for ( var i = 0; i < n; i++ ) { - list.nodes.push(r[i]); - } - return list; -}; - -/******************************************************************************/ - -var nodeInNodeList = function(node, nodeList) { - var i = nodeList.length; - while ( i-- ) { - if ( nodeList[i] === node ) { - return true; - } - } - return false; -}; - -/******************************************************************************/ - -var doesMatchSelector = function(node, selector) { - if ( !node ) { - return false; - } - if ( node.nodeType !== 1 ) { - return false; - } - if ( selector === undefined ) { - return true; - } - var parentNode = node.parentNode; - if ( !parentNode || !parentNode.setAttribute ) { - return false; - } - var doesMatch = false; - parentNode.setAttribute('uDom-32kXc6xEZA7o73AMB8vLbLct1RZOkeoO', ''); - var grandpaNode = parentNode.parentNode || document; - var nl = grandpaNode.querySelectorAll('[uDom-32kXc6xEZA7o73AMB8vLbLct1RZOkeoO] > ' + selector); - var i = nl.length; - while ( doesMatch === false && i-- ) { - doesMatch = nl[i] === node; - } - parentNode.removeAttribute('uDom-32kXc6xEZA7o73AMB8vLbLct1RZOkeoO'); - return doesMatch; -}; - -/******************************************************************************/ - -DOMList.prototype.nodeAt = function(i) { - return this.nodes[i] || null; -}; - -DOMList.prototype.at = function(i) { - return addNodeToList(new DOMList(), this.nodes[i]); -}; - -/******************************************************************************/ - -DOMList.prototype.toArray = function() { - return this.nodes.slice(); -}; - -/******************************************************************************/ - -DOMList.prototype.pop = function() { - return addNodeToList(new DOMList(), this.nodes.pop()); -}; - -/******************************************************************************/ - -DOMList.prototype.forEach = function(fn) { - var n = this.nodes.length; - for ( var i = 0; i < n; i++ ) { - fn(this.at(i), i); - } - return this; -}; - -/******************************************************************************/ - -DOMList.prototype.subset = function(i, l) { - var r = new DOMList(); - var n = l !== undefined ? l : this.nodes.length; - var j = Math.min(i + n, this.nodes.length); - if ( i < j ) { - r.nodes = this.nodes.slice(i, j); - } - return r; -}; - -/******************************************************************************/ - -DOMList.prototype.first = function() { - return this.subset(0, 1); -}; - -/******************************************************************************/ - -DOMList.prototype.next = function(selector) { - var r = new DOMList(); - var n = this.nodes.length; - var node; - for ( var i = 0; i < n; i++ ) { - node = this.nodes[i]; - while ( node.nextSibling !== null ) { - node = node.nextSibling; - if ( node.nodeType !== 1 ) { - continue; - } - if ( doesMatchSelector(node, selector) === false ) { - continue; - } - addNodeToList(r, node); - break; - } - } - return r; -}; - -/******************************************************************************/ - -DOMList.prototype.parent = function() { - var r = new DOMList(); - if ( this.nodes.length ) { - addNodeToList(r, this.nodes[0].parentNode); - } - return r; -}; - -/******************************************************************************/ - -DOMList.prototype.filter = function(filter) { - var r = new DOMList(); - var filterFunc; - if ( typeof filter === 'string' ) { - filterFunc = function() { - return doesMatchSelector(this, filter); - }; - } else if ( typeof filter === 'function' ) { - filterFunc = filter; - } else { - filterFunc = function(){ - return true; - }; - } - var n = this.nodes.length; - var node; - for ( var i = 0; i < n; i++ ) { - node = this.nodes[i]; - if ( filterFunc.apply(node) ) { - addNodeToList(r, node); - } - } - return r; -}; - -/******************************************************************************/ - -// TODO: Avoid possible duplicates - -DOMList.prototype.ancestors = function(selector) { - var r = new DOMList(); - var n = this.nodes.length; - var node; - for ( var i = 0; i < n; i++ ) { - node = this.nodes[i].parentNode; - while ( node ) { - if ( doesMatchSelector(node, selector) ) { - addNodeToList(r, node); - } - node = node.parentNode; - } - } - return r; -}; - -/******************************************************************************/ - -DOMList.prototype.descendants = function(selector) { - var r = new DOMList(); - var n = this.nodes.length; - var nl; - for ( var i = 0; i < n; i++ ) { - nl = this.nodes[i].querySelectorAll(selector); - addNodeListToList(r, nl); - } - return r; -}; - -/******************************************************************************/ - -DOMList.prototype.contents = function() { - var r = new DOMList(); - var cnodes, cn, ci; - var n = this.nodes.length; - for ( var i = 0; i < n; i++ ) { - cnodes = this.nodes[i].childNodes; - cn = cnodes.length; - for ( ci = 0; ci < cn; ci++ ) { - addNodeToList(r, cnodes.item(ci)); - } - } - return r; -}; - -/******************************************************************************/ - -DOMList.prototype.remove = function() { - var cn, p; - var i = this.nodes.length; - while ( i-- ) { - cn = this.nodes[i]; - if ( (p = cn.parentNode) ) { - p.removeChild(cn); - } - } - return this; -}; - -DOMList.prototype.detach = DOMList.prototype.remove; - -/******************************************************************************/ - -DOMList.prototype.empty = function() { - var node; - var i = this.nodes.length; - while ( i-- ) { - node = this.nodes[i]; - while ( node.firstChild ) { - node.removeChild(node.firstChild); - } - } - return this; -}; - -/******************************************************************************/ - -DOMList.prototype.append = function(selector, context) { - var p = this.nodes[0]; - if ( p ) { - var c = DOMListFactory(selector, context); - var n = c.nodes.length; - for ( var i = 0; i < n; i++ ) { - p.appendChild(c.nodes[i]); - } - } - return this; -}; - -/******************************************************************************/ - -DOMList.prototype.prepend = function(selector, context) { - var p = this.nodes[0]; - if ( p ) { - var c = DOMListFactory(selector, context); - var i = c.nodes.length; - while ( i-- ) { - p.insertBefore(c.nodes[i], p.firstChild); - } - } - return this; -}; - -/******************************************************************************/ - -DOMList.prototype.appendTo = function(selector, context) { - var p = selector instanceof DOMListFactory ? selector : DOMListFactory(selector, context); - var n = p.length; - for ( var i = 0; i < n; i++ ) { - p.nodes[0].appendChild(this.nodes[i]); - } - return this; -}; - -/******************************************************************************/ - -DOMList.prototype.insertAfter = function(selector, context) { - if ( this.nodes.length === 0 ) { - return this; - } - var p = this.nodes[0].parentNode; - if ( !p ) { - return this; - } - var c = DOMListFactory(selector, context); - var n = c.nodes.length; - for ( var i = 0; i < n; i++ ) { - p.appendChild(c.nodes[i]); - } - return this; -}; - -/******************************************************************************/ - -DOMList.prototype.insertBefore = function(selector, context) { - if ( this.nodes.length === 0 ) { - return this; - } - var referenceNodes = DOMListFactory(selector, context); - if ( referenceNodes.nodes.length === 0 ) { - return this; - } - var referenceNode = referenceNodes.nodes[0]; - var parentNode = referenceNode.parentNode; - if ( !parentNode ) { - return this; - } - var n = this.nodes.length; - for ( var i = 0; i < n; i++ ) { - parentNode.insertBefore(this.nodes[i], referenceNode); - } - return this; -}; - -/******************************************************************************/ - -DOMList.prototype.clone = function(notDeep) { - var r = new DOMList(); - var n = this.nodes.length; - for ( var i = 0; i < n; i++ ) { - addNodeToList(r, this.nodes[i].cloneNode(!notDeep)); - } - return r; -}; - -/******************************************************************************/ - -DOMList.prototype.nthOfType = function() { - if ( this.nodes.length === 0 ) { - return 0; - } - var node = this.nodes[0]; - var tagName = node.tagName; - var i = 1; - while ( node.previousElementSibling !== null ) { - node = node.previousElementSibling; - if ( typeof node.tagName !== 'string' ) { - continue; - } - if ( node.tagName !== tagName ) { - continue; - } - i++; - } - return i; -}; - -/******************************************************************************/ - -DOMList.prototype.attr = function(attr, value) { - var i = this.nodes.length; - if ( value === undefined && typeof attr !== 'object' ) { - return i ? this.nodes[0].getAttribute(attr) : undefined; - } - if ( typeof attr === 'object' ) { - var attrNames = Object.keys(attr); - var node, j, attrName; - while ( i-- ) { - node = this.nodes[i]; - j = attrNames.length; - while ( j-- ) { - attrName = attrNames[j]; - node.setAttribute(attrName, attr[attrName]); - } - } - } else { - while ( i-- ) { - this.nodes[i].setAttribute(attr, value); - } - } - return this; -}; - -/******************************************************************************/ - -DOMList.prototype.prop = function(prop, value) { - var i = this.nodes.length; - if ( value === undefined ) { - return i !== 0 ? this.nodes[0][prop] : undefined; - } - while ( i-- ) { - this.nodes[i][prop] = value; - } - return this; -}; - -/******************************************************************************/ - -DOMList.prototype.css = function(prop, value) { - var i = this.nodes.length; - if ( value === undefined ) { - return i ? this.nodes[0].style[prop] : undefined; - } - if ( value !== '' ) { - while ( i-- ) { - this.nodes[i].style.setProperty(prop, value); - } - return this; - } - while ( i-- ) { - this.nodes[i].style.removeProperty(prop); - } - return this; -}; - -/******************************************************************************/ - -DOMList.prototype.val = function(value) { - return this.prop('value', value); -}; - -/******************************************************************************/ - -DOMList.prototype.html = function(html) { - var i = this.nodes.length; - if ( html === undefined ) { - return i ? this.nodes[0].innerHTML : ''; - } - while ( i-- ) { - vAPI.insertHTML(this.nodes[i], html); - } - return this; -}; - -/******************************************************************************/ - -DOMList.prototype.text = function(text) { - var i = this.nodes.length; - if ( text === undefined ) { - return i ? this.nodes[0].textContent : ''; - } - while ( i-- ) { - this.nodes[i].textContent = text; - } - return this; -}; - -/******************************************************************************/ - -var toggleClass = function(node, className, targetState) { - var tokenList = node.classList; - if ( tokenList instanceof DOMTokenList === false ) { - return; - } - var currentState = tokenList.contains(className); - var newState = targetState; - if ( newState === undefined ) { - newState = !currentState; - } - if ( newState === currentState ) { - return; - } - tokenList.toggle(className, newState); -}; - -/******************************************************************************/ - -DOMList.prototype.hasClass = function(className) { - if ( !this.nodes.length ) { - return false; - } - var tokenList = this.nodes[0].classList; - return tokenList instanceof DOMTokenList && - tokenList.contains(className); -}; -DOMList.prototype.hasClassName = DOMList.prototype.hasClass; - -DOMList.prototype.addClass = function(className) { - return this.toggleClass(className, true); -}; - -DOMList.prototype.removeClass = function(className) { - if ( className !== undefined ) { - return this.toggleClass(className, false); - } - var i = this.nodes.length; - while ( i-- ) { - this.nodes[i].className = ''; - } - return this; -}; - -/******************************************************************************/ - -DOMList.prototype.toggleClass = function(className, targetState) { - if ( className.indexOf(' ') !== -1 ) { - return this.toggleClasses(className, targetState); - } - var i = this.nodes.length; - while ( i-- ) { - toggleClass(this.nodes[i], className, targetState); - } - return this; -}; - -/******************************************************************************/ - -DOMList.prototype.toggleClasses = function(classNames, targetState) { - var tokens = classNames.split(/\s+/); - var i = this.nodes.length; - var node, j; - while ( i-- ) { - node = this.nodes[i]; - j = tokens.length; - while ( j-- ) { - toggleClass(node, tokens[j], targetState); - } - } - return this; -}; - -/******************************************************************************/ - -var listenerEntries = []; - -var ListenerEntry = function(target, type, capture, callback) { - this.target = target; - this.type = type; - this.capture = capture; - this.callback = callback; - target.addEventListener(type, callback, capture); -}; - -ListenerEntry.prototype.dispose = function() { - this.target.removeEventListener(this.type, this.callback, this.capture); - this.target = null; - this.callback = null; -}; - -/******************************************************************************/ - -var makeEventHandler = function(selector, callback) { - return function(event) { - var dispatcher = event.currentTarget; - if ( !dispatcher || typeof dispatcher.querySelectorAll !== 'function' ) { - return; - } - var receiver = event.target; - if ( nodeInNodeList(receiver, dispatcher.querySelectorAll(selector)) ) { - callback.call(receiver, event); - } - }; -}; - -DOMList.prototype.on = function(etype, selector, callback) { - if ( typeof selector === 'function' ) { - callback = selector; - selector = undefined; - } else { - callback = makeEventHandler(selector, callback); - } - - var i = this.nodes.length; - while ( i-- ) { - listenerEntries.push(new ListenerEntry(this.nodes[i], etype, selector !== undefined, callback)); - } - return this; -}; - -/******************************************************************************/ - -// TODO: Won't work for delegated handlers. Need to figure -// what needs to be done. - -DOMList.prototype.off = function(evtype, callback) { - var i = this.nodes.length; - while ( i-- ) { - this.nodes[i].removeEventListener(evtype, callback); - } - return this; -}; - -/******************************************************************************/ - -DOMList.prototype.trigger = function(etype) { - var ev = new CustomEvent(etype); - var i = this.nodes.length; - while ( i-- ) { - this.nodes[i].dispatchEvent(ev); - } - return this; -}; - -/******************************************************************************/ - -// Cleanup - -var onBeforeUnload = function() { - var entry; - while ( (entry = listenerEntries.pop()) ) { - entry.dispose(); - } - window.removeEventListener('beforeunload', onBeforeUnload); -}; - -window.addEventListener('beforeunload', onBeforeUnload); - -/******************************************************************************/ - -return DOMListFactory; - -})(); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/uritools.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/uritools.js deleted file mode 100644 index 9885112..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/uritools.js +++ /dev/null @@ -1,417 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to black/white list requests. - Copyright (C) 2014-2018 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -/* global publicSuffixList, punycode */ - -'use strict'; - -/******************************************************************************* - -RFC 3986 as reference: http://tools.ietf.org/html/rfc3986#appendix-A - -Naming convention from https://en.wikipedia.org/wiki/URI_scheme#Examples - -*/ - -/******************************************************************************/ - -µMatrix.URI = (function() { - -/******************************************************************************/ - -// Favorite regex tool: http://regex101.com/ - -// Ref: -// I removed redundant capture groups: capture less = peform faster. See -// -// Performance improvements welcomed. -// jsperf: -var reRFC3986 = /^([^:\/?#]+:)?(\/\/[^\/?#]*)?([^?#]*)(\?[^#]*)?(#.*)?/; - -// Derived -var reSchemeFromURI = /^[^:\/?#]+:/; -var reAuthorityFromURI = /^(?:[^:\/?#]+:)?(\/\/[^\/?#]+)/; -var reCommonHostnameFromURL = /^https?:\/\/([0-9a-z_][0-9a-z._-]*[0-9a-z])\//; -var reMustNormalizeHostname = /[^0-9a-z._-]/; - -// These are to parse authority field, not parsed by above official regex -// IPv6 is seen as an exception: a non-compatible IPv6 is first tried, and -// if it fails, the IPv6 compatible regex istr used. This helps -// peformance by avoiding the use of a too complicated regex first. - -// https://github.com/gorhill/httpswitchboard/issues/211 -// "While a hostname may not contain other characters, such as the -// "underscore character (_), other DNS names may contain the underscore" -var reHostPortFromAuthority = /^(?:[^@]*@)?([^:]*)(:\d*)?$/; -var reIPv6PortFromAuthority = /^(?:[^@]*@)?(\[[0-9a-f:]*\])(:\d*)?$/i; - -var reHostFromNakedAuthority = /^[0-9a-z._-]+[0-9a-z]$/i; -var reHostFromAuthority = /^(?:[^@]*@)?([^:]+)(?::\d*)?$/; -var reIPv6FromAuthority = /^(?:[^@]*@)?(\[[0-9a-f:]+\])(?::\d*)?$/i; - -// Coarse (but fast) tests -var reIPAddressNaive = /^\d+\.\d+\.\d+\.\d+$|^\[[\da-zA-Z:]+\]$/; - -// Accurate tests -// Source.: http://stackoverflow.com/questions/5284147/validating-ipv4-addresses-with-regexp/5284410#5284410 -//var reIPv4 = /^((25[0-5]|2[0-4]\d|[01]?\d\d?)(\.|$)){4}/; - -// Source: http://forums.intermapper.com/viewtopic.php?p=1096#1096 -//var reIPv6 = /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/; - -/******************************************************************************/ - -var reset = function(o) { - o.scheme = ''; - o.hostname = ''; - o._ipv4 = undefined; - o._ipv6 = undefined; - o.port = ''; - o.path = ''; - o.query = ''; - o.fragment = ''; - return o; -}; - -var resetAuthority = function(o) { - o.hostname = ''; - o._ipv4 = undefined; - o._ipv6 = undefined; - o.port = ''; - return o; -}; - -/******************************************************************************/ - -// This will be exported - -var URI = { - scheme: '', - authority: '', - hostname: '', - _ipv4: undefined, - _ipv6: undefined, - port: '', - domain: undefined, - path: '', - query: '', - fragment: '', - schemeBit: (1 << 0), - userBit: (1 << 1), - passwordBit: (1 << 2), - hostnameBit: (1 << 3), - portBit: (1 << 4), - pathBit: (1 << 5), - queryBit: (1 << 6), - fragmentBit: (1 << 7), - allBits: (0xFFFF) -}; - -URI.authorityBit = (URI.userBit | URI.passwordBit | URI.hostnameBit | URI.portBit); -URI.normalizeBits = (URI.schemeBit | URI.hostnameBit | URI.pathBit | URI.queryBit); - -/******************************************************************************/ - -// See: https://en.wikipedia.org/wiki/URI_scheme#Examples -// URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] -// -// foo://example.com:8042/over/there?name=ferret#nose -// \_/ \______________/\_________/ \_________/ \__/ -// | | | | | -// scheme authority path query fragment -// | _____________________|__ -// / \ / \ -// urn:example:animal:ferret:nose - -URI.set = function(uri) { - if ( uri === undefined ) { - return reset(URI); - } - var matches = reRFC3986.exec(uri); - if ( !matches ) { - return reset(URI); - } - this.scheme = matches[1] !== undefined ? matches[1].slice(0, -1) : ''; - this.authority = matches[2] !== undefined ? matches[2].slice(2).toLowerCase() : ''; - this.path = matches[3] !== undefined ? matches[3] : ''; - - // - // "In general, a URI that uses the generic syntax for authority - // "with an empty path should be normalized to a path of '/'." - if ( this.authority !== '' && this.path === '' ) { - this.path = '/'; - } - this.query = matches[4] !== undefined ? matches[4].slice(1) : ''; - this.fragment = matches[5] !== undefined ? matches[5].slice(1) : ''; - - // Assume very simple authority, i.e. just a hostname (highest likelihood - // case for µMatrix) - if ( reHostFromNakedAuthority.test(this.authority) ) { - this.hostname = this.authority; - this.port = ''; - return this; - } - // Authority contains more than just a hostname - matches = reHostPortFromAuthority.exec(this.authority); - if ( !matches ) { - matches = reIPv6PortFromAuthority.exec(this.authority); - if ( !matches ) { - return resetAuthority(URI); - } - } - this.hostname = matches[1] !== undefined ? matches[1] : ''; - // http://en.wikipedia.org/wiki/FQDN - if ( this.hostname.slice(-1) === '.' ) { - this.hostname = this.hostname.slice(0, -1); - } - this.port = matches[2] !== undefined ? matches[2].slice(1) : ''; - return this; -}; - -/******************************************************************************/ - -// URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] -// -// foo://example.com:8042/over/there?name=ferret#nose -// \_/ \______________/\_________/ \_________/ \__/ -// | | | | | -// scheme authority path query fragment -// | _____________________|__ -// / \ / \ -// urn:example:animal:ferret:nose - -URI.assemble = function(bits) { - if ( bits === undefined ) { - bits = this.allBits; - } - var s = []; - if ( this.scheme && (bits & this.schemeBit) ) { - s.push(this.scheme, ':'); - } - if ( this.hostname && (bits & this.hostnameBit) ) { - s.push('//', this.hostname); - } - if ( this.port && (bits & this.portBit) ) { - s.push(':', this.port); - } - if ( this.path && (bits & this.pathBit) ) { - s.push(this.path); - } - if ( this.query && (bits & this.queryBit) ) { - s.push('?', this.query); - } - if ( this.fragment && (bits & this.fragmentBit) ) { - s.push('#', this.fragment); - } - return s.join(''); -}; - -/******************************************************************************/ - -URI.schemeFromURI = function(uri) { - var matches = reSchemeFromURI.exec(uri); - if ( matches === null ) { - return ''; - } - return matches[0].slice(0, -1).toLowerCase(); -}; - -/******************************************************************************/ - -const reNetworkScheme = /^(?:https?|wss?|ftps?)\b/; - -URI.isNetworkScheme = function(scheme) { - return reNetworkScheme.test(scheme); -}; - -/******************************************************************************/ - -URI.isSecureScheme = function(scheme) { - return this.reSecureScheme.test(scheme); -}; - -URI.reSecureScheme = /^(?:https|wss|ftps)\b/; - -/******************************************************************************/ - -// The most used function, so it better be fast. - -// https://github.com/gorhill/uBlock/issues/1559 -// See http://en.wikipedia.org/wiki/FQDN -// https://bugzilla.mozilla.org/show_bug.cgi?id=1360285 -// Revisit punycode dependency when above issue is fixed in Firefox. - -URI.hostnameFromURI = function(uri) { - var matches = reCommonHostnameFromURL.exec(uri); - if ( matches !== null ) { return matches[1]; } - matches = reAuthorityFromURI.exec(uri); - if ( matches === null ) { return ''; } - var authority = matches[1].slice(2); - // Assume very simple authority (most common case for µBlock) - if ( reHostFromNakedAuthority.test(authority) ) { - return authority.toLowerCase(); - } - matches = reHostFromAuthority.exec(authority); - if ( matches === null ) { - matches = reIPv6FromAuthority.exec(authority); - if ( matches === null ) { return ''; } - } - var hostname = matches[1]; - while ( hostname.endsWith('.') ) { - hostname = hostname.slice(0, -1); - } - if ( reMustNormalizeHostname.test(hostname) ) { - hostname = punycode.toASCII(hostname.toLowerCase()); - } - return hostname; -}; - -/******************************************************************************/ - -URI.domainFromHostname = function(hostname) { - // Try to skip looking up the PSL database - var entry = domainCache.get(hostname); - if ( entry !== undefined ) { - entry.tstamp = Date.now(); - return entry.domain; - } - // Meh.. will have to search it - if ( reIPAddressNaive.test(hostname) === false ) { - return domainCacheAdd(hostname, psl.getDomain(hostname)); - } - return domainCacheAdd(hostname, hostname); -}; - -// It is expected that there is higher-scoped `publicSuffixList` lingering -// somewhere. Cache it. See . -var psl = publicSuffixList; - -/******************************************************************************/ - - // Trying to alleviate the worries of looking up too often the domain name from -// a hostname. With a cache, uBlock benefits given that it deals with a -// specific set of hostnames within a narrow time span -- in other words, I -// believe probability of cache hit are high in uBlock. - -var domainCache = new Map(); -var domainCacheCountLowWaterMark = 75; -var domainCacheCountHighWaterMark = 100; -var domainCacheEntryJunkyard = []; -var domainCacheEntryJunkyardMax = domainCacheCountHighWaterMark - domainCacheCountLowWaterMark; - -var DomainCacheEntry = function(domain) { - this.init(domain); -}; - -DomainCacheEntry.prototype.init = function(domain) { - this.domain = domain; - this.tstamp = Date.now(); - return this; -}; - -DomainCacheEntry.prototype.dispose = function() { - this.domain = ''; - if ( domainCacheEntryJunkyard.length < domainCacheEntryJunkyardMax ) { - domainCacheEntryJunkyard.push(this); - } -}; - -var domainCacheEntryFactory = function(domain) { - var entry = domainCacheEntryJunkyard.pop(); - if ( entry ) { - return entry.init(domain); - } - return new DomainCacheEntry(domain); -}; - -var domainCacheAdd = function(hostname, domain) { - var entry = domainCache.get(hostname); - if ( entry !== undefined ) { - entry.tstamp = Date.now(); - } else { - domainCache.set(hostname, domainCacheEntryFactory(domain)); - if ( domainCache.size === domainCacheCountHighWaterMark ) { - domainCachePrune(); - } - } - return domain; -}; - -var domainCacheEntrySort = function(a, b) { - return domainCache.get(b).tstamp - domainCache.get(a).tstamp; -}; - -var domainCachePrune = function() { - var hostnames = Array.from(domainCache.keys()) - .sort(domainCacheEntrySort) - .slice(domainCacheCountLowWaterMark); - var i = hostnames.length; - var hostname; - while ( i-- ) { - hostname = hostnames[i]; - domainCache.get(hostname).dispose(); - domainCache.delete(hostname); - } -}; - -window.addEventListener('publicSuffixList', function() { - domainCache.clear(); -}); - -/******************************************************************************/ - -URI.domainFromURI = function(uri) { - if ( !uri ) { - return ''; - } - return this.domainFromHostname(this.hostnameFromURI(uri)); -}; - -/******************************************************************************/ - -// Normalize the way µMatrix expects it - -URI.normalizedURI = function() { - // Will be removed: - // - port - // - user id/password - // - fragment - return this.assemble(this.normalizeBits); -}; - -/******************************************************************************/ - -URI.toString = function() { - return this.assemble(); -}; - -/******************************************************************************/ - -// Export - -return URI; - -/******************************************************************************/ - -})(); - -/******************************************************************************/ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/user-rules.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/user-rules.js deleted file mode 100644 index 8246d4b..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/user-rules.js +++ /dev/null @@ -1,536 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to block requests. - Copyright (C) 2014-2018 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -/* global diff_match_patch, CodeMirror, uDom */ - -'use strict'; - -/******************************************************************************/ - -(function() { - -/******************************************************************************/ - -// Move to dashboard-common.js if needed - -(function() { - let timer; - let resize = function() { - timer = undefined; - let child = document.querySelector('.vfill-available'); - if ( child === null ) { return; } - let prect = document.documentElement.getBoundingClientRect(); - let crect = child.getBoundingClientRect(); - let cssHeight = Math.max(prect.bottom - crect.top, 80) + 'px'; - if ( child.style.height !== cssHeight ) { - child.style.height = cssHeight; - if ( typeof mergeView !== 'undefined' ) { - mergeView.leftOriginal().refresh(); - mergeView.editor().refresh(); - } - } - }; - let resizeAsync = function(delay) { - if ( timer === undefined ) { - timer = vAPI.setTimeout( - resize, - typeof delay === 'number' ? delay : 66 - ); - } - }; - window.addEventListener('resize', resizeAsync); - var observer = new MutationObserver(resizeAsync); - observer.observe(document.querySelector('.body'), { - childList: true, - subtree: true - }); - resizeAsync(1); -})(); - -/******************************************************************************/ - -var mergeView = new CodeMirror.MergeView( - document.querySelector('.codeMirrorMergeContainer'), - { - allowEditingOriginals: true, - connect: 'align', - inputStyle: 'contenteditable', - lineNumbers: true, - lineWrapping: false, - origLeft: '', - revertButtons: true, - value: '' - } -); -mergeView.editor().setOption('styleActiveLine', true); -mergeView.editor().setOption('lineNumbers', false); -mergeView.leftOriginal().setOption('readOnly', 'nocursor'); - -var unfilteredRules = { - orig: { doc: mergeView.leftOriginal(), rules: [] }, - edit: { doc: mergeView.editor(), rules: [] } -}; - -var cleanEditToken = 0; -var cleanEditText = ''; - -var differ; - -/******************************************************************************/ - -// Borrowed from... -// https://github.com/codemirror/CodeMirror/blob/3e1bb5fff682f8f6cbfaef0e56c61d62403d4798/addon/search/search.js#L22 -// ... and modified as needed. - -var updateOverlay = (function() { - var reFilter; - var mode = { - token: function(stream) { - if ( reFilter !== undefined ) { - reFilter.lastIndex = stream.pos; - var match = reFilter.exec(stream.string); - if ( match !== null ) { - if ( match.index === stream.pos ) { - stream.pos += match[0].length || 1; - return 'searching'; - } - stream.pos = match.index; - return; - } - } - stream.skipToEnd(); - } - }; - return function(filter) { - reFilter = typeof filter === 'string' && filter !== '' ? - new RegExp(filter.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gi') : - undefined; - return mode; - }; -})(); - -/******************************************************************************/ - -// Incrementally update text in a CodeMirror editor for best user experience: -// - Scroll position preserved -// - Minimum amount of text updated - -var rulesToDoc = function(clearHistory) { - for ( var key in unfilteredRules ) { - if ( unfilteredRules.hasOwnProperty(key) === false ) { continue; } - var doc = unfilteredRules[key].doc; - var rules = filterRules(key); - if ( doc.lineCount() === 1 && doc.getValue() === '' || rules.length === 0 ) { - doc.setValue(rules.length !== 0 ? rules.join('\n') : ''); - continue; - } - if ( differ === undefined ) { differ = new diff_match_patch(); } - var beforeText = doc.getValue(); - var afterText = rules.join('\n'); - var diffs = differ.diff_main(beforeText, afterText); - doc.startOperation(); - var i = diffs.length, - iedit = beforeText.length; - while ( i-- ) { - var diff = diffs[i]; - if ( diff[0] === 0 ) { - iedit -= diff[1].length; - continue; - } - var end = doc.posFromIndex(iedit); - if ( diff[0] === 1 ) { - doc.replaceRange(diff[1], end, end); - continue; - } - /* diff[0] === -1 */ - iedit -= diff[1].length; - var beg = doc.posFromIndex(iedit); - doc.replaceRange('', beg, end); - } - doc.endOperation(); - } - cleanEditText = mergeView.editor().getValue().trim(); - cleanEditToken = mergeView.editor().changeGeneration(); - if ( clearHistory ) { - mergeView.editor().clearHistory(); - } -}; - -/******************************************************************************/ - -var filterRules = function(key) { - var rules = unfilteredRules[key].rules; - var filter = uDom('#ruleFilter input').val(); - if ( filter !== '' ) { - rules = rules.slice(); - var i = rules.length; - while ( i-- ) { - if ( rules[i].indexOf(filter) === -1 ) { - rules.splice(i, 1); - } - } - } - return rules; -}; - -/******************************************************************************/ - -var renderRules = (function() { - var firstVisit = true; - - return function(details) { - unfilteredRules.orig.rules = details.permanentRules.sort(directiveSort); - unfilteredRules.edit.rules = details.temporaryRules.sort(directiveSort); - rulesToDoc(firstVisit); - if ( firstVisit ) { - firstVisit = false; - mergeView.editor().execCommand('goNextDiff'); - } - onTextChanged(true); - }; -})(); - -// Switches before, rules after -var directiveSort = function(a, b) { - var aIsSwitch = a.indexOf(': ') !== -1; - var bIsSwitch = b.indexOf(': ') !== -1; - if ( aIsSwitch === bIsSwitch ) { - return a.localeCompare(b); - } - return aIsSwitch ? -1 : 1; -}; - -/******************************************************************************/ - -var applyDiff = function(permanent, toAdd, toRemove) { - vAPI.messaging.send( - 'user-rules.js', - { - what: 'modifyRuleset', - permanent: permanent, - toAdd: toAdd, - toRemove: toRemove - }, - renderRules - ); -}; - -/******************************************************************************/ - -// CodeMirror quirk: sometimes fromStart.ch and/or toStart.ch is undefined. -// When this happens, use 0. - -mergeView.options.revertChunk = function( - mv, - from, fromStart, fromEnd, - to, toStart, toEnd -) { - // https://github.com/gorhill/uBlock/issues/3611 - if ( document.body.getAttribute('dir') === 'rtl' ) { - var tmp; - tmp = from; from = to; to = tmp; - tmp = fromStart; fromStart = toStart; toStart = tmp; - tmp = fromEnd; fromEnd = toEnd; toEnd = tmp; - } - if ( typeof fromStart.ch !== 'number' ) { fromStart.ch = 0; } - if ( fromEnd.ch !== 0 ) { fromEnd.line += 1; } - var toAdd = from.getRange( - { line: fromStart.line, ch: 0 }, - { line: fromEnd.line, ch: 0 } - ); - if ( typeof toStart.ch !== 'number' ) { toStart.ch = 0; } - if ( toEnd.ch !== 0 ) { toEnd.line += 1; } - var toRemove = to.getRange( - { line: toStart.line, ch: 0 }, - { line: toEnd.line, ch: 0 } - ); - applyDiff(from === mv.editor(), toAdd, toRemove); -}; - -/******************************************************************************/ - -// https://github.com/chrisaljoudi/uBlock/issues/757 -// Support RequestPolicy rule syntax - -var fromRequestPolicy = function(content) { - var matches = /\[origins-to-destinations\]([^\[]+)/.exec(content); - if ( matches === null || matches.length !== 2 ) { return; } - return matches[1].trim() - .replace(/\|/g, ' ') - .replace(/\n/g, ' * allow\n'); -}; - -/******************************************************************************/ - -// https://github.com/gorhill/uMatrix/issues/270 - -var fromNoScript = function(content) { - var noscript = null; - try { - noscript = JSON.parse(content); - } catch (e) { - } - if ( - noscript === null || - typeof noscript !== 'object' || - typeof noscript.prefs !== 'object' || - typeof noscript.prefs.clearClick === 'undefined' || - typeof noscript.whitelist !== 'string' || - typeof noscript.V !== 'string' - ) { - return; - } - var out = new Set(); - var reBad = /[a-z]+:\w*$/; - var reURL = /[a-z]+:\/\/([0-9a-z.-]+)/; - var directives = noscript.whitelist.split(/\s+/); - var i = directives.length; - var directive, matches; - while ( i-- ) { - directive = directives[i].trim(); - if ( directive === '' ) { continue; } - if ( reBad.test(directive) ) { continue; } - matches = reURL.exec(directive); - if ( matches !== null ) { - directive = matches[1]; - } - out.add('* ' + directive + ' * allow'); - out.add('* ' + directive + ' script allow'); - out.add('* ' + directive + ' frame allow'); - } - return Array.from(out).join('\n'); -}; - -/******************************************************************************/ - -var handleImportFilePicker = function() { - var fileReaderOnLoadHandler = function() { - if ( typeof this.result !== 'string' || this.result === '' ) { - return; - } - var result = fromRequestPolicy(this.result); - if ( result === undefined ) { - result = fromNoScript(this.result); - if ( result === undefined ) { - result = this.result; - } - } - if ( this.result === '' ) { return; } - applyDiff(false, result, ''); - }; - var file = this.files[0]; - if ( file === undefined || file.name === '' ) { return; } - if ( file.type.indexOf('text') !== 0 && file.type !== 'application/json') { - return; - } - var fr = new FileReader(); - fr.onload = fileReaderOnLoadHandler; - fr.readAsText(file); -}; - -/******************************************************************************/ - -var startImportFilePicker = function() { - var input = document.getElementById('importFilePicker'); - // Reset to empty string, this will ensure an change event is properly - // triggered if the user pick a file, even if it is the same as the last - // one picked. - input.value = ''; - input.click(); -}; - -/******************************************************************************/ - -function exportUserRulesToFile() { - vAPI.download({ - url: 'data:text/plain,' + encodeURIComponent( - mergeView.leftOriginal().getValue().trim() + '\n' - ), - filename: uDom('[data-i18n="userRulesDefaultFileName"]').text() - }); -} - -/******************************************************************************/ - -var onFilterChanged = (function() { - var timer, - overlay = null, - last = ''; - - var process = function() { - timer = undefined; - if ( mergeView.editor().isClean(cleanEditToken) === false ) { return; } - var filter = uDom('#ruleFilter input').val(); - if ( filter === last ) { return; } - last = filter; - if ( overlay !== null ) { - mergeView.leftOriginal().removeOverlay(overlay); - mergeView.editor().removeOverlay(overlay); - overlay = null; - } - if ( filter !== '' ) { - overlay = updateOverlay(filter); - mergeView.leftOriginal().addOverlay(overlay); - mergeView.editor().addOverlay(overlay); - } - rulesToDoc(true); - }; - - return function() { - if ( timer !== undefined ) { clearTimeout(timer); } - timer = vAPI.setTimeout(process, 773); - }; -})(); - -/******************************************************************************/ - -var onTextChanged = (function() { - var timer; - - var process = function(now) { - timer = undefined; - var isClean = mergeView.editor().isClean(cleanEditToken); - var diff = document.getElementById('diff'); - if ( - now && - isClean === false && - mergeView.editor().getValue().trim() === cleanEditText - ) { - cleanEditToken = mergeView.editor().changeGeneration(); - isClean = true; - } - diff.classList.toggle('editing', isClean === false); - diff.classList.toggle('dirty', mergeView.leftChunks().length !== 0); - var input = document.querySelector('#ruleFilter input'); - if ( isClean ) { - input.removeAttribute('disabled'); - CodeMirror.commands.save = undefined; - } else { - input.setAttribute('disabled', ''); - CodeMirror.commands.save = editSaveHandler; - } - }; - - return function(now) { - if ( timer !== undefined ) { clearTimeout(timer); } - timer = now ? process(now) : vAPI.setTimeout(process, 57); - }; -})(); - -/******************************************************************************/ - -var revertAllHandler = function() { - var toAdd = [], toRemove = []; - var left = mergeView.leftOriginal(), - edit = mergeView.editor(); - for ( var chunk of mergeView.leftChunks() ) { - var addedLines = left.getRange( - { line: chunk.origFrom, ch: 0 }, - { line: chunk.origTo, ch: 0 } - ); - var removedLines = edit.getRange( - { line: chunk.editFrom, ch: 0 }, - { line: chunk.editTo, ch: 0 } - ); - toAdd.push(addedLines.trim()); - toRemove.push(removedLines.trim()); - } - applyDiff(false, toAdd.join('\n'), toRemove.join('\n')); -}; - -/******************************************************************************/ - -var commitAllHandler = function() { - var toAdd = [], toRemove = []; - var left = mergeView.leftOriginal(), - edit = mergeView.editor(); - for ( var chunk of mergeView.leftChunks() ) { - var addedLines = edit.getRange( - { line: chunk.editFrom, ch: 0 }, - { line: chunk.editTo, ch: 0 } - ); - var removedLines = left.getRange( - { line: chunk.origFrom, ch: 0 }, - { line: chunk.origTo, ch: 0 } - ); - toAdd.push(addedLines.trim()); - toRemove.push(removedLines.trim()); - } - applyDiff(true, toAdd.join('\n'), toRemove.join('\n')); -}; - -/******************************************************************************/ - -var editSaveHandler = function() { - var editor = mergeView.editor(); - var editText = editor.getValue().trim(); - if ( editText === cleanEditText ) { - onTextChanged(true); - return; - } - if ( differ === undefined ) { differ = new diff_match_patch(); } - var toAdd = [], toRemove = []; - var diffs = differ.diff_main(cleanEditText, editText); - for ( var diff of diffs ) { - if ( diff[0] === 1 ) { - toAdd.push(diff[1]); - } else if ( diff[0] === -1 ) { - toRemove.push(diff[1]); - } - } - applyDiff(false, toAdd.join(''), toRemove.join('')); -}; - -/******************************************************************************/ - -self.cloud.onPush = function() { - return mergeView.leftOriginal().getValue().trim(); -}; - -self.cloud.onPull = function(data, append) { - if ( typeof data !== 'string' ) { return; } - applyDiff( - false, - data, - append ? '' : mergeView.editor().getValue().trim() - ); -}; - -/******************************************************************************/ - -// Handle user interaction -uDom('#exportButton').on('click', exportUserRulesToFile); -uDom('#revertButton').on('click', revertAllHandler); -uDom('#commitButton').on('click', commitAllHandler); -uDom('#importButton').on('click', startImportFilePicker); -uDom('#importFilePicker').on('change', handleImportFilePicker); -uDom('#editSaveButton').on('click', editSaveHandler); -uDom('#ruleFilter input').on('input', onFilterChanged); - -// https://groups.google.com/forum/#!topic/codemirror/UQkTrt078Vs -mergeView.editor().on('updateDiff', function() { onTextChanged(); }); - -vAPI.messaging.send('user-rules.js', { what: 'getRuleset' }, renderRules); - -/******************************************************************************/ - -})(); - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/usersettings.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/usersettings.js deleted file mode 100644 index 303f4d3..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/usersettings.js +++ /dev/null @@ -1,60 +0,0 @@ -/******************************************************************************* - - uMatrix - a Chromium browser extension to black/white list requests. - Copyright (C) 2014-2018 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -'use strict'; - -/******************************************************************************/ - -µMatrix.changeUserSettings = function(name, value) { - if ( typeof name !== 'string' || name === '' ) { - return; - } - - // Do not allow an unknown user setting to be created - if ( this.userSettings[name] === undefined ) { - return; - } - - if ( value === undefined ) { - return this.userSettings[name]; - } - - // Pre-change - switch ( name ) { - - default: - break; - } - - // Change - this.userSettings[name] = value; - - // Post-change - switch ( name ) { - case 'autoUpdate': - this.scheduleAssetUpdater(value === true ? 120000 : 0); - break; - default: - break; - } - - this.saveUserSettings(); -}; diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/utils.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/utils.js deleted file mode 100644 index 2b153dc..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/utils.js +++ /dev/null @@ -1,109 +0,0 @@ -/******************************************************************************* - - uMatrix - a Chromium browser extension to black/white list requests. - Copyright (C) 2014-2018 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -'use strict'; - -/******************************************************************************/ - -µMatrix.gotoExtensionURL = function(details) { - if ( details.url.startsWith('logger-ui.html') ) { - if ( details.shiftKey ) { - this.changeUserSettings( - 'alwaysDetachLogger', - !this.userSettings.alwaysDetachLogger - ); - } - details.popup = this.userSettings.alwaysDetachLogger; - } - details.index = -1; - details.select = true; - vAPI.tabs.open(details); -}; - -/******************************************************************************/ - -µMatrix.LineIterator = function(text, offset) { - this.text = text; - this.textLen = this.text.length; - this.offset = offset || 0; -}; - -µMatrix.LineIterator.prototype = { - next: function() { - var lineEnd = this.text.indexOf('\n', this.offset); - if ( lineEnd === -1 ) { - lineEnd = this.text.indexOf('\r', this.offset); - if ( lineEnd === -1 ) { - lineEnd = this.textLen; - } - } - var line = this.text.slice(this.offset, lineEnd); - this.offset = lineEnd + 1; - return line; - }, - rewind: function() { - if ( this.offset <= 1 ) { - this.offset = 0; - return; - } - var lineEnd = this.text.lastIndexOf('\n', this.offset - 2); - if ( lineEnd !== -1 ) { - this.offset = lineEnd + 1; - } else { - lineEnd = this.text.lastIndexOf('\r', this.offset - 2); - this.offset = lineEnd !== -1 ? lineEnd + 1 : 0; - } - }, - eot: function() { - return this.offset >= this.textLen; - } -}; - -/******************************************************************************/ - -µMatrix.toMap = function(input) { - if ( input instanceof Map ) { - return input; - } - if ( Array.isArray(input) ) { - return new Map(input); - } - let out = new Map(); - if ( input instanceof Object ) { - for ( let key in input ) { - if ( input.hasOwnProperty(key) ) { - out.set(key, input[key]); - } - } - } - return out; -}; - -/******************************************************************************/ - -µMatrix.arraysIntersect = function(a1, a2) { - for ( let v of a1 ) { - if ( a2.indexOf(v) !== -1 ) { return true; } - } - return false; -}; - -/******************************************************************************/ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/vapi-background.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/vapi-background.js deleted file mode 100644 index 6d7485e..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/vapi-background.js +++ /dev/null @@ -1,812 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to block requests. - Copyright (C) 2014-2018 The uBlock Origin authors - Copyright (C) 2017-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -// For background page - -'use strict'; - -/******************************************************************************/ - -(function() { - -/******************************************************************************/ - -var vAPI = self.vAPI = self.vAPI || {}; - -var chrome = self.chrome; -var manifest = chrome.runtime.getManifest(); - -var noopFunc = function(){}; - -// https://code.google.com/p/chromium/issues/detail?id=410868#c8 -var resetLastError = function() { - void chrome.runtime.lastError; -}; - -/******************************************************************************/ - -// https://github.com/gorhill/uMatrix/issues/234 -// https://developer.chrome.com/extensions/privacy#property-network -chrome.privacy.network.networkPredictionEnabled.set({ value: false }); - -/******************************************************************************/ - -vAPI.app = { - name: manifest.name, - version: manifest.version -}; - -/******************************************************************************/ - -vAPI.app.start = function() { -}; - -/******************************************************************************/ - -vAPI.app.stop = function() { -}; - -/******************************************************************************/ - -vAPI.app.restart = function() { - chrome.runtime.reload(); -}; - -/******************************************************************************/ - -// chrome.storage.local.get(null, function(bin){ console.debug('%o', bin); }); - -vAPI.storage = chrome.storage.local; -vAPI.cacheStorage = chrome.storage.local; - -/******************************************************************************/ - -vAPI.tabs = {}; - -/******************************************************************************/ - -vAPI.isBehindTheSceneTabId = function(tabId) { - if ( typeof tabId === 'string' ) { debugger; } - return tabId < 0; -}; - -vAPI.unsetTabId = 0; -vAPI.noTabId = -1; // definitely not any existing tab -vAPI.anyTabId = -2; // one of the existing tab - -/******************************************************************************/ - -vAPI.tabs.registerListeners = function() { - var onNavigationClient = this.onNavigation || noopFunc; - var onUpdatedClient = this.onUpdated || noopFunc; - var onClosedClient = this.onClosed || noopFunc; - - // https://developer.chrome.com/extensions/webNavigation - // [onCreatedNavigationTarget ->] - // onBeforeNavigate -> - // onCommitted -> - // onDOMContentLoaded -> - // onCompleted - - // The chrome.webRequest.onBeforeRequest() won't be called for everything - // else than `http`/`https`. Thus, in such case, we will bind the tab as - // early as possible in order to increase the likelihood of a context - // properly setup if network requests are fired from within the tab. - // Example: Chromium + case #6 at - // http://raymondhill.net/ublock/popup.html - var reGoodForWebRequestAPI = /^https?:\/\//; - - var onCreatedNavigationTarget = function(details) { - //console.debug('onCreatedNavigationTarget: tab id %d = "%s"', details.tabId, details.url); - if ( reGoodForWebRequestAPI.test(details.url) ) { return; } - onNavigationClient(details); - }; - - var onUpdated = function(tabId, changeInfo, tab) { - onUpdatedClient(tabId, changeInfo, tab); - }; - - var onCommitted = function(details) { - // Important: do not call client if not top frame. - if ( details.frameId !== 0 ) { - return; - } - onNavigationClient(details); - //console.debug('onCommitted: tab id %d = "%s"', details.tabId, details.url); - }; - - var onClosed = function(tabId) { - onClosedClient(tabId); - }; - - chrome.webNavigation.onCreatedNavigationTarget.addListener(onCreatedNavigationTarget); - chrome.webNavigation.onCommitted.addListener(onCommitted); - chrome.tabs.onUpdated.addListener(onUpdated); - chrome.tabs.onRemoved.addListener(onClosed); -}; - -/******************************************************************************/ - -// tabId: null, // active tab - -vAPI.tabs.get = function(tabId, callback) { - var onTabReady = function(tab) { - resetLastError(); - callback(tab); - }; - if ( tabId !== null ) { - chrome.tabs.get(tabId, onTabReady); - return; - } - var onTabReceived = function(tabs) { - resetLastError(); - var tab = null; - if ( Array.isArray(tabs) && tabs.length !== 0 ) { - tab = tabs[0]; - } - callback(tab); - }; - chrome.tabs.query({ active: true, currentWindow: true }, onTabReceived); -}; - -/******************************************************************************/ - -// https://github.com/uBlockOrigin/uMatrix-issues/issues/9 - -vAPI.tabs.getAll = function(callback) { - chrome.tabs.query({}, callback); -}; - -/******************************************************************************/ - -// properties of the details object: -// url: 'URL', // the address that will be opened -// tabId: 1, // the tab is used if set, instead of creating a new one -// index: -1, // undefined: end of the list, -1: following tab, or after index -// active: false, // opens the tab in background - true and undefined: foreground -// select: true // if a tab is already opened with that url, then select it instead of opening a new one - -vAPI.tabs.open = function(details) { - var targetURL = details.url; - if ( typeof targetURL !== 'string' || targetURL === '' ) { - return null; - } - // extension pages - if ( /^[\w-]{2,}:/.test(targetURL) !== true ) { - targetURL = vAPI.getURL(targetURL); - } - - // dealing with Chrome's asynchronous API - var wrapper = function() { - if ( details.active === undefined ) { - details.active = true; - } - - var subWrapper = function() { - var _details = { - url: targetURL, - active: !!details.active - }; - - // Opening a tab from incognito window won't focus the window - // in which the tab was opened - var focusWindow = function(tab) { - if ( tab.active ) { - chrome.windows.update(tab.windowId, { focused: true }); - } - }; - - if ( !details.tabId ) { - if ( details.index !== undefined ) { - _details.index = details.index; - } - - chrome.tabs.create(_details, focusWindow); - return; - } - - // update doesn't accept index, must use move - chrome.tabs.update(details.tabId, _details, function(tab) { - // if the tab doesn't exist - if ( vAPI.lastError() ) { - chrome.tabs.create(_details, focusWindow); - } else if ( details.index !== undefined ) { - chrome.tabs.move(tab.id, {index: details.index}); - } - }); - }; - - // Open in a standalone window - if ( details.popup === true ) { - chrome.windows.create({ url: details.url, type: 'popup' }); - return; - } - - if ( details.index !== -1 ) { - subWrapper(); - return; - } - - vAPI.tabs.get(null, function(tab) { - if ( tab ) { - details.index = tab.index + 1; - } else { - delete details.index; - } - - subWrapper(); - }); - }; - - if ( !details.select ) { - wrapper(); - return; - } - - chrome.tabs.query({ url: targetURL }, function(tabs) { - resetLastError(); - var tab = Array.isArray(tabs) && tabs[0]; - if ( tab ) { - chrome.tabs.update(tab.id, { active: true }, function(tab) { - chrome.windows.update(tab.windowId, { focused: true }); - }); - } else { - wrapper(); - } - }); -}; - -/******************************************************************************/ - -// Replace the URL of a tab. Noop if the tab does not exist. - -vAPI.tabs.replace = function(tabId, url) { - var targetURL = url; - - // extension pages - if ( /^[\w-]{2,}:/.test(targetURL) !== true ) { - targetURL = vAPI.getURL(targetURL); - } - - if ( typeof tabId !== 'number' || tabId < 0 ) { return; } - - chrome.tabs.update(tabId, { url: targetURL }, resetLastError); -}; - -/******************************************************************************/ - -vAPI.tabs.reload = function(tabId, bypassCache) { - if ( typeof tabId !== 'number' || tabId < 0 ) { return; } - chrome.tabs.reload(tabId, { bypassCache: bypassCache === true }); -}; - -/******************************************************************************/ - -// Must read: https://code.google.com/p/chromium/issues/detail?id=410868#c8 - -// https://github.com/chrisaljoudi/uBlock/issues/19 -// https://github.com/chrisaljoudi/uBlock/issues/207 -// Since we may be called asynchronously, the tab id may not exist -// anymore, so this ensures it does still exist. - -vAPI.setIcon = (function() { - let onIconReady = function(tabId, badgeDetails) { - if ( vAPI.lastError() ) { return; } - if ( badgeDetails.text !== undefined ) { - chrome.browserAction.setBadgeText({ - tabId: tabId, - text: badgeDetails.text - }); - } - if ( badgeDetails.color !== undefined ) { - chrome.browserAction.setBadgeBackgroundColor({ - tabId: tabId, - color: badgeDetails.color - }); - } - }; - - return function(tabId, iconDetails, badgeDetails) { - if ( typeof tabId !== 'number' || tabId < 0 ) { return; } - chrome.browserAction.setIcon( - { tabId: tabId, path: iconDetails }, - function() { onIconReady(tabId, badgeDetails); } - ); - }; -})(); - -/******************************************************************************/ -/******************************************************************************/ - -vAPI.messaging = { - ports: new Map(), - listeners: {}, - defaultHandler: null, - NOOPFUNC: noopFunc, - UNHANDLED: 'vAPI.messaging.notHandled' -}; - -/******************************************************************************/ - -vAPI.messaging.listen = function(listenerName, callback) { - this.listeners[listenerName] = callback; -}; - -/******************************************************************************/ - -vAPI.messaging.onPortMessage = (function() { - var messaging = vAPI.messaging; - - // Use a wrapper to avoid closure and to allow reuse. - var CallbackWrapper = function(port, request) { - this.callback = this.proxy.bind(this); // bind once - this.init(port, request); - }; - - CallbackWrapper.prototype = { - init: function(port, request) { - this.port = port; - this.request = request; - return this; - }, - proxy: function(response) { - // https://github.com/chrisaljoudi/uBlock/issues/383 - if ( messaging.ports.has(this.port.name) ) { - this.port.postMessage({ - auxProcessId: this.request.auxProcessId, - channelName: this.request.channelName, - msg: response !== undefined ? response : null - }); - } - // Mark for reuse - this.port = this.request = null; - callbackWrapperJunkyard.push(this); - } - }; - - var callbackWrapperJunkyard = []; - - var callbackWrapperFactory = function(port, request) { - var wrapper = callbackWrapperJunkyard.pop(); - if ( wrapper ) { - return wrapper.init(port, request); - } - return new CallbackWrapper(port, request); - }; - - // https://bugzilla.mozilla.org/show_bug.cgi?id=1392067 - // Workaround: manually remove ports matching removed tab. - chrome.tabs.onRemoved.addListener(function(tabId) { - for ( var port of messaging.ports.values() ) { - var tab = port.sender && port.sender.tab; - if ( !tab ) { continue; } - if ( tab.id === tabId ) { - vAPI.messaging.onPortDisconnect(port); - } - } - }); - - return function(request, port) { - // prepare response - var callback = this.NOOPFUNC; - if ( request.auxProcessId !== undefined ) { - callback = callbackWrapperFactory(port, request).callback; - } - - // Auxiliary process to main process: specific handler - var r = this.UNHANDLED, - listener = this.listeners[request.channelName]; - if ( typeof listener === 'function' ) { - r = listener(request.msg, port.sender, callback); - } - if ( r !== this.UNHANDLED ) { return; } - - // Auxiliary process to main process: default handler - r = this.defaultHandler(request.msg, port.sender, callback); - if ( r !== this.UNHANDLED ) { return; } - - // Auxiliary process to main process: no handler - console.error( - 'vAPI.messaging.onPortMessage > unhandled request: %o', - request - ); - - // Need to callback anyways in case caller expected an answer, or - // else there is a memory leak on caller's side - callback(); - }.bind(vAPI.messaging); -})(); - -/******************************************************************************/ - -vAPI.messaging.onPortDisconnect = function(port) { - port.onDisconnect.removeListener(this.onPortDisconnect); - port.onMessage.removeListener(this.onPortMessage); - this.ports.delete(port.name); -}.bind(vAPI.messaging); - -/******************************************************************************/ - -vAPI.messaging.onPortConnect = function(port) { - port.onDisconnect.addListener(this.onPortDisconnect); - port.onMessage.addListener(this.onPortMessage); - this.ports.set(port.name, port); -}.bind(vAPI.messaging); - -/******************************************************************************/ - -vAPI.messaging.setup = function(defaultHandler) { - if ( this.defaultHandler !== null ) { return; } - - if ( typeof defaultHandler !== 'function' ) { - defaultHandler = function(){ - return vAPI.messaging.UNHANDLED; - }; - } - this.defaultHandler = defaultHandler; - - chrome.runtime.onConnect.addListener(this.onPortConnect); -}; - -/******************************************************************************/ - -vAPI.messaging.broadcast = function(message) { - var messageWrapper = { - broadcast: true, - msg: message - }; - for ( var port of this.ports.values() ) { - port.postMessage(messageWrapper); - } -}; - -/******************************************************************************/ -/******************************************************************************/ - -vAPI.net = { - listenerMap: new WeakMap(), - // legacy Chromium understands only these network request types. - validTypes: (function() { - let types = new Set([ - 'main_frame', - 'sub_frame', - 'stylesheet', - 'script', - 'image', - 'object', - 'xmlhttprequest', - 'other' - ]); - let wrrt = browser.webRequest.ResourceType; - if ( wrrt instanceof Object ) { - for ( let typeKey in wrrt ) { - if ( wrrt.hasOwnProperty(typeKey) ) { - types.add(wrrt[typeKey]); - } - } - } - return types; - })(), - denormalizeFilters: null, - normalizeDetails: null, - addListener: function(which, clientListener, filters, options) { - if ( typeof this.denormalizeFilters === 'function' ) { - filters = this.denormalizeFilters(filters); - } - let actualListener; - if ( typeof this.normalizeDetails === 'function' ) { - actualListener = function(details) { - vAPI.net.normalizeDetails(details); - return clientListener(details); - }; - this.listenerMap.set(clientListener, actualListener); - } - browser.webRequest[which].addListener( - actualListener || clientListener, - filters, - options - ); - }, - removeListener: function(which, clientListener) { - let actualListener = this.listenerMap.get(clientListener); - if ( actualListener !== undefined ) { - this.listenerMap.delete(clientListener); - } - browser.webRequest[which].removeListener( - actualListener || clientListener - ); - }, -}; - -/******************************************************************************/ -/******************************************************************************/ - -vAPI.lastError = function() { - return chrome.runtime.lastError; -}; - -/******************************************************************************/ -/******************************************************************************/ - -vAPI.browserData = {}; - -/******************************************************************************/ - -// https://developer.chrome.com/extensions/browsingData - -vAPI.browserData.clearCache = function(callback) { - chrome.browsingData.removeCache({ since: 0 }, callback); -}; - -/******************************************************************************/ -/******************************************************************************/ - -// https://developer.chrome.com/extensions/cookies - -vAPI.cookies = {}; - -/******************************************************************************/ - -vAPI.cookies.start = function() { - var reallyRemoved = { - 'evicted': true, - 'expired': true, - 'explicit': true - }; - - var onChanged = function(changeInfo) { - if ( changeInfo.removed ) { - if ( reallyRemoved[changeInfo.cause] && typeof this.onRemoved === 'function' ) { - this.onRemoved(changeInfo.cookie); - } - return; - } - if ( typeof this.onChanged === 'function' ) { - this.onChanged(changeInfo.cookie); - } - }; - - chrome.cookies.onChanged.addListener(onChanged.bind(this)); -}; - -/******************************************************************************/ - -vAPI.cookies.getAll = function(callback) { - chrome.cookies.getAll({}, callback); -}; - -/******************************************************************************/ - -vAPI.cookies.remove = function(details, callback) { - chrome.cookies.remove(details, callback || noopFunc); -}; - -/******************************************************************************/ -/******************************************************************************/ - -vAPI.cloud = (function() { - // Not all platforms support `chrome.storage.sync`. - if ( chrome.storage.sync instanceof Object === false ) { - return; - } - - var chunkCountPerFetch = 16; // Must be a power of 2 - - // Mind chrome.storage.sync.MAX_ITEMS (512 at time of writing) - var maxChunkCountPerItem = Math.floor(512 * 0.75) & ~(chunkCountPerFetch - 1); - - // Mind chrome.storage.sync.QUOTA_BYTES_PER_ITEM (8192 at time of writing) - // https://github.com/gorhill/uBlock/issues/3006 - // For Firefox, we will use a lower ratio to allow for more overhead for - // the infrastructure. Unfortunately this leads to less usable space for - // actual data, but all of this is provided for free by browser vendors, - // so we need to accept and deal with these limitations. - var evalMaxChunkSize = function() { - return Math.floor( - (chrome.storage.sync.QUOTA_BYTES_PER_ITEM || 8192) * - (vAPI.webextFlavor.soup.has('firefox') ? 0.6 : 0.75) - ); - }; - - var maxChunkSize = evalMaxChunkSize(); - - // The real actual webextFlavor value may not be set in stone, so listen - // for possible future changes. - window.addEventListener('webextFlavor', function() { - maxChunkSize = evalMaxChunkSize(); - }, { once: true }); - - // Mind chrome.storage.sync.QUOTA_BYTES (128 kB at time of writing) - // Firefox: - // https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/storage/sync - // > You can store up to 100KB of data using this API/ - var maxStorageSize = chrome.storage.sync.QUOTA_BYTES || 102400; - - var options = { - defaultDeviceName: window.navigator.platform, - deviceName: vAPI.localStorage.getItem('deviceName') || '' - }; - - // This is used to find out a rough count of how many chunks exists: - // We "poll" at specific index in order to get a rough idea of how - // large is the stored string. - // This allows reading a single item with only 2 sync operations -- a - // good thing given chrome.storage.sync.MAX_WRITE_OPERATIONS_PER_MINUTE - // and chrome.storage.sync.MAX_WRITE_OPERATIONS_PER_HOUR. - - var getCoarseChunkCount = function(dataKey, callback) { - let bin = {}; - for ( let i = 0; i < maxChunkCountPerItem; i += 16 ) { - bin[dataKey + i.toString()] = ''; - } - - chrome.storage.sync.get(bin, function(bin) { - if ( chrome.runtime.lastError ) { - callback(0, chrome.runtime.lastError.message); - return; - } - - var chunkCount = 0; - for ( let i = 0; i < maxChunkCountPerItem; i += 16 ) { - if ( bin[dataKey + i.toString()] === '' ) { break; } - chunkCount = i + 16; - } - - callback(chunkCount); - }); - }; - - var deleteChunks = function(dataKey, start) { - var keys = []; - - // No point in deleting more than: - // - The max number of chunks per item - // - The max number of chunks per storage limit - var n = Math.min( - maxChunkCountPerItem, - Math.ceil(maxStorageSize / maxChunkSize) - ); - for ( var i = start; i < n; i++ ) { - keys.push(dataKey + i.toString()); - } - chrome.storage.sync.remove(keys); - }; - - var start = function(/* dataKeys */) { - }; - - var push = function(dataKey, data, callback) { - - var bin = { - 'source': options.deviceName || options.defaultDeviceName, - 'tstamp': Date.now(), - 'data': data, - 'size': 0 - }; - bin.size = JSON.stringify(bin).length; - var item = JSON.stringify(bin); - - // Chunkify taking into account QUOTA_BYTES_PER_ITEM: - // https://developer.chrome.com/extensions/storage#property-sync - // "The maximum size (in bytes) of each individual item in sync - // "storage, as measured by the JSON stringification of its value - // "plus its key length." - bin = {}; - var chunkCount = Math.ceil(item.length / maxChunkSize); - for ( var i = 0; i < chunkCount; i++ ) { - bin[dataKey + i.toString()] = item.substr(i * maxChunkSize, maxChunkSize); - } - bin[dataKey + i.toString()] = ''; // Sentinel - - chrome.storage.sync.set(bin, function() { - var errorStr; - if ( chrome.runtime.lastError ) { - errorStr = chrome.runtime.lastError.message; - // https://github.com/gorhill/uBlock/issues/3006#issuecomment-332597677 - // - Delete all that was pushed in case of failure. - chunkCount = 0; - } - callback(errorStr); - - // Remove potentially unused trailing chunks - deleteChunks(dataKey, chunkCount); - }); - }; - - var pull = function(dataKey, callback) { - - var assembleChunks = function(bin) { - if ( chrome.runtime.lastError ) { - callback(null, chrome.runtime.lastError.message); - return; - } - - // Assemble chunks into a single string. - let json = [], jsonSlice; - let i = 0; - for (;;) { - jsonSlice = bin[dataKey + i.toString()]; - if ( jsonSlice === '' || jsonSlice === undefined ) { break; } - json.push(jsonSlice); - i += 1; - } - - let entry = null; - try { - entry = JSON.parse(json.join('')); - } catch(ex) { - } - callback(entry); - }; - - var fetchChunks = function(coarseCount, errorStr) { - if ( coarseCount === 0 || typeof errorStr === 'string' ) { - callback(null, errorStr); - return; - } - - var bin = {}; - for ( var i = 0; i < coarseCount; i++ ) { - bin[dataKey + i.toString()] = ''; - } - - chrome.storage.sync.get(bin, assembleChunks); - }; - - getCoarseChunkCount(dataKey, fetchChunks); - }; - - var getOptions = function(callback) { - if ( typeof callback !== 'function' ) { - return; - } - callback(options); - }; - - var setOptions = function(details, callback) { - if ( typeof details !== 'object' || details === null ) { - return; - } - - if ( typeof details.deviceName === 'string' ) { - vAPI.localStorage.setItem('deviceName', details.deviceName); - options.deviceName = details.deviceName; - } - - getOptions(callback); - }; - - return { - start: start, - push: push, - pull: pull, - getOptions: getOptions, - setOptions: setOptions - }; -})(); - -/******************************************************************************/ -/******************************************************************************/ - -})(); - -/******************************************************************************/ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/vapi-client.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/vapi-client.js deleted file mode 100644 index 31faa0b..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/vapi-client.js +++ /dev/null @@ -1,253 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to block requests. - Copyright (C) 2014-2018 The uMatrix/uBlock Origin authors - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -// For non background pages - -'use strict'; - -/******************************************************************************/ - -(function(self) { - -/******************************************************************************/ - -// https://bugs.chromium.org/p/project-zero/issues/detail?id=1225&desc=6#c10 -if ( self.vAPI === undefined || self.vAPI.uMatrix !== true ) { - self.vAPI = { uMatrix: true }; -} - -var vAPI = self.vAPI; -var chrome = self.chrome; - -// https://github.com/chrisaljoudi/uBlock/issues/456 -// Already injected? -if ( vAPI.vapiClientInjected ) { - //console.debug('vapi-client.js already injected: skipping.'); - return; -} -vAPI.vapiClientInjected = true; - -vAPI.sessionId = String.fromCharCode(Date.now() % 26 + 97) + - Math.random().toString(36).slice(2); - -/******************************************************************************/ - -vAPI.shutdown = (function() { - var jobs = []; - - var add = function(job) { - jobs.push(job); - }; - - var exec = function() { - //console.debug('Shutting down...'); - var job; - while ( (job = jobs.pop()) ) { - job(); - } - }; - - return { - add: add, - exec: exec - }; -})(); - -/******************************************************************************/ - -vAPI.messaging = { - port: null, - portTimer: null, - portTimerDelay: 10000, - listeners: new Set(), - pending: new Map(), - auxProcessId: 1, - shuttingDown: false, - - shutdown: function() { - this.shuttingDown = true; - this.destroyPort(); - }, - - disconnectListener: function() { - this.port = null; - vAPI.shutdown.exec(); - }, - disconnectListenerBound: null, - - messageListener: function(details) { - if ( !details ) { return; } - - // Sent to all listeners - if ( details.broadcast ) { - this.sendToListeners(details.msg); - return; - } - - // Response to specific message previously sent - var listener; - if ( details.auxProcessId ) { - listener = this.pending.get(details.auxProcessId); - if ( listener !== undefined ) { - this.pending.delete(details.auxProcessId); - listener(details.msg); - return; - } - } - }, - messageListenerCallback: null, - - portPoller: function() { - this.portTimer = null; - if ( - this.port !== null && - this.listeners.size === 0 && - this.pending.size === 0 - ) { - return this.destroyPort(); - } - this.portTimer = vAPI.setTimeout(this.portPollerBound, this.portTimerDelay); - this.portTimerDelay = Math.min(this.portTimerDelay * 2, 60 * 60 * 1000); - }, - portPollerBound: null, - - destroyPort: function() { - if ( this.portTimer !== null ) { - clearTimeout(this.portTimer); - this.portTimer = null; - } - var port = this.port; - if ( port !== null ) { - port.disconnect(); - port.onMessage.removeListener(this.messageListenerCallback); - port.onDisconnect.removeListener(this.disconnectListenerBound); - this.port = null; - } - this.listeners.clear(); - // service pending callbacks - if ( this.pending.size !== 0 ) { - var pending = this.pending; - this.pending = new Map(); - for ( var callback of pending.values() ) { - if ( typeof callback === 'function' ) { - callback(null); - } - } - } - }, - - createPort: function() { - if ( this.shuttingDown ) { return null; } - if ( this.messageListenerCallback === null ) { - this.messageListenerCallback = this.messageListener.bind(this); - this.disconnectListenerBound = this.disconnectListener.bind(this); - this.portPollerBound = this.portPoller.bind(this); - } - try { - this.port = chrome.runtime.connect({name: vAPI.sessionId}) || null; - } catch (ex) { - this.port = null; - } - if ( this.port !== null ) { - this.port.onMessage.addListener(this.messageListenerCallback); - this.port.onDisconnect.addListener(this.disconnectListenerBound); - this.portTimerDelay = 10000; - if ( this.portTimer === null ) { - this.portTimer = vAPI.setTimeout( - this.portPollerBound, - this.portTimerDelay - ); - } - } - return this.port; - }, - - getPort: function() { - return this.port !== null ? this.port : this.createPort(); - }, - - send: function(channelName, message, callback) { - // Too large a gap between the last request and the last response means - // the main process is no longer reachable: memory leaks and bad - // performance become a risk -- especially for long-lived, dynamic - // pages. Guard against this. - if ( this.pending.size > 25 ) { - vAPI.shutdown.exec(); - } - var port = this.getPort(); - if ( port === null ) { - if ( typeof callback === 'function' ) { callback(); } - return; - } - var auxProcessId; - if ( callback ) { - auxProcessId = this.auxProcessId++; - this.pending.set(auxProcessId, callback); - } - port.postMessage({ - channelName: channelName, - auxProcessId: auxProcessId, - msg: message - }); - }, - - addListener: function(listener) { - this.listeners.add(listener); - this.getPort(); - }, - - removeListener: function(listener) { - this.listeners.delete(listener); - }, - - removeAllListeners: function() { - this.listeners.clear(); - }, - - sendToListeners: function(msg) { - for ( var listener of this.listeners ) { - listener(msg); - } - } -}; - -/******************************************************************************/ - -// No need to have vAPI client linger around after shutdown if -// we are not a top window (because element picker can still -// be injected in top window). -if ( window !== window.top ) { - vAPI.shutdown.add(function() { - vAPI = null; - }); -} - -/******************************************************************************/ - -vAPI.setTimeout = vAPI.setTimeout || function(callback, delay) { - setTimeout(function() { callback(); }, delay); -}; - -/******************************************************************************/ - -})(this); // jshint ignore: line - -/******************************************************************************/ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/vapi-common.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/vapi-common.js deleted file mode 100644 index 659a5d4..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/vapi-common.js +++ /dev/null @@ -1,214 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to black/white list requests. - Copyright (C) 2014-present The uMatrix/uBlock Origin authors - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -// For background page or non-background pages - -'use strict'; - -/******************************************************************************/ - -if ( self.browser instanceof Object ) { - self.chrome = self.browser; -} else { - self.browser = self.chrome; -} - -/******************************************************************************/ -/******************************************************************************/ - -(function(self) { - -/******************************************************************************/ - -// https://bugs.chromium.org/p/project-zero/issues/detail?id=1225&desc=6#c10 -if ( self.vAPI === undefined || self.vAPI.uMatrix !== true ) { - self.vAPI = { uMatrix: true }; -} - -var vAPI = self.vAPI; -var chrome = self.chrome; - -/******************************************************************************/ - -vAPI.setTimeout = vAPI.setTimeout || window.setTimeout.bind(window); - -/******************************************************************************/ - -vAPI.webextFlavor = { - major: 0, - soup: new Set() -}; - -(function() { - var ua = navigator.userAgent, - flavor = vAPI.webextFlavor, - soup = flavor.soup; - var dispatch = function() { - window.dispatchEvent(new CustomEvent('webextFlavor')); - }; - - // This is always true. - soup.add('ublock'); - - if ( /\bMobile\b/.test(ua) ) { - soup.add('mobile'); - } - - // Asynchronous - var async = self.browser instanceof Object && - typeof self.browser.runtime.getBrowserInfo === 'function'; - if ( async ) { - self.browser.runtime.getBrowserInfo().then(function(info) { - flavor.major = parseInt(info.version, 10) || 0; - soup.add(info.vendor.toLowerCase()) - .add(info.name.toLowerCase()); - if ( flavor.major >= 53 ) { soup.add('user_stylesheet'); } - if ( flavor.major >= 57 ) { soup.add('html_filtering'); } - dispatch(); - }); - } - - // Synchronous - var match = /Firefox\/([\d.]+)/.exec(ua); - if ( match !== null ) { - flavor.major = parseInt(match[1], 10) || 0; - soup.add('mozilla') - .add('firefox'); - if ( flavor.major >= 53 ) { soup.add('user_stylesheet'); } - if ( flavor.major >= 57 ) { soup.add('html_filtering'); } - } else { - match = /OPR\/([\d.]+)/.exec(ua); - if ( match !== null ) { - var reEx = /Chrom(?:e|ium)\/([\d.]+)/; - if ( reEx.test(ua) ) { match = reEx.exec(ua); } - flavor.major = parseInt(match[1], 10) || 0; - soup.add('opera').add('chromium'); - } else { - match = /Chromium\/([\d.]+)/.exec(ua); - if ( match !== null ) { - flavor.major = parseInt(match[1], 10) || 0; - soup.add('chromium'); - } else { - match = /Chrome\/([\d.]+)/.exec(ua); - if ( match !== null ) { - flavor.major = parseInt(match[1], 10) || 0; - soup.add('google').add('chromium'); - } - } - } - // https://github.com/gorhill/uBlock/issues/3588 - if ( soup.has('chromium') && flavor.major >= 67 ) { - soup.add('user_stylesheet'); - } - } - - // Don't starve potential listeners - if ( !async ) { - vAPI.setTimeout(dispatch, 97); - } -})(); - -/******************************************************************************/ - -// http://www.w3.org/International/questions/qa-scripts#directions - -var setScriptDirection = function(language) { - document.body.setAttribute( - 'dir', - ['ar', 'he', 'fa', 'ps', 'ur'].indexOf(language) !== -1 ? 'rtl' : 'ltr' - ); -}; - -/******************************************************************************/ - -vAPI.download = function(details) { - if ( !details.url ) { - return; - } - - var a = document.createElement('a'); - a.href = details.url; - a.setAttribute('download', details.filename || ''); - a.dispatchEvent(new MouseEvent('click')); -}; - -/******************************************************************************/ - -vAPI.getURL = chrome.runtime.getURL; - -/******************************************************************************/ - -vAPI.i18n = chrome.i18n.getMessage; - -setScriptDirection(vAPI.i18n('@@ui_locale')); - -/******************************************************************************/ - -vAPI.closePopup = function() { - window.close(); -}; - -/******************************************************************************/ - -// A localStorage-like object which should be accessible from the -// background page or auxiliary pages. -// This storage is optional, but it is nice to have, for a more polished user -// experience. - -// https://github.com/gorhill/uBlock/issues/2824 -// Use a dummy localStorage if for some reasons it's not available. - -// https://github.com/gorhill/uMatrix/issues/840 -// Always use a wrapper to seamlessly handle exceptions - -vAPI.localStorage = { - clear: function() { - try { - window.localStorage.clear(); - } catch(ex) { - } - }, - getItem: function(key) { - try { - return window.localStorage.getItem(key); - } catch(ex) { - } - return null; - }, - removeItem: function(key) { - try { - window.localStorage.removeItem(key); - } catch(ex) { - } - }, - setItem: function(key, value) { - try { - window.localStorage.setItem(key, value); - } catch(ex) { - } - } -}; - -/******************************************************************************/ - -})(this); - -/******************************************************************************/ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/vapi-webrequest.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/vapi-webrequest.js deleted file mode 100644 index 034a1ec..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/js/vapi-webrequest.js +++ /dev/null @@ -1,198 +0,0 @@ -/******************************************************************************* - - uMatrix - a browser extension to block requests. - Copyright (C) 2017-present Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - - Home: https://github.com/gorhill/uMatrix -*/ - -// For background page - -'use strict'; - -/******************************************************************************/ - -(function() { - const extToTypeMap = new Map([ - ['eot','font'],['otf','font'],['svg','font'],['ttf','font'],['woff','font'],['woff2','font'], - ['mp3','media'],['mp4','media'],['webm','media'], - ['gif','image'],['ico','image'],['jpeg','image'],['jpg','image'],['png','image'],['webp','image'] - ]); - - // https://www.reddit.com/r/uBlockOrigin/comments/9vcrk3/bug_in_ubo_1173_betas_when_saving_files_hosted_on/ - // Some types can be mapped from 'other', thus include 'other' if and - // only if the caller is interested in at least one of those types. - const denormalizeTypes = function(aa) { - if ( aa.length === 0 ) { - return Array.from(vAPI.net.validTypes); - } - const out = new Set(); - let i = aa.length; - while ( i-- ) { - const type = aa[i]; - if ( vAPI.net.validTypes.has(type) ) { - out.add(type); - } - } - if ( out.has('other') === false ) { - for ( const type of extToTypeMap.values() ) { - if ( out.has(type) ) { - out.add('other'); - break; - } - } - } - return Array.from(out); - }; - - const headerValue = function(headers, name) { - let i = headers.length; - while ( i-- ) { - if ( headers[i].name.toLowerCase() === name ) { - return headers[i].value.trim(); - } - } - return ''; - }; - - const parsedURL = new URL('https://www.example.org/'); - - vAPI.net.normalizeDetails = function(details) { - let type = details.type; - - // https://github.com/uBlockOrigin/uMatrix-issues/issues/156#issuecomment-494427094 - if ( type === 'main_frame' ) { - details.documentUrl = details.url; - } - // Chromium 63+ supports the `initiator` property, which contains - // the URL of the origin from which the network request was made. - else if ( - typeof details.initiator === 'string' && - details.initiator !== 'null' - ) { - details.documentUrl = details.initiator; - } - - // https://github.com/gorhill/uBlock/issues/1493 - // Chromium 49+/WebExtensions support a new request type: `ping`, - // which is fired as a result of using `navigator.sendBeacon`. - if ( type === 'ping' ) { - details.type = 'beacon'; - return; - } - - if ( type === 'imageset' ) { - details.type = 'image'; - return; - } - - // The rest of the function code is to normalize type - if ( type !== 'other' ) { return; } - - // Try to map known "extension" part of URL to request type. - parsedURL.href = details.url; - const path = parsedURL.pathname, - pos = path.indexOf('.', path.length - 6); - if ( pos !== -1 && (type = extToTypeMap.get(path.slice(pos + 1))) ) { - details.type = type; - return; - } - - // Try to extract type from response headers if present. - if ( details.responseHeaders ) { - type = headerValue(details.responseHeaders, 'content-type'); - if ( type.startsWith('font/') ) { - details.type = 'font'; - return; - } - if ( type.startsWith('image/') ) { - details.type = 'image'; - return; - } - if ( type.startsWith('audio/') || type.startsWith('video/') ) { - details.type = 'media'; - return; - } - } - }; - - vAPI.net.denormalizeFilters = function(filters) { - const urls = filters.urls || [ '' ]; - let types = filters.types; - if ( Array.isArray(types) ) { - types = denormalizeTypes(types); - } - if ( - (vAPI.net.validTypes.has('websocket')) && - (types === undefined || types.indexOf('websocket') !== -1) && - (urls.indexOf('') === -1) - ) { - if ( urls.indexOf('ws://*/*') === -1 ) { - urls.push('ws://*/*'); - } - if ( urls.indexOf('wss://*/*') === -1 ) { - urls.push('wss://*/*'); - } - } - return { types, urls }; - }; -})(); - -/******************************************************************************/ - -// https://github.com/gorhill/uBlock/issues/2067 -// Experimental: Block everything until uBO is fully ready. - -vAPI.net.onBeforeReady = (function() { - let pendings; - - const handler = function(details) { - if ( pendings === undefined ) { return; } - if ( details.tabId < 0 ) { return; } - - pendings.add(details.tabId); - - //console.log(`Aborting tab ${details.tabId}: ${details.type} ${details.url}`); - - return { cancel: true }; - }; - - return { - experimental: true, - start: function() { - pendings = new Set(); - browser.webRequest.onBeforeRequest.addListener( - handler, - { urls: [ 'http://*/*', 'https://*/*' ] }, - [ 'blocking' ] - ); - }, - // https://github.com/gorhill/uBlock/issues/2067 - // Force-reload tabs for which network requests were blocked - // during launch. This can happen only if tabs were "suspended". - stop: function() { - if ( pendings === undefined ) { return; } - browser.webRequest.onBeforeRequest.removeListener(handler); - for ( const tabId of pendings ) { - //console.log(`Reloading tab ${tabId}`); - vAPI.tabs.reload(tabId); - } - pendings = undefined; - }, - }; -})(); - -/******************************************************************************/ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/LICENSE b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/LICENSE deleted file mode 100644 index ff7db4b..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (C) 2017 by Marijn Haverbeke and others - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/README.md b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/README.md deleted file mode 100644 index 8bc6c93..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/README.md +++ /dev/null @@ -1,49 +0,0 @@ -# CodeMirror - -[![Build Status](https://travis-ci.org/codemirror/CodeMirror.svg)](https://travis-ci.org/codemirror/CodeMirror) -[![NPM version](https://img.shields.io/npm/v/codemirror.svg)](https://www.npmjs.org/package/codemirror) -[![Join the chat at https://gitter.im/codemirror/CodeMirror](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/codemirror/CodeMirror) -[Funding status: ![maintainer happiness](https://marijnhaverbeke.nl/fund/status_s.png?again)](https://marijnhaverbeke.nl/fund/) - -CodeMirror is a versatile text editor implemented in JavaScript for -the browser. It is specialized for editing code, and comes with over -100 language modes and various addons that implement more advanced -editing functionality. Every language comes with fully-featured code -and syntax highlighting to help with reading and editing complex code. - -A rich programming API and a CSS theming system are available for -customizing CodeMirror to fit your application, and extending it with -new functionality. - -You can find more information (and the -[manual](https://codemirror.net/doc/manual.html)) on the [project -page](https://codemirror.net). For questions and discussion, use the -[discussion forum](https://discuss.codemirror.net/). - -See -[CONTRIBUTING.md](https://github.com/codemirror/CodeMirror/blob/master/CONTRIBUTING.md) -for contributing guidelines. - -The CodeMirror community aims to be welcoming to everybody. We use the -[Contributor Covenant -(1.1)](http://contributor-covenant.org/version/1/1/0/) as our code of -conduct. - -### Installation - -Either get the [zip file](https://codemirror.net/codemirror.zip) with -the latest version, or make sure you have [Node](https://nodejs.org/) -installed and run: - - npm install codemirror - -**NOTE**: This is the source repository for the library, and not the -distribution channel. Cloning it is not the recommended way to install -the library, and will in fact not work unless you also run the build -step. - -### Quickstart - -To build the project, make sure you have Node.js installed (at least version 6) -and then `npm install`. To run, just open `index.html` in your -browser (you don't need to run a webserver). Run the tests with `npm test`. diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/addon/merge/merge.css b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/addon/merge/merge.css deleted file mode 100644 index dadd7f5..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/addon/merge/merge.css +++ /dev/null @@ -1,119 +0,0 @@ -.CodeMirror-merge { - position: relative; - border: 1px solid #ddd; - white-space: pre; -} - -.CodeMirror-merge, .CodeMirror-merge .CodeMirror { - height: 350px; -} - -.CodeMirror-merge-2pane .CodeMirror-merge-pane { width: 47%; } -.CodeMirror-merge-2pane .CodeMirror-merge-gap { width: 6%; } -.CodeMirror-merge-3pane .CodeMirror-merge-pane { width: 31%; } -.CodeMirror-merge-3pane .CodeMirror-merge-gap { width: 3.5%; } - -.CodeMirror-merge-pane { - display: inline-block; - white-space: normal; - vertical-align: top; -} -.CodeMirror-merge-pane-rightmost { - position: absolute; - right: 0px; - z-index: 1; -} - -.CodeMirror-merge-gap { - z-index: 2; - display: inline-block; - height: 100%; - -moz-box-sizing: border-box; - box-sizing: border-box; - overflow: hidden; - border-left: 1px solid #ddd; - border-right: 1px solid #ddd; - position: relative; - background: #f8f8f8; -} - -.CodeMirror-merge-scrolllock-wrap { - position: absolute; - bottom: 0; left: 50%; -} -.CodeMirror-merge-scrolllock { - position: relative; - left: -50%; - cursor: pointer; - color: #555; - line-height: 1; -} -.CodeMirror-merge-scrolllock:after { - content: "\21db\00a0\00a0\21da"; -} -.CodeMirror-merge-scrolllock.CodeMirror-merge-scrolllock-enabled:after { - content: "\21db\21da"; -} - -.CodeMirror-merge-copybuttons-left, .CodeMirror-merge-copybuttons-right { - position: absolute; - left: 0; top: 0; - right: 0; bottom: 0; - line-height: 1; -} - -.CodeMirror-merge-copy { - position: absolute; - cursor: pointer; - color: #44c; - z-index: 3; -} - -.CodeMirror-merge-copy-reverse { - position: absolute; - cursor: pointer; - color: #44c; -} - -.CodeMirror-merge-copybuttons-left .CodeMirror-merge-copy { left: 2px; } -.CodeMirror-merge-copybuttons-right .CodeMirror-merge-copy { right: 2px; } - -.CodeMirror-merge-r-inserted, .CodeMirror-merge-l-inserted { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVQI12MwuCXy3+CWyH8GBgYGJgYkAABZbAQ9ELXurwAAAABJRU5ErkJggg==); - background-position: bottom left; - background-repeat: repeat-x; -} - -.CodeMirror-merge-r-deleted, .CodeMirror-merge-l-deleted { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAACCAYAAACddGYaAAAAGUlEQVQI12M4Kyb2/6yY2H8GBgYGJgYkAABURgPz6Ks7wQAAAABJRU5ErkJggg==); - background-position: bottom left; - background-repeat: repeat-x; -} - -.CodeMirror-merge-r-chunk { background: #ffffe0; } -.CodeMirror-merge-r-chunk-start { border-top: 1px solid #ee8; } -.CodeMirror-merge-r-chunk-end { border-bottom: 1px solid #ee8; } -.CodeMirror-merge-r-connect { fill: #ffffe0; stroke: #ee8; stroke-width: 1px; } - -.CodeMirror-merge-l-chunk { background: #eef; } -.CodeMirror-merge-l-chunk-start { border-top: 1px solid #88e; } -.CodeMirror-merge-l-chunk-end { border-bottom: 1px solid #88e; } -.CodeMirror-merge-l-connect { fill: #eef; stroke: #88e; stroke-width: 1px; } - -.CodeMirror-merge-l-chunk.CodeMirror-merge-r-chunk { background: #dfd; } -.CodeMirror-merge-l-chunk-start.CodeMirror-merge-r-chunk-start { border-top: 1px solid #4e4; } -.CodeMirror-merge-l-chunk-end.CodeMirror-merge-r-chunk-end { border-bottom: 1px solid #4e4; } - -.CodeMirror-merge-collapsed-widget:before { - content: "(...)"; -} -.CodeMirror-merge-collapsed-widget { - cursor: pointer; - color: #88b; - background: #eef; - border: 1px solid #ddf; - font-size: 90%; - padding: 0 3px; - border-radius: 4px; -} -.CodeMirror-merge-collapsed-line .CodeMirror-gutter-elt { display: none; } diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/addon/merge/merge.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/addon/merge/merge.js deleted file mode 100644 index 63373f7..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/addon/merge/merge.js +++ /dev/null @@ -1,1002 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE - -// declare global: diff_match_patch, DIFF_INSERT, DIFF_DELETE, DIFF_EQUAL - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); // Note non-packaged dependency diff_match_patch - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror", "diff_match_patch"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - var Pos = CodeMirror.Pos; - var svgNS = "http://www.w3.org/2000/svg"; - - function DiffView(mv, type) { - this.mv = mv; - this.type = type; - this.classes = type == "left" - ? {chunk: "CodeMirror-merge-l-chunk", - start: "CodeMirror-merge-l-chunk-start", - end: "CodeMirror-merge-l-chunk-end", - insert: "CodeMirror-merge-l-inserted", - del: "CodeMirror-merge-l-deleted", - connect: "CodeMirror-merge-l-connect"} - : {chunk: "CodeMirror-merge-r-chunk", - start: "CodeMirror-merge-r-chunk-start", - end: "CodeMirror-merge-r-chunk-end", - insert: "CodeMirror-merge-r-inserted", - del: "CodeMirror-merge-r-deleted", - connect: "CodeMirror-merge-r-connect"}; - } - - DiffView.prototype = { - constructor: DiffView, - init: function(pane, orig, options) { - this.edit = this.mv.edit; - ;(this.edit.state.diffViews || (this.edit.state.diffViews = [])).push(this); - this.orig = CodeMirror(pane, copyObj({value: orig, readOnly: !this.mv.options.allowEditingOriginals}, copyObj(options))); - if (this.mv.options.connect == "align") { - if (!this.edit.state.trackAlignable) this.edit.state.trackAlignable = new TrackAlignable(this.edit) - this.orig.state.trackAlignable = new TrackAlignable(this.orig) - } - this.lockButton.title = this.edit.phrase("Toggle locked scrolling"); - - this.orig.state.diffViews = [this]; - var classLocation = options.chunkClassLocation || "background"; - if (Object.prototype.toString.call(classLocation) != "[object Array]") classLocation = [classLocation] - this.classes.classLocation = classLocation - - this.diff = getDiff(asString(orig), asString(options.value), this.mv.options.ignoreWhitespace); - this.chunks = getChunks(this.diff); - this.diffOutOfDate = this.dealigned = false; - this.needsScrollSync = null - - this.showDifferences = options.showDifferences !== false; - }, - registerEvents: function(otherDv) { - this.forceUpdate = registerUpdate(this); - setScrollLock(this, true, false); - registerScroll(this, otherDv); - }, - setShowDifferences: function(val) { - val = val !== false; - if (val != this.showDifferences) { - this.showDifferences = val; - this.forceUpdate("full"); - } - } - }; - - function ensureDiff(dv) { - if (dv.diffOutOfDate) { - dv.diff = getDiff(dv.orig.getValue(), dv.edit.getValue(), dv.mv.options.ignoreWhitespace); - dv.chunks = getChunks(dv.diff); - dv.diffOutOfDate = false; - CodeMirror.signal(dv.edit, "updateDiff", dv.diff); - } - } - - var updating = false; - function registerUpdate(dv) { - var edit = {from: 0, to: 0, marked: []}; - var orig = {from: 0, to: 0, marked: []}; - var debounceChange, updatingFast = false; - function update(mode) { - updating = true; - updatingFast = false; - if (mode == "full") { - if (dv.svg) clear(dv.svg); - if (dv.copyButtons) clear(dv.copyButtons); - clearMarks(dv.edit, edit.marked, dv.classes); - clearMarks(dv.orig, orig.marked, dv.classes); - edit.from = edit.to = orig.from = orig.to = 0; - } - ensureDiff(dv); - if (dv.showDifferences) { - updateMarks(dv.edit, dv.diff, edit, DIFF_INSERT, dv.classes); - updateMarks(dv.orig, dv.diff, orig, DIFF_DELETE, dv.classes); - } - - if (dv.mv.options.connect == "align") - alignChunks(dv); - makeConnections(dv); - if (dv.needsScrollSync != null) syncScroll(dv, dv.needsScrollSync) - - updating = false; - } - function setDealign(fast) { - if (updating) return; - dv.dealigned = true; - set(fast); - } - function set(fast) { - if (updating || updatingFast) return; - clearTimeout(debounceChange); - if (fast === true) updatingFast = true; - debounceChange = setTimeout(update, fast === true ? 20 : 250); - } - function change(_cm, change) { - if (!dv.diffOutOfDate) { - dv.diffOutOfDate = true; - edit.from = edit.to = orig.from = orig.to = 0; - } - // Update faster when a line was added/removed - setDealign(change.text.length - 1 != change.to.line - change.from.line); - } - function swapDoc() { - dv.diffOutOfDate = true; - dv.dealigned = true; - update("full"); - } - dv.edit.on("change", change); - dv.orig.on("change", change); - dv.edit.on("swapDoc", swapDoc); - dv.orig.on("swapDoc", swapDoc); - if (dv.mv.options.connect == "align") { - CodeMirror.on(dv.edit.state.trackAlignable, "realign", setDealign) - CodeMirror.on(dv.orig.state.trackAlignable, "realign", setDealign) - } - dv.edit.on("viewportChange", function() { set(false); }); - dv.orig.on("viewportChange", function() { set(false); }); - update(); - return update; - } - - function registerScroll(dv, otherDv) { - dv.edit.on("scroll", function() { - syncScroll(dv, true) && makeConnections(dv); - }); - dv.orig.on("scroll", function() { - syncScroll(dv, false) && makeConnections(dv); - if (otherDv) syncScroll(otherDv, true) && makeConnections(otherDv); - }); - } - - function syncScroll(dv, toOrig) { - // Change handler will do a refresh after a timeout when diff is out of date - if (dv.diffOutOfDate) { - if (dv.lockScroll && dv.needsScrollSync == null) dv.needsScrollSync = toOrig - return false - } - dv.needsScrollSync = null - if (!dv.lockScroll) return true; - var editor, other, now = +new Date; - if (toOrig) { editor = dv.edit; other = dv.orig; } - else { editor = dv.orig; other = dv.edit; } - // Don't take action if the position of this editor was recently set - // (to prevent feedback loops) - if (editor.state.scrollSetBy == dv && (editor.state.scrollSetAt || 0) + 250 > now) return false; - - var sInfo = editor.getScrollInfo(); - if (dv.mv.options.connect == "align") { - targetPos = sInfo.top; - } else { - var halfScreen = .5 * sInfo.clientHeight, midY = sInfo.top + halfScreen; - var mid = editor.lineAtHeight(midY, "local"); - var around = chunkBoundariesAround(dv.chunks, mid, toOrig); - var off = getOffsets(editor, toOrig ? around.edit : around.orig); - var offOther = getOffsets(other, toOrig ? around.orig : around.edit); - var ratio = (midY - off.top) / (off.bot - off.top); - var targetPos = (offOther.top - halfScreen) + ratio * (offOther.bot - offOther.top); - - var botDist, mix; - // Some careful tweaking to make sure no space is left out of view - // when scrolling to top or bottom. - if (targetPos > sInfo.top && (mix = sInfo.top / halfScreen) < 1) { - targetPos = targetPos * mix + sInfo.top * (1 - mix); - } else if ((botDist = sInfo.height - sInfo.clientHeight - sInfo.top) < halfScreen) { - var otherInfo = other.getScrollInfo(); - var botDistOther = otherInfo.height - otherInfo.clientHeight - targetPos; - if (botDistOther > botDist && (mix = botDist / halfScreen) < 1) - targetPos = targetPos * mix + (otherInfo.height - otherInfo.clientHeight - botDist) * (1 - mix); - } - } - - other.scrollTo(sInfo.left, targetPos); - other.state.scrollSetAt = now; - other.state.scrollSetBy = dv; - return true; - } - - function getOffsets(editor, around) { - var bot = around.after; - if (bot == null) bot = editor.lastLine() + 1; - return {top: editor.heightAtLine(around.before || 0, "local"), - bot: editor.heightAtLine(bot, "local")}; - } - - function setScrollLock(dv, val, action) { - dv.lockScroll = val; - if (val && action != false) syncScroll(dv, DIFF_INSERT) && makeConnections(dv); - (val ? CodeMirror.addClass : CodeMirror.rmClass)(dv.lockButton, "CodeMirror-merge-scrolllock-enabled"); - } - - // Updating the marks for editor content - - function removeClass(editor, line, classes) { - var locs = classes.classLocation - for (var i = 0; i < locs.length; i++) { - editor.removeLineClass(line, locs[i], classes.chunk); - editor.removeLineClass(line, locs[i], classes.start); - editor.removeLineClass(line, locs[i], classes.end); - } - } - - function clearMarks(editor, arr, classes) { - for (var i = 0; i < arr.length; ++i) { - var mark = arr[i]; - if (mark instanceof CodeMirror.TextMarker) - mark.clear(); - else if (mark.parent) - removeClass(editor, mark, classes); - } - arr.length = 0; - } - - // FIXME maybe add a margin around viewport to prevent too many updates - function updateMarks(editor, diff, state, type, classes) { - var vp = editor.getViewport(); - editor.operation(function() { - if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) { - clearMarks(editor, state.marked, classes); - markChanges(editor, diff, type, state.marked, vp.from, vp.to, classes); - state.from = vp.from; state.to = vp.to; - } else { - if (vp.from < state.from) { - markChanges(editor, diff, type, state.marked, vp.from, state.from, classes); - state.from = vp.from; - } - if (vp.to > state.to) { - markChanges(editor, diff, type, state.marked, state.to, vp.to, classes); - state.to = vp.to; - } - } - }); - } - - function addClass(editor, lineNr, classes, main, start, end) { - var locs = classes.classLocation, line = editor.getLineHandle(lineNr); - for (var i = 0; i < locs.length; i++) { - if (main) editor.addLineClass(line, locs[i], classes.chunk); - if (start) editor.addLineClass(line, locs[i], classes.start); - if (end) editor.addLineClass(line, locs[i], classes.end); - } - return line; - } - - function markChanges(editor, diff, type, marks, from, to, classes) { - var pos = Pos(0, 0); - var top = Pos(from, 0), bot = editor.clipPos(Pos(to - 1)); - var cls = type == DIFF_DELETE ? classes.del : classes.insert; - function markChunk(start, end) { - var bfrom = Math.max(from, start), bto = Math.min(to, end); - for (var i = bfrom; i < bto; ++i) - marks.push(addClass(editor, i, classes, true, i == start, i == end - 1)); - // When the chunk is empty, make sure a horizontal line shows up - if (start == end && bfrom == end && bto == end) { - if (bfrom) - marks.push(addClass(editor, bfrom - 1, classes, false, false, true)); - else - marks.push(addClass(editor, bfrom, classes, false, true, false)); - } - } - - var chunkStart = 0, pending = false; - for (var i = 0; i < diff.length; ++i) { - var part = diff[i], tp = part[0], str = part[1]; - if (tp == DIFF_EQUAL) { - var cleanFrom = pos.line + (startOfLineClean(diff, i) ? 0 : 1); - moveOver(pos, str); - var cleanTo = pos.line + (endOfLineClean(diff, i) ? 1 : 0); - if (cleanTo > cleanFrom) { - if (pending) { markChunk(chunkStart, cleanFrom); pending = false } - chunkStart = cleanTo; - } - } else { - pending = true - if (tp == type) { - var end = moveOver(pos, str, true); - var a = posMax(top, pos), b = posMin(bot, end); - if (!posEq(a, b)) - marks.push(editor.markText(a, b, {className: cls})); - pos = end; - } - } - } - if (pending) markChunk(chunkStart, pos.line + 1); - } - - // Updating the gap between editor and original - - function makeConnections(dv) { - if (!dv.showDifferences) return; - - if (dv.svg) { - clear(dv.svg); - var w = dv.gap.offsetWidth; - attrs(dv.svg, "width", w, "height", dv.gap.offsetHeight); - } - if (dv.copyButtons) clear(dv.copyButtons); - - var vpEdit = dv.edit.getViewport(), vpOrig = dv.orig.getViewport(); - var outerTop = dv.mv.wrap.getBoundingClientRect().top - var sTopEdit = outerTop - dv.edit.getScrollerElement().getBoundingClientRect().top + dv.edit.getScrollInfo().top - var sTopOrig = outerTop - dv.orig.getScrollerElement().getBoundingClientRect().top + dv.orig.getScrollInfo().top; - for (var i = 0; i < dv.chunks.length; i++) { - var ch = dv.chunks[i]; - if (ch.editFrom <= vpEdit.to && ch.editTo >= vpEdit.from && - ch.origFrom <= vpOrig.to && ch.origTo >= vpOrig.from) - drawConnectorsForChunk(dv, ch, sTopOrig, sTopEdit, w); - } - } - - function getMatchingOrigLine(editLine, chunks) { - var editStart = 0, origStart = 0; - for (var i = 0; i < chunks.length; i++) { - var chunk = chunks[i]; - if (chunk.editTo > editLine && chunk.editFrom <= editLine) return null; - if (chunk.editFrom > editLine) break; - editStart = chunk.editTo; - origStart = chunk.origTo; - } - return origStart + (editLine - editStart); - } - - // Combines information about chunks and widgets/markers to return - // an array of lines, in a single editor, that probably need to be - // aligned with their counterparts in the editor next to it. - function alignableFor(cm, chunks, isOrig) { - var tracker = cm.state.trackAlignable - var start = cm.firstLine(), trackI = 0 - var result = [] - for (var i = 0;; i++) { - var chunk = chunks[i] - var chunkStart = !chunk ? 1e9 : isOrig ? chunk.origFrom : chunk.editFrom - for (; trackI < tracker.alignable.length; trackI += 2) { - var n = tracker.alignable[trackI] + 1 - if (n <= start) continue - if (n <= chunkStart) result.push(n) - else break - } - if (!chunk) break - result.push(start = isOrig ? chunk.origTo : chunk.editTo) - } - return result - } - - // Given information about alignable lines in two editors, fill in - // the result (an array of three-element arrays) to reflect the - // lines that need to be aligned with each other. - function mergeAlignable(result, origAlignable, chunks, setIndex) { - var rI = 0, origI = 0, chunkI = 0, diff = 0 - outer: for (;; rI++) { - var nextR = result[rI], nextO = origAlignable[origI] - if (!nextR && nextO == null) break - - var rLine = nextR ? nextR[0] : 1e9, oLine = nextO == null ? 1e9 : nextO - while (chunkI < chunks.length) { - var chunk = chunks[chunkI] - if (chunk.origFrom <= oLine && chunk.origTo > oLine) { - origI++ - rI-- - continue outer; - } - if (chunk.editTo > rLine) { - if (chunk.editFrom <= rLine) continue outer; - break - } - diff += (chunk.origTo - chunk.origFrom) - (chunk.editTo - chunk.editFrom) - chunkI++ - } - if (rLine == oLine - diff) { - nextR[setIndex] = oLine - origI++ - } else if (rLine < oLine - diff) { - nextR[setIndex] = rLine + diff - } else { - var record = [oLine - diff, null, null] - record[setIndex] = oLine - result.splice(rI, 0, record) - origI++ - } - } - } - - function findAlignedLines(dv, other) { - var alignable = alignableFor(dv.edit, dv.chunks, false), result = [] - if (other) for (var i = 0, j = 0; i < other.chunks.length; i++) { - var n = other.chunks[i].editTo - while (j < alignable.length && alignable[j] < n) j++ - if (j == alignable.length || alignable[j] != n) alignable.splice(j++, 0, n) - } - for (var i = 0; i < alignable.length; i++) - result.push([alignable[i], null, null]) - - mergeAlignable(result, alignableFor(dv.orig, dv.chunks, true), dv.chunks, 1) - if (other) - mergeAlignable(result, alignableFor(other.orig, other.chunks, true), other.chunks, 2) - - return result - } - - function alignChunks(dv, force) { - if (!dv.dealigned && !force) return; - if (!dv.orig.curOp) return dv.orig.operation(function() { - alignChunks(dv, force); - }); - - dv.dealigned = false; - var other = dv.mv.left == dv ? dv.mv.right : dv.mv.left; - if (other) { - ensureDiff(other); - other.dealigned = false; - } - var linesToAlign = findAlignedLines(dv, other); - - // Clear old aligners - var aligners = dv.mv.aligners; - for (var i = 0; i < aligners.length; i++) - aligners[i].clear(); - aligners.length = 0; - - var cm = [dv.edit, dv.orig], scroll = []; - if (other) cm.push(other.orig); - for (var i = 0; i < cm.length; i++) - scroll.push(cm[i].getScrollInfo().top); - - for (var ln = 0; ln < linesToAlign.length; ln++) - alignLines(cm, linesToAlign[ln], aligners); - - for (var i = 0; i < cm.length; i++) - cm[i].scrollTo(null, scroll[i]); - } - - function alignLines(cm, lines, aligners) { - var maxOffset = 0, offset = []; - for (var i = 0; i < cm.length; i++) if (lines[i] != null) { - var off = cm[i].heightAtLine(lines[i], "local"); - offset[i] = off; - maxOffset = Math.max(maxOffset, off); - } - for (var i = 0; i < cm.length; i++) if (lines[i] != null) { - var diff = maxOffset - offset[i]; - if (diff > 1) - aligners.push(padAbove(cm[i], lines[i], diff)); - } - } - - function padAbove(cm, line, size) { - var above = true; - if (line > cm.lastLine()) { - line--; - above = false; - } - var elt = document.createElement("div"); - elt.className = "CodeMirror-merge-spacer"; - elt.style.height = size + "px"; elt.style.minWidth = "1px"; - return cm.addLineWidget(line, elt, {height: size, above: above, mergeSpacer: true, handleMouseEvents: true}); - } - - function drawConnectorsForChunk(dv, chunk, sTopOrig, sTopEdit, w) { - var flip = dv.type == "left"; - var top = dv.orig.heightAtLine(chunk.origFrom, "local", true) - sTopOrig; - if (dv.svg) { - var topLpx = top; - var topRpx = dv.edit.heightAtLine(chunk.editFrom, "local", true) - sTopEdit; - if (flip) { var tmp = topLpx; topLpx = topRpx; topRpx = tmp; } - var botLpx = dv.orig.heightAtLine(chunk.origTo, "local", true) - sTopOrig; - var botRpx = dv.edit.heightAtLine(chunk.editTo, "local", true) - sTopEdit; - if (flip) { var tmp = botLpx; botLpx = botRpx; botRpx = tmp; } - var curveTop = " C " + w/2 + " " + topRpx + " " + w/2 + " " + topLpx + " " + (w + 2) + " " + topLpx; - var curveBot = " C " + w/2 + " " + botLpx + " " + w/2 + " " + botRpx + " -1 " + botRpx; - attrs(dv.svg.appendChild(document.createElementNS(svgNS, "path")), - "d", "M -1 " + topRpx + curveTop + " L " + (w + 2) + " " + botLpx + curveBot + " z", - "class", dv.classes.connect); - } - if (dv.copyButtons) { - var copy = dv.copyButtons.appendChild(elt("div", dv.type == "left" ? "\u21dd" : "\u21dc", - "CodeMirror-merge-copy")); - var editOriginals = dv.mv.options.allowEditingOriginals; - copy.title = dv.edit.phrase(editOriginals ? "Push to left" : "Revert chunk"); - copy.chunk = chunk; - copy.style.top = (chunk.origTo > chunk.origFrom ? top : dv.edit.heightAtLine(chunk.editFrom, "local") - sTopEdit) + "px"; - - if (editOriginals) { - var topReverse = dv.edit.heightAtLine(chunk.editFrom, "local") - sTopEdit; - var copyReverse = dv.copyButtons.appendChild(elt("div", dv.type == "right" ? "\u21dd" : "\u21dc", - "CodeMirror-merge-copy-reverse")); - copyReverse.title = "Push to right"; - copyReverse.chunk = {editFrom: chunk.origFrom, editTo: chunk.origTo, - origFrom: chunk.editFrom, origTo: chunk.editTo}; - copyReverse.style.top = topReverse + "px"; - dv.type == "right" ? copyReverse.style.left = "2px" : copyReverse.style.right = "2px"; - } - } - } - - function copyChunk(dv, to, from, chunk) { - if (dv.diffOutOfDate) return; - var origStart = chunk.origTo > from.lastLine() ? Pos(chunk.origFrom - 1) : Pos(chunk.origFrom, 0) - var origEnd = Pos(chunk.origTo, 0) - var editStart = chunk.editTo > to.lastLine() ? Pos(chunk.editFrom - 1) : Pos(chunk.editFrom, 0) - var editEnd = Pos(chunk.editTo, 0) - var handler = dv.mv.options.revertChunk - if (handler) - handler(dv.mv, from, origStart, origEnd, to, editStart, editEnd) - else - to.replaceRange(from.getRange(origStart, origEnd), editStart, editEnd) - } - - // Merge view, containing 0, 1, or 2 diff views. - - var MergeView = CodeMirror.MergeView = function(node, options) { - if (!(this instanceof MergeView)) return new MergeView(node, options); - - this.options = options; - var origLeft = options.origLeft, origRight = options.origRight == null ? options.orig : options.origRight; - - var hasLeft = origLeft != null, hasRight = origRight != null; - var panes = 1 + (hasLeft ? 1 : 0) + (hasRight ? 1 : 0); - var wrap = [], left = this.left = null, right = this.right = null; - var self = this; - - if (hasLeft) { - left = this.left = new DiffView(this, "left"); - var leftPane = elt("div", null, "CodeMirror-merge-pane CodeMirror-merge-left"); - wrap.push(leftPane); - wrap.push(buildGap(left)); - } - - var editPane = elt("div", null, "CodeMirror-merge-pane CodeMirror-merge-editor"); - wrap.push(editPane); - - if (hasRight) { - right = this.right = new DiffView(this, "right"); - wrap.push(buildGap(right)); - var rightPane = elt("div", null, "CodeMirror-merge-pane CodeMirror-merge-right"); - wrap.push(rightPane); - } - - (hasRight ? rightPane : editPane).className += " CodeMirror-merge-pane-rightmost"; - - wrap.push(elt("div", null, null, "height: 0; clear: both;")); - - var wrapElt = this.wrap = node.appendChild(elt("div", wrap, "CodeMirror-merge CodeMirror-merge-" + panes + "pane")); - this.edit = CodeMirror(editPane, copyObj(options)); - - if (left) left.init(leftPane, origLeft, options); - if (right) right.init(rightPane, origRight, options); - if (options.collapseIdentical) - this.editor().operation(function() { - collapseIdenticalStretches(self, options.collapseIdentical); - }); - if (options.connect == "align") { - this.aligners = []; - alignChunks(this.left || this.right, true); - } - if (left) left.registerEvents(right) - if (right) right.registerEvents(left) - - - var onResize = function() { - if (left) makeConnections(left); - if (right) makeConnections(right); - }; - CodeMirror.on(window, "resize", onResize); - var resizeInterval = setInterval(function() { - for (var p = wrapElt.parentNode; p && p != document.body; p = p.parentNode) {} - if (!p) { clearInterval(resizeInterval); CodeMirror.off(window, "resize", onResize); } - }, 5000); - }; - - function buildGap(dv) { - var lock = dv.lockButton = elt("div", null, "CodeMirror-merge-scrolllock"); - var lockWrap = elt("div", [lock], "CodeMirror-merge-scrolllock-wrap"); - CodeMirror.on(lock, "click", function() { setScrollLock(dv, !dv.lockScroll); }); - var gapElts = [lockWrap]; - if (dv.mv.options.revertButtons !== false) { - dv.copyButtons = elt("div", null, "CodeMirror-merge-copybuttons-" + dv.type); - CodeMirror.on(dv.copyButtons, "click", function(e) { - var node = e.target || e.srcElement; - if (!node.chunk) return; - if (node.className == "CodeMirror-merge-copy-reverse") { - copyChunk(dv, dv.orig, dv.edit, node.chunk); - return; - } - copyChunk(dv, dv.edit, dv.orig, node.chunk); - }); - gapElts.unshift(dv.copyButtons); - } - if (dv.mv.options.connect != "align") { - var svg = document.createElementNS && document.createElementNS(svgNS, "svg"); - if (svg && !svg.createSVGRect) svg = null; - dv.svg = svg; - if (svg) gapElts.push(svg); - } - - return dv.gap = elt("div", gapElts, "CodeMirror-merge-gap"); - } - - MergeView.prototype = { - constructor: MergeView, - editor: function() { return this.edit; }, - rightOriginal: function() { return this.right && this.right.orig; }, - leftOriginal: function() { return this.left && this.left.orig; }, - setShowDifferences: function(val) { - if (this.right) this.right.setShowDifferences(val); - if (this.left) this.left.setShowDifferences(val); - }, - rightChunks: function() { - if (this.right) { ensureDiff(this.right); return this.right.chunks; } - }, - leftChunks: function() { - if (this.left) { ensureDiff(this.left); return this.left.chunks; } - } - }; - - function asString(obj) { - if (typeof obj == "string") return obj; - else return obj.getValue(); - } - - // Operations on diffs - var dmp; - function getDiff(a, b, ignoreWhitespace) { - if (!dmp) dmp = new diff_match_patch(); - - var diff = dmp.diff_main(a, b); - // The library sometimes leaves in empty parts, which confuse the algorithm - for (var i = 0; i < diff.length; ++i) { - var part = diff[i]; - if (ignoreWhitespace ? !/[^ \t]/.test(part[1]) : !part[1]) { - diff.splice(i--, 1); - } else if (i && diff[i - 1][0] == part[0]) { - diff.splice(i--, 1); - diff[i][1] += part[1]; - } - } - return diff; - } - - function getChunks(diff) { - var chunks = []; - if (!diff.length) return chunks; - var startEdit = 0, startOrig = 0; - var edit = Pos(0, 0), orig = Pos(0, 0); - for (var i = 0; i < diff.length; ++i) { - var part = diff[i], tp = part[0]; - if (tp == DIFF_EQUAL) { - var startOff = !startOfLineClean(diff, i) || edit.line < startEdit || orig.line < startOrig ? 1 : 0; - var cleanFromEdit = edit.line + startOff, cleanFromOrig = orig.line + startOff; - moveOver(edit, part[1], null, orig); - var endOff = endOfLineClean(diff, i) ? 1 : 0; - var cleanToEdit = edit.line + endOff, cleanToOrig = orig.line + endOff; - if (cleanToEdit > cleanFromEdit) { - if (i) chunks.push({origFrom: startOrig, origTo: cleanFromOrig, - editFrom: startEdit, editTo: cleanFromEdit}); - startEdit = cleanToEdit; startOrig = cleanToOrig; - } - } else { - moveOver(tp == DIFF_INSERT ? edit : orig, part[1]); - } - } - if (startEdit <= edit.line || startOrig <= orig.line) - chunks.push({origFrom: startOrig, origTo: orig.line + 1, - editFrom: startEdit, editTo: edit.line + 1}); - return chunks; - } - - function endOfLineClean(diff, i) { - if (i == diff.length - 1) return true; - var next = diff[i + 1][1]; - if ((next.length == 1 && i < diff.length - 2) || next.charCodeAt(0) != 10) return false; - if (i == diff.length - 2) return true; - next = diff[i + 2][1]; - return (next.length > 1 || i == diff.length - 3) && next.charCodeAt(0) == 10; - } - - function startOfLineClean(diff, i) { - if (i == 0) return true; - var last = diff[i - 1][1]; - if (last.charCodeAt(last.length - 1) != 10) return false; - if (i == 1) return true; - last = diff[i - 2][1]; - return last.charCodeAt(last.length - 1) == 10; - } - - function chunkBoundariesAround(chunks, n, nInEdit) { - var beforeE, afterE, beforeO, afterO; - for (var i = 0; i < chunks.length; i++) { - var chunk = chunks[i]; - var fromLocal = nInEdit ? chunk.editFrom : chunk.origFrom; - var toLocal = nInEdit ? chunk.editTo : chunk.origTo; - if (afterE == null) { - if (fromLocal > n) { afterE = chunk.editFrom; afterO = chunk.origFrom; } - else if (toLocal > n) { afterE = chunk.editTo; afterO = chunk.origTo; } - } - if (toLocal <= n) { beforeE = chunk.editTo; beforeO = chunk.origTo; } - else if (fromLocal <= n) { beforeE = chunk.editFrom; beforeO = chunk.origFrom; } - } - return {edit: {before: beforeE, after: afterE}, orig: {before: beforeO, after: afterO}}; - } - - function collapseSingle(cm, from, to) { - cm.addLineClass(from, "wrap", "CodeMirror-merge-collapsed-line"); - var widget = document.createElement("span"); - widget.className = "CodeMirror-merge-collapsed-widget"; - widget.title = cm.phrase("Identical text collapsed. Click to expand."); - var mark = cm.markText(Pos(from, 0), Pos(to - 1), { - inclusiveLeft: true, - inclusiveRight: true, - replacedWith: widget, - clearOnEnter: true - }); - function clear() { - mark.clear(); - cm.removeLineClass(from, "wrap", "CodeMirror-merge-collapsed-line"); - } - if (mark.explicitlyCleared) clear(); - CodeMirror.on(widget, "click", clear); - mark.on("clear", clear); - CodeMirror.on(widget, "click", clear); - return {mark: mark, clear: clear}; - } - - function collapseStretch(size, editors) { - var marks = []; - function clear() { - for (var i = 0; i < marks.length; i++) marks[i].clear(); - } - for (var i = 0; i < editors.length; i++) { - var editor = editors[i]; - var mark = collapseSingle(editor.cm, editor.line, editor.line + size); - marks.push(mark); - mark.mark.on("clear", clear); - } - return marks[0].mark; - } - - function unclearNearChunks(dv, margin, off, clear) { - for (var i = 0; i < dv.chunks.length; i++) { - var chunk = dv.chunks[i]; - for (var l = chunk.editFrom - margin; l < chunk.editTo + margin; l++) { - var pos = l + off; - if (pos >= 0 && pos < clear.length) clear[pos] = false; - } - } - } - - function collapseIdenticalStretches(mv, margin) { - if (typeof margin != "number") margin = 2; - var clear = [], edit = mv.editor(), off = edit.firstLine(); - for (var l = off, e = edit.lastLine(); l <= e; l++) clear.push(true); - if (mv.left) unclearNearChunks(mv.left, margin, off, clear); - if (mv.right) unclearNearChunks(mv.right, margin, off, clear); - - for (var i = 0; i < clear.length; i++) { - if (clear[i]) { - var line = i + off; - for (var size = 1; i < clear.length - 1 && clear[i + 1]; i++, size++) {} - if (size > margin) { - var editors = [{line: line, cm: edit}]; - if (mv.left) editors.push({line: getMatchingOrigLine(line, mv.left.chunks), cm: mv.left.orig}); - if (mv.right) editors.push({line: getMatchingOrigLine(line, mv.right.chunks), cm: mv.right.orig}); - var mark = collapseStretch(size, editors); - if (mv.options.onCollapse) mv.options.onCollapse(mv, line, size, mark); - } - } - } - } - - // General utilities - - function elt(tag, content, className, style) { - var e = document.createElement(tag); - if (className) e.className = className; - if (style) e.style.cssText = style; - if (typeof content == "string") e.appendChild(document.createTextNode(content)); - else if (content) for (var i = 0; i < content.length; ++i) e.appendChild(content[i]); - return e; - } - - function clear(node) { - for (var count = node.childNodes.length; count > 0; --count) - node.removeChild(node.firstChild); - } - - function attrs(elt) { - for (var i = 1; i < arguments.length; i += 2) - elt.setAttribute(arguments[i], arguments[i+1]); - } - - function copyObj(obj, target) { - if (!target) target = {}; - for (var prop in obj) if (obj.hasOwnProperty(prop)) target[prop] = obj[prop]; - return target; - } - - function moveOver(pos, str, copy, other) { - var out = copy ? Pos(pos.line, pos.ch) : pos, at = 0; - for (;;) { - var nl = str.indexOf("\n", at); - if (nl == -1) break; - ++out.line; - if (other) ++other.line; - at = nl + 1; - } - out.ch = (at ? 0 : out.ch) + (str.length - at); - if (other) other.ch = (at ? 0 : other.ch) + (str.length - at); - return out; - } - - // Tracks collapsed markers and line widgets, in order to be able to - // accurately align the content of two editors. - - var F_WIDGET = 1, F_WIDGET_BELOW = 2, F_MARKER = 4 - - function TrackAlignable(cm) { - this.cm = cm - this.alignable = [] - this.height = cm.doc.height - var self = this - cm.on("markerAdded", function(_, marker) { - if (!marker.collapsed) return - var found = marker.find(1) - if (found != null) self.set(found.line, F_MARKER) - }) - cm.on("markerCleared", function(_, marker, _min, max) { - if (max != null && marker.collapsed) - self.check(max, F_MARKER, self.hasMarker) - }) - cm.on("markerChanged", this.signal.bind(this)) - cm.on("lineWidgetAdded", function(_, widget, lineNo) { - if (widget.mergeSpacer) return - if (widget.above) self.set(lineNo - 1, F_WIDGET_BELOW) - else self.set(lineNo, F_WIDGET) - }) - cm.on("lineWidgetCleared", function(_, widget, lineNo) { - if (widget.mergeSpacer) return - if (widget.above) self.check(lineNo - 1, F_WIDGET_BELOW, self.hasWidgetBelow) - else self.check(lineNo, F_WIDGET, self.hasWidget) - }) - cm.on("lineWidgetChanged", this.signal.bind(this)) - cm.on("change", function(_, change) { - var start = change.from.line, nBefore = change.to.line - change.from.line - var nAfter = change.text.length - 1, end = start + nAfter - if (nBefore || nAfter) self.map(start, nBefore, nAfter) - self.check(end, F_MARKER, self.hasMarker) - if (nBefore || nAfter) self.check(change.from.line, F_MARKER, self.hasMarker) - }) - cm.on("viewportChange", function() { - if (self.cm.doc.height != self.height) self.signal() - }) - } - - TrackAlignable.prototype = { - signal: function() { - CodeMirror.signal(this, "realign") - this.height = this.cm.doc.height - }, - - set: function(n, flags) { - var pos = -1 - for (; pos < this.alignable.length; pos += 2) { - var diff = this.alignable[pos] - n - if (diff == 0) { - if ((this.alignable[pos + 1] & flags) == flags) return - this.alignable[pos + 1] |= flags - this.signal() - return - } - if (diff > 0) break - } - this.signal() - this.alignable.splice(pos, 0, n, flags) - }, - - find: function(n) { - for (var i = 0; i < this.alignable.length; i += 2) - if (this.alignable[i] == n) return i - return -1 - }, - - check: function(n, flag, pred) { - var found = this.find(n) - if (found == -1 || !(this.alignable[found + 1] & flag)) return - if (!pred.call(this, n)) { - this.signal() - var flags = this.alignable[found + 1] & ~flag - if (flags) this.alignable[found + 1] = flags - else this.alignable.splice(found, 2) - } - }, - - hasMarker: function(n) { - var handle = this.cm.getLineHandle(n) - if (handle.markedSpans) for (var i = 0; i < handle.markedSpans.length; i++) - if (handle.markedSpans[i].mark.collapsed && handle.markedSpans[i].to != null) - return true - return false - }, - - hasWidget: function(n) { - var handle = this.cm.getLineHandle(n) - if (handle.widgets) for (var i = 0; i < handle.widgets.length; i++) - if (!handle.widgets[i].above && !handle.widgets[i].mergeSpacer) return true - return false - }, - - hasWidgetBelow: function(n) { - if (n == this.cm.lastLine()) return false - var handle = this.cm.getLineHandle(n + 1) - if (handle.widgets) for (var i = 0; i < handle.widgets.length; i++) - if (handle.widgets[i].above && !handle.widgets[i].mergeSpacer) return true - return false - }, - - map: function(from, nBefore, nAfter) { - var diff = nAfter - nBefore, to = from + nBefore, widgetFrom = -1, widgetTo = -1 - for (var i = 0; i < this.alignable.length; i += 2) { - var n = this.alignable[i] - if (n == from && (this.alignable[i + 1] & F_WIDGET_BELOW)) widgetFrom = i - if (n == to && (this.alignable[i + 1] & F_WIDGET_BELOW)) widgetTo = i - if (n <= from) continue - else if (n < to) this.alignable.splice(i--, 2) - else this.alignable[i] += diff - } - if (widgetFrom > -1) { - var flags = this.alignable[widgetFrom + 1] - if (flags == F_WIDGET_BELOW) this.alignable.splice(widgetFrom, 2) - else this.alignable[widgetFrom + 1] = flags & ~F_WIDGET_BELOW - } - if (widgetTo > -1 && nAfter) - this.set(from + nAfter, F_WIDGET_BELOW) - } - } - - function posMin(a, b) { return (a.line - b.line || a.ch - b.ch) < 0 ? a : b; } - function posMax(a, b) { return (a.line - b.line || a.ch - b.ch) > 0 ? a : b; } - function posEq(a, b) { return a.line == b.line && a.ch == b.ch; } - - function findPrevDiff(chunks, start, isOrig) { - for (var i = chunks.length - 1; i >= 0; i--) { - var chunk = chunks[i]; - var to = (isOrig ? chunk.origTo : chunk.editTo) - 1; - if (to < start) return to; - } - } - - function findNextDiff(chunks, start, isOrig) { - for (var i = 0; i < chunks.length; i++) { - var chunk = chunks[i]; - var from = (isOrig ? chunk.origFrom : chunk.editFrom); - if (from > start) return from; - } - } - - function goNearbyDiff(cm, dir) { - var found = null, views = cm.state.diffViews, line = cm.getCursor().line; - if (views) for (var i = 0; i < views.length; i++) { - var dv = views[i], isOrig = cm == dv.orig; - ensureDiff(dv); - var pos = dir < 0 ? findPrevDiff(dv.chunks, line, isOrig) : findNextDiff(dv.chunks, line, isOrig); - if (pos != null && (found == null || (dir < 0 ? pos > found : pos < found))) - found = pos; - } - if (found != null) - cm.setCursor(found, 0); - else - return CodeMirror.Pass; - } - - CodeMirror.commands.goNextDiff = function(cm) { - return goNearbyDiff(cm, 1); - }; - CodeMirror.commands.goPrevDiff = function(cm) { - return goNearbyDiff(cm, -1); - }; -}); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/addon/selection/active-line.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/addon/selection/active-line.js deleted file mode 100644 index c7b14ce..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/addon/selection/active-line.js +++ /dev/null @@ -1,72 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE - -(function(mod) { - if (typeof exports == "object" && typeof module == "object") // CommonJS - mod(require("../../lib/codemirror")); - else if (typeof define == "function" && define.amd) // AMD - define(["../../lib/codemirror"], mod); - else // Plain browser env - mod(CodeMirror); -})(function(CodeMirror) { - "use strict"; - var WRAP_CLASS = "CodeMirror-activeline"; - var BACK_CLASS = "CodeMirror-activeline-background"; - var GUTT_CLASS = "CodeMirror-activeline-gutter"; - - CodeMirror.defineOption("styleActiveLine", false, function(cm, val, old) { - var prev = old == CodeMirror.Init ? false : old; - if (val == prev) return - if (prev) { - cm.off("beforeSelectionChange", selectionChange); - clearActiveLines(cm); - delete cm.state.activeLines; - } - if (val) { - cm.state.activeLines = []; - updateActiveLines(cm, cm.listSelections()); - cm.on("beforeSelectionChange", selectionChange); - } - }); - - function clearActiveLines(cm) { - for (var i = 0; i < cm.state.activeLines.length; i++) { - cm.removeLineClass(cm.state.activeLines[i], "wrap", WRAP_CLASS); - cm.removeLineClass(cm.state.activeLines[i], "background", BACK_CLASS); - cm.removeLineClass(cm.state.activeLines[i], "gutter", GUTT_CLASS); - } - } - - function sameArray(a, b) { - if (a.length != b.length) return false; - for (var i = 0; i < a.length; i++) - if (a[i] != b[i]) return false; - return true; - } - - function updateActiveLines(cm, ranges) { - var active = []; - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i]; - var option = cm.getOption("styleActiveLine"); - if (typeof option == "object" && option.nonEmpty ? range.anchor.line != range.head.line : !range.empty()) - continue - var line = cm.getLineHandleVisualStart(range.head.line); - if (active[active.length - 1] != line) active.push(line); - } - if (sameArray(cm.state.activeLines, active)) return; - cm.operation(function() { - clearActiveLines(cm); - for (var i = 0; i < active.length; i++) { - cm.addLineClass(active[i], "wrap", WRAP_CLASS); - cm.addLineClass(active[i], "background", BACK_CLASS); - cm.addLineClass(active[i], "gutter", GUTT_CLASS); - } - cm.state.activeLines = active; - }); - } - - function selectionChange(cm, sel) { - updateActiveLines(cm, sel.ranges); - } -}); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/lib/codemirror.css b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/lib/codemirror.css deleted file mode 100644 index c7a8ae7..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/lib/codemirror.css +++ /dev/null @@ -1,346 +0,0 @@ -/* BASICS */ - -.CodeMirror { - /* Set height, width, borders, and global font properties here */ - font-family: monospace; - height: 300px; - color: black; - direction: ltr; -} - -/* PADDING */ - -.CodeMirror-lines { - padding: 4px 0; /* Vertical padding around content */ -} -.CodeMirror pre { - padding: 0 4px; /* Horizontal padding of content */ -} - -.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { - background-color: white; /* The little square between H and V scrollbars */ -} - -/* GUTTER */ - -.CodeMirror-gutters { - border-right: 1px solid #ddd; - background-color: #f7f7f7; - white-space: nowrap; -} -.CodeMirror-linenumbers {} -.CodeMirror-linenumber { - padding: 0 3px 0 5px; - min-width: 20px; - text-align: right; - color: #999; - white-space: nowrap; -} - -.CodeMirror-guttermarker { color: black; } -.CodeMirror-guttermarker-subtle { color: #999; } - -/* CURSOR */ - -.CodeMirror-cursor { - border-left: 1px solid black; - border-right: none; - width: 0; -} -/* Shown when moving in bi-directional text */ -.CodeMirror div.CodeMirror-secondarycursor { - border-left: 1px solid silver; -} -.cm-fat-cursor .CodeMirror-cursor { - width: auto; - border: 0 !important; - background: #7e7; -} -.cm-fat-cursor div.CodeMirror-cursors { - z-index: 1; -} -.cm-fat-cursor-mark { - background-color: rgba(20, 255, 20, 0.5); - -webkit-animation: blink 1.06s steps(1) infinite; - -moz-animation: blink 1.06s steps(1) infinite; - animation: blink 1.06s steps(1) infinite; -} -.cm-animate-fat-cursor { - width: auto; - border: 0; - -webkit-animation: blink 1.06s steps(1) infinite; - -moz-animation: blink 1.06s steps(1) infinite; - animation: blink 1.06s steps(1) infinite; - background-color: #7e7; -} -@-moz-keyframes blink { - 0% {} - 50% { background-color: transparent; } - 100% {} -} -@-webkit-keyframes blink { - 0% {} - 50% { background-color: transparent; } - 100% {} -} -@keyframes blink { - 0% {} - 50% { background-color: transparent; } - 100% {} -} - -/* Can style cursor different in overwrite (non-insert) mode */ -.CodeMirror-overwrite .CodeMirror-cursor {} - -.cm-tab { display: inline-block; text-decoration: inherit; } - -.CodeMirror-rulers { - position: absolute; - left: 0; right: 0; top: -50px; bottom: -20px; - overflow: hidden; -} -.CodeMirror-ruler { - border-left: 1px solid #ccc; - top: 0; bottom: 0; - position: absolute; -} - -/* DEFAULT THEME */ - -.cm-s-default .cm-header {color: blue;} -.cm-s-default .cm-quote {color: #090;} -.cm-negative {color: #d44;} -.cm-positive {color: #292;} -.cm-header, .cm-strong {font-weight: bold;} -.cm-em {font-style: italic;} -.cm-link {text-decoration: underline;} -.cm-strikethrough {text-decoration: line-through;} - -.cm-s-default .cm-keyword {color: #708;} -.cm-s-default .cm-atom {color: #219;} -.cm-s-default .cm-number {color: #164;} -.cm-s-default .cm-def {color: #00f;} -.cm-s-default .cm-variable, -.cm-s-default .cm-punctuation, -.cm-s-default .cm-property, -.cm-s-default .cm-operator {} -.cm-s-default .cm-variable-2 {color: #05a;} -.cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;} -.cm-s-default .cm-comment {color: #a50;} -.cm-s-default .cm-string {color: #a11;} -.cm-s-default .cm-string-2 {color: #f50;} -.cm-s-default .cm-meta {color: #555;} -.cm-s-default .cm-qualifier {color: #555;} -.cm-s-default .cm-builtin {color: #30a;} -.cm-s-default .cm-bracket {color: #997;} -.cm-s-default .cm-tag {color: #170;} -.cm-s-default .cm-attribute {color: #00c;} -.cm-s-default .cm-hr {color: #999;} -.cm-s-default .cm-link {color: #00c;} - -.cm-s-default .cm-error {color: #f00;} -.cm-invalidchar {color: #f00;} - -.CodeMirror-composing { border-bottom: 2px solid; } - -/* Default styles for common addons */ - -div.CodeMirror span.CodeMirror-matchingbracket {color: #0b0;} -div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #a22;} -.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } -.CodeMirror-activeline-background {background: #e8f2ff;} - -/* STOP */ - -/* The rest of this file contains styles related to the mechanics of - the editor. You probably shouldn't touch them. */ - -.CodeMirror { - position: relative; - overflow: hidden; - background: white; -} - -.CodeMirror-scroll { - overflow: scroll !important; /* Things will break if this is overridden */ - /* 30px is the magic margin used to hide the element's real scrollbars */ - /* See overflow: hidden in .CodeMirror */ - margin-bottom: -30px; margin-right: -30px; - padding-bottom: 30px; - height: 100%; - outline: none; /* Prevent dragging from highlighting the element */ - position: relative; -} -.CodeMirror-sizer { - position: relative; - border-right: 30px solid transparent; -} - -/* The fake, visible scrollbars. Used to force redraw during scrolling - before actual scrolling happens, thus preventing shaking and - flickering artifacts. */ -.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { - position: absolute; - z-index: 6; - display: none; -} -.CodeMirror-vscrollbar { - right: 0; top: 0; - overflow-x: hidden; - overflow-y: scroll; -} -.CodeMirror-hscrollbar { - bottom: 0; left: 0; - overflow-y: hidden; - overflow-x: scroll; -} -.CodeMirror-scrollbar-filler { - right: 0; bottom: 0; -} -.CodeMirror-gutter-filler { - left: 0; bottom: 0; -} - -.CodeMirror-gutters { - position: absolute; left: 0; top: 0; - min-height: 100%; - z-index: 3; -} -.CodeMirror-gutter { - white-space: normal; - height: 100%; - display: inline-block; - vertical-align: top; - margin-bottom: -30px; -} -.CodeMirror-gutter-wrapper { - position: absolute; - z-index: 4; - background: none !important; - border: none !important; -} -.CodeMirror-gutter-background { - position: absolute; - top: 0; bottom: 0; - z-index: 4; -} -.CodeMirror-gutter-elt { - position: absolute; - cursor: default; - z-index: 4; -} -.CodeMirror-gutter-wrapper ::selection { background-color: transparent } -.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent } - -.CodeMirror-lines { - cursor: text; - min-height: 1px; /* prevents collapsing before first draw */ -} -.CodeMirror pre { - /* Reset some styles that the rest of the page might have set */ - -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; - border-width: 0; - background: transparent; - font-family: inherit; - font-size: inherit; - margin: 0; - white-space: pre; - word-wrap: normal; - line-height: inherit; - color: inherit; - z-index: 2; - position: relative; - overflow: visible; - -webkit-tap-highlight-color: transparent; - -webkit-font-variant-ligatures: contextual; - font-variant-ligatures: contextual; -} -.CodeMirror-wrap pre { - word-wrap: break-word; - white-space: pre-wrap; - word-break: normal; -} - -.CodeMirror-linebackground { - position: absolute; - left: 0; right: 0; top: 0; bottom: 0; - z-index: 0; -} - -.CodeMirror-linewidget { - position: relative; - z-index: 2; - padding: 0.1px; /* Force widget margins to stay inside of the container */ -} - -.CodeMirror-widget {} - -.CodeMirror-rtl pre { direction: rtl; } - -.CodeMirror-code { - outline: none; -} - -/* Force content-box sizing for the elements where we expect it */ -.CodeMirror-scroll, -.CodeMirror-sizer, -.CodeMirror-gutter, -.CodeMirror-gutters, -.CodeMirror-linenumber { - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -.CodeMirror-measure { - position: absolute; - width: 100%; - height: 0; - overflow: hidden; - visibility: hidden; -} - -.CodeMirror-cursor { - position: absolute; - pointer-events: none; -} -.CodeMirror-measure pre { position: static; } - -div.CodeMirror-cursors { - visibility: hidden; - position: relative; - z-index: 3; -} -div.CodeMirror-dragcursors { - visibility: visible; -} - -.CodeMirror-focused div.CodeMirror-cursors { - visibility: visible; -} - -.CodeMirror-selected { background: #d9d9d9; } -.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } -.CodeMirror-crosshair { cursor: crosshair; } -.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; } -.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; } - -.cm-searching { - background-color: #ffa; - background-color: rgba(255, 255, 0, .4); -} - -/* Used to force a border model for a node */ -.cm-force-border { padding-right: .1px; } - -@media print { - /* Hide the cursor when printing */ - .CodeMirror div.CodeMirror-cursors { - visibility: hidden; - } -} - -/* See issue #2901 */ -.cm-tab-wrap-hack:after { content: ''; } - -/* Help users use markselection to safely style text background */ -span.CodeMirror-selectedtext { background: none; } diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/lib/codemirror.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/lib/codemirror.js deleted file mode 100644 index e178478..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/codemirror/lib/codemirror.js +++ /dev/null @@ -1,9693 +0,0 @@ -// CodeMirror, copyright (c) by Marijn Haverbeke and others -// Distributed under an MIT license: https://codemirror.net/LICENSE - -// This is CodeMirror (https://codemirror.net), a code editor -// implemented in JavaScript on top of the browser's DOM. -// -// You can find some technical background for some of the code below -// at http://marijnhaverbeke.nl/blog/#cm-internals . - -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global.CodeMirror = factory()); -}(this, (function () { 'use strict'; - -// Kludges for bugs and behavior differences that can't be feature -// detected are enabled based on userAgent etc sniffing. -var userAgent = navigator.userAgent -var platform = navigator.platform - -var gecko = /gecko\/\d/i.test(userAgent) -var ie_upto10 = /MSIE \d/.test(userAgent) -var ie_11up = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(userAgent) -var edge = /Edge\/(\d+)/.exec(userAgent) -var ie = ie_upto10 || ie_11up || edge -var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]) -var webkit = !edge && /WebKit\//.test(userAgent) -var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(userAgent) -var chrome = !edge && /Chrome\//.test(userAgent) -var presto = /Opera\//.test(userAgent) -var safari = /Apple Computer/.test(navigator.vendor) -var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent) -var phantom = /PhantomJS/.test(userAgent) - -var ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\/\w+/.test(userAgent) -var android = /Android/.test(userAgent) -// This is woefully incomplete. Suggestions for alternative methods welcome. -var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent) -var mac = ios || /Mac/.test(platform) -var chromeOS = /\bCrOS\b/.test(userAgent) -var windows = /win/i.test(platform) - -var presto_version = presto && userAgent.match(/Version\/(\d*\.\d*)/) -if (presto_version) { presto_version = Number(presto_version[1]) } -if (presto_version && presto_version >= 15) { presto = false; webkit = true } -// Some browsers use the wrong event properties to signal cmd/ctrl on OS X -var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11)) -var captureRightClick = gecko || (ie && ie_version >= 9) - -function classTest(cls) { return new RegExp("(^|\\s)" + cls + "(?:$|\\s)\\s*") } - -var rmClass = function(node, cls) { - var current = node.className - var match = classTest(cls).exec(current) - if (match) { - var after = current.slice(match.index + match[0].length) - node.className = current.slice(0, match.index) + (after ? match[1] + after : "") - } -} - -function removeChildren(e) { - for (var count = e.childNodes.length; count > 0; --count) - { e.removeChild(e.firstChild) } - return e -} - -function removeChildrenAndAdd(parent, e) { - return removeChildren(parent).appendChild(e) -} - -function elt(tag, content, className, style) { - var e = document.createElement(tag) - if (className) { e.className = className } - if (style) { e.style.cssText = style } - if (typeof content == "string") { e.appendChild(document.createTextNode(content)) } - else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]) } } - return e -} -// wrapper for elt, which removes the elt from the accessibility tree -function eltP(tag, content, className, style) { - var e = elt(tag, content, className, style) - e.setAttribute("role", "presentation") - return e -} - -var range -if (document.createRange) { range = function(node, start, end, endNode) { - var r = document.createRange() - r.setEnd(endNode || node, end) - r.setStart(node, start) - return r -} } -else { range = function(node, start, end) { - var r = document.body.createTextRange() - try { r.moveToElementText(node.parentNode) } - catch(e) { return r } - r.collapse(true) - r.moveEnd("character", end) - r.moveStart("character", start) - return r -} } - -function contains(parent, child) { - if (child.nodeType == 3) // Android browser always returns false when child is a textnode - { child = child.parentNode } - if (parent.contains) - { return parent.contains(child) } - do { - if (child.nodeType == 11) { child = child.host } - if (child == parent) { return true } - } while (child = child.parentNode) -} - -function activeElt() { - // IE and Edge may throw an "Unspecified Error" when accessing document.activeElement. - // IE < 10 will throw when accessed while the page is loading or in an iframe. - // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable. - var activeElement - try { - activeElement = document.activeElement - } catch(e) { - activeElement = document.body || null - } - while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement) - { activeElement = activeElement.shadowRoot.activeElement } - return activeElement -} - -function addClass(node, cls) { - var current = node.className - if (!classTest(cls).test(current)) { node.className += (current ? " " : "") + cls } -} -function joinClasses(a, b) { - var as = a.split(" ") - for (var i = 0; i < as.length; i++) - { if (as[i] && !classTest(as[i]).test(b)) { b += " " + as[i] } } - return b -} - -var selectInput = function(node) { node.select() } -if (ios) // Mobile Safari apparently has a bug where select() is broken. - { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length } } -else if (ie) // Suppress mysterious IE10 errors - { selectInput = function(node) { try { node.select() } catch(_e) {} } } - -function bind(f) { - var args = Array.prototype.slice.call(arguments, 1) - return function(){return f.apply(null, args)} -} - -function copyObj(obj, target, overwrite) { - if (!target) { target = {} } - for (var prop in obj) - { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) - { target[prop] = obj[prop] } } - return target -} - -// Counts the column offset in a string, taking tabs into account. -// Used mostly to find indentation. -function countColumn(string, end, tabSize, startIndex, startValue) { - if (end == null) { - end = string.search(/[^\s\u00a0]/) - if (end == -1) { end = string.length } - } - for (var i = startIndex || 0, n = startValue || 0;;) { - var nextTab = string.indexOf("\t", i) - if (nextTab < 0 || nextTab >= end) - { return n + (end - i) } - n += nextTab - i - n += tabSize - (n % tabSize) - i = nextTab + 1 - } -} - -var Delayed = function() {this.id = null}; -Delayed.prototype.set = function (ms, f) { - clearTimeout(this.id) - this.id = setTimeout(f, ms) -}; - -function indexOf(array, elt) { - for (var i = 0; i < array.length; ++i) - { if (array[i] == elt) { return i } } - return -1 -} - -// Number of pixels added to scroller and sizer to hide scrollbar -var scrollerGap = 30 - -// Returned or thrown by various protocols to signal 'I'm not -// handling this'. -var Pass = {toString: function(){return "CodeMirror.Pass"}} - -// Reused option objects for setSelection & friends -var sel_dontScroll = {scroll: false}; -var sel_mouse = {origin: "*mouse"}; -var sel_move = {origin: "+move"}; -// The inverse of countColumn -- find the offset that corresponds to -// a particular column. -function findColumn(string, goal, tabSize) { - for (var pos = 0, col = 0;;) { - var nextTab = string.indexOf("\t", pos) - if (nextTab == -1) { nextTab = string.length } - var skipped = nextTab - pos - if (nextTab == string.length || col + skipped >= goal) - { return pos + Math.min(skipped, goal - col) } - col += nextTab - pos - col += tabSize - (col % tabSize) - pos = nextTab + 1 - if (col >= goal) { return pos } - } -} - -var spaceStrs = [""] -function spaceStr(n) { - while (spaceStrs.length <= n) - { spaceStrs.push(lst(spaceStrs) + " ") } - return spaceStrs[n] -} - -function lst(arr) { return arr[arr.length-1] } - -function map(array, f) { - var out = [] - for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i) } - return out -} - -function insertSorted(array, value, score) { - var pos = 0, priority = score(value) - while (pos < array.length && score(array[pos]) <= priority) { pos++ } - array.splice(pos, 0, value) -} - -function nothing() {} - -function createObj(base, props) { - var inst - if (Object.create) { - inst = Object.create(base) - } else { - nothing.prototype = base - inst = new nothing() - } - if (props) { copyObj(props, inst) } - return inst -} - -var nonASCIISingleCaseWordChar = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/ -function isWordCharBasic(ch) { - return /\w/.test(ch) || ch > "\x80" && - (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)) -} -function isWordChar(ch, helper) { - if (!helper) { return isWordCharBasic(ch) } - if (helper.source.indexOf("\\w") > -1 && isWordCharBasic(ch)) { return true } - return helper.test(ch) -} - -function isEmpty(obj) { - for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } } - return true -} - -// Extending unicode characters. A series of a non-extending char + -// any number of extending chars is treated as a single unit as far -// as editing and measuring is concerned. This is not fully correct, -// since some scripts/fonts/browsers also treat other configurations -// of code points as a group. -var extendingChars = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/ -function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) } - -// Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range. -function skipExtendingChars(str, pos, dir) { - while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir } - return pos -} - -// Returns the value from the range [`from`; `to`] that satisfies -// `pred` and is closest to `from`. Assumes that at least `to` -// satisfies `pred`. Supports `from` being greater than `to`. -function findFirst(pred, from, to) { - // At any point we are certain `to` satisfies `pred`, don't know - // whether `from` does. - var dir = from > to ? -1 : 1 - for (;;) { - if (from == to) { return from } - var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF) - if (mid == from) { return pred(mid) ? from : to } - if (pred(mid)) { to = mid } - else { from = mid + dir } - } -} - -// The display handles the DOM integration, both for input reading -// and content drawing. It holds references to DOM nodes and -// display-related state. - -function Display(place, doc, input) { - var d = this - this.input = input - - // Covers bottom-right square when both scrollbars are present. - d.scrollbarFiller = elt("div", null, "CodeMirror-scrollbar-filler") - d.scrollbarFiller.setAttribute("cm-not-content", "true") - // Covers bottom of gutter when coverGutterNextToScrollbar is on - // and h scrollbar is present. - d.gutterFiller = elt("div", null, "CodeMirror-gutter-filler") - d.gutterFiller.setAttribute("cm-not-content", "true") - // Will contain the actual code, positioned to cover the viewport. - d.lineDiv = eltP("div", null, "CodeMirror-code") - // Elements are added to these to represent selection and cursors. - d.selectionDiv = elt("div", null, null, "position: relative; z-index: 1") - d.cursorDiv = elt("div", null, "CodeMirror-cursors") - // A visibility: hidden element used to find the size of things. - d.measure = elt("div", null, "CodeMirror-measure") - // When lines outside of the viewport are measured, they are drawn in this. - d.lineMeasure = elt("div", null, "CodeMirror-measure") - // Wraps everything that needs to exist inside the vertically-padded coordinate system - d.lineSpace = eltP("div", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], - null, "position: relative; outline: none") - var lines = eltP("div", [d.lineSpace], "CodeMirror-lines") - // Moved around its parent to cover visible view. - d.mover = elt("div", [lines], null, "position: relative") - // Set to the height of the document, allowing scrolling. - d.sizer = elt("div", [d.mover], "CodeMirror-sizer") - d.sizerWidth = null - // Behavior of elts with overflow: auto and padding is - // inconsistent across browsers. This is used to ensure the - // scrollable area is big enough. - d.heightForcer = elt("div", null, null, "position: absolute; height: " + scrollerGap + "px; width: 1px;") - // Will contain the gutters, if any. - d.gutters = elt("div", null, "CodeMirror-gutters") - d.lineGutter = null - // Actual scrollable element. - d.scroller = elt("div", [d.sizer, d.heightForcer, d.gutters], "CodeMirror-scroll") - d.scroller.setAttribute("tabIndex", "-1") - // The element in which the editor lives. - d.wrapper = elt("div", [d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror") - - // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported) - if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0 } - if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true } - - if (place) { - if (place.appendChild) { place.appendChild(d.wrapper) } - else { place(d.wrapper) } - } - - // Current rendered range (may be bigger than the view window). - d.viewFrom = d.viewTo = doc.first - d.reportedViewFrom = d.reportedViewTo = doc.first - // Information about the rendered lines. - d.view = [] - d.renderedView = null - // Holds info about a single rendered line when it was rendered - // for measurement, while not in view. - d.externalMeasured = null - // Empty space (in pixels) above the view - d.viewOffset = 0 - d.lastWrapHeight = d.lastWrapWidth = 0 - d.updateLineNumbers = null - - d.nativeBarWidth = d.barHeight = d.barWidth = 0 - d.scrollbarsClipped = false - - // Used to only resize the line number gutter when necessary (when - // the amount of lines crosses a boundary that makes its width change) - d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null - // Set to true when a non-horizontal-scrolling line widget is - // added. As an optimization, line widget aligning is skipped when - // this is false. - d.alignWidgets = false - - d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null - - // Tracks the maximum line length so that the horizontal scrollbar - // can be kept static when scrolling. - d.maxLine = null - d.maxLineLength = 0 - d.maxLineChanged = false - - // Used for measuring wheel scrolling granularity - d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null - - // True when shift is held down. - d.shift = false - - // Used to track whether anything happened since the context menu - // was opened. - d.selForContextMenu = null - - d.activeTouch = null - - input.init(d) -} - -// Find the line object corresponding to the given line number. -function getLine(doc, n) { - n -= doc.first - if (n < 0 || n >= doc.size) { throw new Error("There is no line " + (n + doc.first) + " in the document.") } - var chunk = doc - while (!chunk.lines) { - for (var i = 0;; ++i) { - var child = chunk.children[i], sz = child.chunkSize() - if (n < sz) { chunk = child; break } - n -= sz - } - } - return chunk.lines[n] -} - -// Get the part of a document between two positions, as an array of -// strings. -function getBetween(doc, start, end) { - var out = [], n = start.line - doc.iter(start.line, end.line + 1, function (line) { - var text = line.text - if (n == end.line) { text = text.slice(0, end.ch) } - if (n == start.line) { text = text.slice(start.ch) } - out.push(text) - ++n - }) - return out -} -// Get the lines between from and to, as array of strings. -function getLines(doc, from, to) { - var out = [] - doc.iter(from, to, function (line) { out.push(line.text) }) // iter aborts when callback returns truthy value - return out -} - -// Update the height of a line, propagating the height change -// upwards to parent nodes. -function updateLineHeight(line, height) { - var diff = height - line.height - if (diff) { for (var n = line; n; n = n.parent) { n.height += diff } } -} - -// Given a line object, find its line number by walking up through -// its parent links. -function lineNo(line) { - if (line.parent == null) { return null } - var cur = line.parent, no = indexOf(cur.lines, line) - for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) { - for (var i = 0;; ++i) { - if (chunk.children[i] == cur) { break } - no += chunk.children[i].chunkSize() - } - } - return no + cur.first -} - -// Find the line at the given vertical position, using the height -// information in the document tree. -function lineAtHeight(chunk, h) { - var n = chunk.first - outer: do { - for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) { - var child = chunk.children[i$1], ch = child.height - if (h < ch) { chunk = child; continue outer } - h -= ch - n += child.chunkSize() - } - return n - } while (!chunk.lines) - var i = 0 - for (; i < chunk.lines.length; ++i) { - var line = chunk.lines[i], lh = line.height - if (h < lh) { break } - h -= lh - } - return n + i -} - -function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size} - -function lineNumberFor(options, i) { - return String(options.lineNumberFormatter(i + options.firstLineNumber)) -} - -// A Pos instance represents a position within the text. -function Pos(line, ch, sticky) { - if ( sticky === void 0 ) sticky = null; - - if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) } - this.line = line - this.ch = ch - this.sticky = sticky -} - -// Compare two positions, return 0 if they are the same, a negative -// number when a is less, and a positive number otherwise. -function cmp(a, b) { return a.line - b.line || a.ch - b.ch } - -function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 } - -function copyPos(x) {return Pos(x.line, x.ch)} -function maxPos(a, b) { return cmp(a, b) < 0 ? b : a } -function minPos(a, b) { return cmp(a, b) < 0 ? a : b } - -// Most of the external API clips given positions to make sure they -// actually exist within the document. -function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))} -function clipPos(doc, pos) { - if (pos.line < doc.first) { return Pos(doc.first, 0) } - var last = doc.first + doc.size - 1 - if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) } - return clipToLen(pos, getLine(doc, pos.line).text.length) -} -function clipToLen(pos, linelen) { - var ch = pos.ch - if (ch == null || ch > linelen) { return Pos(pos.line, linelen) } - else if (ch < 0) { return Pos(pos.line, 0) } - else { return pos } -} -function clipPosArray(doc, array) { - var out = [] - for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]) } - return out -} - -// Optimize some code when these features are not used. -var sawReadOnlySpans = false; -var sawCollapsedSpans = false; -function seeReadOnlySpans() { - sawReadOnlySpans = true -} - -function seeCollapsedSpans() { - sawCollapsedSpans = true -} - -// TEXTMARKER SPANS - -function MarkedSpan(marker, from, to) { - this.marker = marker - this.from = from; this.to = to -} - -// Search an array of spans for a span matching the given marker. -function getMarkedSpanFor(spans, marker) { - if (spans) { for (var i = 0; i < spans.length; ++i) { - var span = spans[i] - if (span.marker == marker) { return span } - } } -} -// Remove a span from an array, returning undefined if no spans are -// left (we don't store arrays for lines without spans). -function removeMarkedSpan(spans, span) { - var r - for (var i = 0; i < spans.length; ++i) - { if (spans[i] != span) { (r || (r = [])).push(spans[i]) } } - return r -} -// Add a span to a line. -function addMarkedSpan(line, span) { - line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span] - span.marker.attachLine(line) -} - -// Used for the algorithm that adjusts markers for a change in the -// document. These functions cut an array of spans at a given -// character position, returning an array of remaining chunks (or -// undefined if nothing remains). -function markedSpansBefore(old, startCh, isInsert) { - var nw - if (old) { for (var i = 0; i < old.length; ++i) { - var span = old[i], marker = span.marker - var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh) - if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) { - var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh) - ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to)) - } - } } - return nw -} -function markedSpansAfter(old, endCh, isInsert) { - var nw - if (old) { for (var i = 0; i < old.length; ++i) { - var span = old[i], marker = span.marker - var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh) - if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) { - var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh) - ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, - span.to == null ? null : span.to - endCh)) - } - } } - return nw -} - -// Given a change object, compute the new set of marker spans that -// cover the line in which the change took place. Removes spans -// entirely within the change, reconnects spans belonging to the -// same marker that appear on both sides of the change, and cuts off -// spans partially within the change. Returns an array of span -// arrays with one element for each line in (after) the change. -function stretchSpansOverChange(doc, change) { - if (change.full) { return null } - var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans - var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans - if (!oldFirst && !oldLast) { return null } - - var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0 - // Get the spans that 'stick out' on both sides - var first = markedSpansBefore(oldFirst, startCh, isInsert) - var last = markedSpansAfter(oldLast, endCh, isInsert) - - // Next, merge those two ends - var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0) - if (first) { - // Fix up .to properties of first - for (var i = 0; i < first.length; ++i) { - var span = first[i] - if (span.to == null) { - var found = getMarkedSpanFor(last, span.marker) - if (!found) { span.to = startCh } - else if (sameLine) { span.to = found.to == null ? null : found.to + offset } - } - } - } - if (last) { - // Fix up .from in last (or move them into first in case of sameLine) - for (var i$1 = 0; i$1 < last.length; ++i$1) { - var span$1 = last[i$1] - if (span$1.to != null) { span$1.to += offset } - if (span$1.from == null) { - var found$1 = getMarkedSpanFor(first, span$1.marker) - if (!found$1) { - span$1.from = offset - if (sameLine) { (first || (first = [])).push(span$1) } - } - } else { - span$1.from += offset - if (sameLine) { (first || (first = [])).push(span$1) } - } - } - } - // Make sure we didn't create any zero-length spans - if (first) { first = clearEmptySpans(first) } - if (last && last != first) { last = clearEmptySpans(last) } - - var newMarkers = [first] - if (!sameLine) { - // Fill gap with whole-line-spans - var gap = change.text.length - 2, gapMarkers - if (gap > 0 && first) - { for (var i$2 = 0; i$2 < first.length; ++i$2) - { if (first[i$2].to == null) - { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)) } } } - for (var i$3 = 0; i$3 < gap; ++i$3) - { newMarkers.push(gapMarkers) } - newMarkers.push(last) - } - return newMarkers -} - -// Remove spans that are empty and don't have a clearWhenEmpty -// option of false. -function clearEmptySpans(spans) { - for (var i = 0; i < spans.length; ++i) { - var span = spans[i] - if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) - { spans.splice(i--, 1) } - } - if (!spans.length) { return null } - return spans -} - -// Used to 'clip' out readOnly ranges when making a change. -function removeReadOnlyRanges(doc, from, to) { - var markers = null - doc.iter(from.line, to.line + 1, function (line) { - if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) { - var mark = line.markedSpans[i].marker - if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) - { (markers || (markers = [])).push(mark) } - } } - }) - if (!markers) { return null } - var parts = [{from: from, to: to}] - for (var i = 0; i < markers.length; ++i) { - var mk = markers[i], m = mk.find(0) - for (var j = 0; j < parts.length; ++j) { - var p = parts[j] - if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue } - var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to) - if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) - { newParts.push({from: p.from, to: m.from}) } - if (dto > 0 || !mk.inclusiveRight && !dto) - { newParts.push({from: m.to, to: p.to}) } - parts.splice.apply(parts, newParts) - j += newParts.length - 3 - } - } - return parts -} - -// Connect or disconnect spans from a line. -function detachMarkedSpans(line) { - var spans = line.markedSpans - if (!spans) { return } - for (var i = 0; i < spans.length; ++i) - { spans[i].marker.detachLine(line) } - line.markedSpans = null -} -function attachMarkedSpans(line, spans) { - if (!spans) { return } - for (var i = 0; i < spans.length; ++i) - { spans[i].marker.attachLine(line) } - line.markedSpans = spans -} - -// Helpers used when computing which overlapping collapsed span -// counts as the larger one. -function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 } -function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 } - -// Returns a number indicating which of two overlapping collapsed -// spans is larger (and thus includes the other). Falls back to -// comparing ids when the spans cover exactly the same range. -function compareCollapsedMarkers(a, b) { - var lenDiff = a.lines.length - b.lines.length - if (lenDiff != 0) { return lenDiff } - var aPos = a.find(), bPos = b.find() - var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b) - if (fromCmp) { return -fromCmp } - var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b) - if (toCmp) { return toCmp } - return b.id - a.id -} - -// Find out whether a line ends or starts in a collapsed span. If -// so, return the marker for that span. -function collapsedSpanAtSide(line, start) { - var sps = sawCollapsedSpans && line.markedSpans, found - if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) { - sp = sps[i] - if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && - (!found || compareCollapsedMarkers(found, sp.marker) < 0)) - { found = sp.marker } - } } - return found -} -function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) } -function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) } - -function collapsedSpanAround(line, ch) { - var sps = sawCollapsedSpans && line.markedSpans, found - if (sps) { for (var i = 0; i < sps.length; ++i) { - var sp = sps[i] - if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) && - (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker } - } } - return found -} - -// Test whether there exists a collapsed span that partially -// overlaps (covers the start or end, but not both) of a new span. -// Such overlap is not allowed. -function conflictingCollapsedRange(doc, lineNo, from, to, marker) { - var line = getLine(doc, lineNo) - var sps = sawCollapsedSpans && line.markedSpans - if (sps) { for (var i = 0; i < sps.length; ++i) { - var sp = sps[i] - if (!sp.marker.collapsed) { continue } - var found = sp.marker.find(0) - var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker) - var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker) - if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue } - if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || - fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) - { return true } - } } -} - -// A visual line is a line as drawn on the screen. Folding, for -// example, can cause multiple logical lines to appear on the same -// visual line. This finds the start of the visual line that the -// given line is part of (usually that is the line itself). -function visualLine(line) { - var merged - while (merged = collapsedSpanAtStart(line)) - { line = merged.find(-1, true).line } - return line -} - -function visualLineEnd(line) { - var merged - while (merged = collapsedSpanAtEnd(line)) - { line = merged.find(1, true).line } - return line -} - -// Returns an array of logical lines that continue the visual line -// started by the argument, or undefined if there are no such lines. -function visualLineContinued(line) { - var merged, lines - while (merged = collapsedSpanAtEnd(line)) { - line = merged.find(1, true).line - ;(lines || (lines = [])).push(line) - } - return lines -} - -// Get the line number of the start of the visual line that the -// given line number is part of. -function visualLineNo(doc, lineN) { - var line = getLine(doc, lineN), vis = visualLine(line) - if (line == vis) { return lineN } - return lineNo(vis) -} - -// Get the line number of the start of the next visual line after -// the given line. -function visualLineEndNo(doc, lineN) { - if (lineN > doc.lastLine()) { return lineN } - var line = getLine(doc, lineN), merged - if (!lineIsHidden(doc, line)) { return lineN } - while (merged = collapsedSpanAtEnd(line)) - { line = merged.find(1, true).line } - return lineNo(line) + 1 -} - -// Compute whether a line is hidden. Lines count as hidden when they -// are part of a visual line that starts with another line, or when -// they are entirely covered by collapsed, non-widget span. -function lineIsHidden(doc, line) { - var sps = sawCollapsedSpans && line.markedSpans - if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) { - sp = sps[i] - if (!sp.marker.collapsed) { continue } - if (sp.from == null) { return true } - if (sp.marker.widgetNode) { continue } - if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) - { return true } - } } -} -function lineIsHiddenInner(doc, line, span) { - if (span.to == null) { - var end = span.marker.find(1, true) - return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker)) - } - if (span.marker.inclusiveRight && span.to == line.text.length) - { return true } - for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) { - sp = line.markedSpans[i] - if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && - (sp.to == null || sp.to != span.from) && - (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && - lineIsHiddenInner(doc, line, sp)) { return true } - } -} - -// Find the height above the given line. -function heightAtLine(lineObj) { - lineObj = visualLine(lineObj) - - var h = 0, chunk = lineObj.parent - for (var i = 0; i < chunk.lines.length; ++i) { - var line = chunk.lines[i] - if (line == lineObj) { break } - else { h += line.height } - } - for (var p = chunk.parent; p; chunk = p, p = chunk.parent) { - for (var i$1 = 0; i$1 < p.children.length; ++i$1) { - var cur = p.children[i$1] - if (cur == chunk) { break } - else { h += cur.height } - } - } - return h -} - -// Compute the character length of a line, taking into account -// collapsed ranges (see markText) that might hide parts, and join -// other lines onto it. -function lineLength(line) { - if (line.height == 0) { return 0 } - var len = line.text.length, merged, cur = line - while (merged = collapsedSpanAtStart(cur)) { - var found = merged.find(0, true) - cur = found.from.line - len += found.from.ch - found.to.ch - } - cur = line - while (merged = collapsedSpanAtEnd(cur)) { - var found$1 = merged.find(0, true) - len -= cur.text.length - found$1.from.ch - cur = found$1.to.line - len += cur.text.length - found$1.to.ch - } - return len -} - -// Find the longest line in the document. -function findMaxLine(cm) { - var d = cm.display, doc = cm.doc - d.maxLine = getLine(doc, doc.first) - d.maxLineLength = lineLength(d.maxLine) - d.maxLineChanged = true - doc.iter(function (line) { - var len = lineLength(line) - if (len > d.maxLineLength) { - d.maxLineLength = len - d.maxLine = line - } - }) -} - -// BIDI HELPERS - -function iterateBidiSections(order, from, to, f) { - if (!order) { return f(from, to, "ltr", 0) } - var found = false - for (var i = 0; i < order.length; ++i) { - var part = order[i] - if (part.from < to && part.to > from || from == to && part.to == from) { - f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr", i) - found = true - } - } - if (!found) { f(from, to, "ltr") } -} - -var bidiOther = null -function getBidiPartAt(order, ch, sticky) { - var found - bidiOther = null - for (var i = 0; i < order.length; ++i) { - var cur = order[i] - if (cur.from < ch && cur.to > ch) { return i } - if (cur.to == ch) { - if (cur.from != cur.to && sticky == "before") { found = i } - else { bidiOther = i } - } - if (cur.from == ch) { - if (cur.from != cur.to && sticky != "before") { found = i } - else { bidiOther = i } - } - } - return found != null ? found : bidiOther -} - -// Bidirectional ordering algorithm -// See http://unicode.org/reports/tr9/tr9-13.html for the algorithm -// that this (partially) implements. - -// One-char codes used for character types: -// L (L): Left-to-Right -// R (R): Right-to-Left -// r (AL): Right-to-Left Arabic -// 1 (EN): European Number -// + (ES): European Number Separator -// % (ET): European Number Terminator -// n (AN): Arabic Number -// , (CS): Common Number Separator -// m (NSM): Non-Spacing Mark -// b (BN): Boundary Neutral -// s (B): Paragraph Separator -// t (S): Segment Separator -// w (WS): Whitespace -// N (ON): Other Neutrals - -// Returns null if characters are ordered as they appear -// (left-to-right), or an array of sections ({from, to, level} -// objects) in the order in which they occur visually. -var bidiOrdering = (function() { - // Character types for codepoints 0 to 0xff - var lowTypes = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN" - // Character types for codepoints 0x600 to 0x6f9 - var arabicTypes = "nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111" - function charType(code) { - if (code <= 0xf7) { return lowTypes.charAt(code) } - else if (0x590 <= code && code <= 0x5f4) { return "R" } - else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) } - else if (0x6ee <= code && code <= 0x8ac) { return "r" } - else if (0x2000 <= code && code <= 0x200b) { return "w" } - else if (code == 0x200c) { return "b" } - else { return "L" } - } - - var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/ - var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/ - - function BidiSpan(level, from, to) { - this.level = level - this.from = from; this.to = to - } - - return function(str, direction) { - var outerType = direction == "ltr" ? "L" : "R" - - if (str.length == 0 || direction == "ltr" && !bidiRE.test(str)) { return false } - var len = str.length, types = [] - for (var i = 0; i < len; ++i) - { types.push(charType(str.charCodeAt(i))) } - - // W1. Examine each non-spacing mark (NSM) in the level run, and - // change the type of the NSM to the type of the previous - // character. If the NSM is at the start of the level run, it will - // get the type of sor. - for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) { - var type = types[i$1] - if (type == "m") { types[i$1] = prev } - else { prev = type } - } - - // W2. Search backwards from each instance of a European number - // until the first strong type (R, L, AL, or sor) is found. If an - // AL is found, change the type of the European number to Arabic - // number. - // W3. Change all ALs to R. - for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) { - var type$1 = types[i$2] - if (type$1 == "1" && cur == "r") { types[i$2] = "n" } - else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == "r") { types[i$2] = "R" } } - } - - // W4. A single European separator between two European numbers - // changes to a European number. A single common separator between - // two numbers of the same type changes to that type. - for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) { - var type$2 = types[i$3] - if (type$2 == "+" && prev$1 == "1" && types[i$3+1] == "1") { types[i$3] = "1" } - else if (type$2 == "," && prev$1 == types[i$3+1] && - (prev$1 == "1" || prev$1 == "n")) { types[i$3] = prev$1 } - prev$1 = type$2 - } - - // W5. A sequence of European terminators adjacent to European - // numbers changes to all European numbers. - // W6. Otherwise, separators and terminators change to Other - // Neutral. - for (var i$4 = 0; i$4 < len; ++i$4) { - var type$3 = types[i$4] - if (type$3 == ",") { types[i$4] = "N" } - else if (type$3 == "%") { - var end = (void 0) - for (end = i$4 + 1; end < len && types[end] == "%"; ++end) {} - var replace = (i$4 && types[i$4-1] == "!") || (end < len && types[end] == "1") ? "1" : "N" - for (var j = i$4; j < end; ++j) { types[j] = replace } - i$4 = end - 1 - } - } - - // W7. Search backwards from each instance of a European number - // until the first strong type (R, L, or sor) is found. If an L is - // found, then change the type of the European number to L. - for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) { - var type$4 = types[i$5] - if (cur$1 == "L" && type$4 == "1") { types[i$5] = "L" } - else if (isStrong.test(type$4)) { cur$1 = type$4 } - } - - // N1. A sequence of neutrals takes the direction of the - // surrounding strong text if the text on both sides has the same - // direction. European and Arabic numbers act as if they were R in - // terms of their influence on neutrals. Start-of-level-run (sor) - // and end-of-level-run (eor) are used at level run boundaries. - // N2. Any remaining neutrals take the embedding direction. - for (var i$6 = 0; i$6 < len; ++i$6) { - if (isNeutral.test(types[i$6])) { - var end$1 = (void 0) - for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {} - var before = (i$6 ? types[i$6-1] : outerType) == "L" - var after = (end$1 < len ? types[end$1] : outerType) == "L" - var replace$1 = before == after ? (before ? "L" : "R") : outerType - for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1 } - i$6 = end$1 - 1 - } - } - - // Here we depart from the documented algorithm, in order to avoid - // building up an actual levels array. Since there are only three - // levels (0, 1, 2) in an implementation that doesn't take - // explicit embedding into account, we can build up the order on - // the fly, without following the level-based algorithm. - var order = [], m - for (var i$7 = 0; i$7 < len;) { - if (countsAsLeft.test(types[i$7])) { - var start = i$7 - for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {} - order.push(new BidiSpan(0, start, i$7)) - } else { - var pos = i$7, at = order.length - for (++i$7; i$7 < len && types[i$7] != "L"; ++i$7) {} - for (var j$2 = pos; j$2 < i$7;) { - if (countsAsNum.test(types[j$2])) { - if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)) } - var nstart = j$2 - for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {} - order.splice(at, 0, new BidiSpan(2, nstart, j$2)) - pos = j$2 - } else { ++j$2 } - } - if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)) } - } - } - if (direction == "ltr") { - if (order[0].level == 1 && (m = str.match(/^\s+/))) { - order[0].from = m[0].length - order.unshift(new BidiSpan(0, 0, m[0].length)) - } - if (lst(order).level == 1 && (m = str.match(/\s+$/))) { - lst(order).to -= m[0].length - order.push(new BidiSpan(0, len - m[0].length, len)) - } - } - - return direction == "rtl" ? order.reverse() : order - } -})() - -// Get the bidi ordering for the given line (and cache it). Returns -// false for lines that are fully left-to-right, and an array of -// BidiSpan objects otherwise. -function getOrder(line, direction) { - var order = line.order - if (order == null) { order = line.order = bidiOrdering(line.text, direction) } - return order -} - -// EVENT HANDLING - -// Lightweight event framework. on/off also work on DOM nodes, -// registering native DOM handlers. - -var noHandlers = [] - -var on = function(emitter, type, f) { - if (emitter.addEventListener) { - emitter.addEventListener(type, f, false) - } else if (emitter.attachEvent) { - emitter.attachEvent("on" + type, f) - } else { - var map = emitter._handlers || (emitter._handlers = {}) - map[type] = (map[type] || noHandlers).concat(f) - } -} - -function getHandlers(emitter, type) { - return emitter._handlers && emitter._handlers[type] || noHandlers -} - -function off(emitter, type, f) { - if (emitter.removeEventListener) { - emitter.removeEventListener(type, f, false) - } else if (emitter.detachEvent) { - emitter.detachEvent("on" + type, f) - } else { - var map = emitter._handlers, arr = map && map[type] - if (arr) { - var index = indexOf(arr, f) - if (index > -1) - { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)) } - } - } -} - -function signal(emitter, type /*, values...*/) { - var handlers = getHandlers(emitter, type) - if (!handlers.length) { return } - var args = Array.prototype.slice.call(arguments, 2) - for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args) } -} - -// The DOM events that CodeMirror handles can be overridden by -// registering a (non-DOM) handler on the editor for the event name, -// and preventDefault-ing the event in that handler. -function signalDOMEvent(cm, e, override) { - if (typeof e == "string") - { e = {type: e, preventDefault: function() { this.defaultPrevented = true }} } - signal(cm, override || e.type, cm, e) - return e_defaultPrevented(e) || e.codemirrorIgnore -} - -function signalCursorActivity(cm) { - var arr = cm._handlers && cm._handlers.cursorActivity - if (!arr) { return } - var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []) - for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1) - { set.push(arr[i]) } } -} - -function hasHandler(emitter, type) { - return getHandlers(emitter, type).length > 0 -} - -// Add on and off methods to a constructor's prototype, to make -// registering events on such objects more convenient. -function eventMixin(ctor) { - ctor.prototype.on = function(type, f) {on(this, type, f)} - ctor.prototype.off = function(type, f) {off(this, type, f)} -} - -// Due to the fact that we still support jurassic IE versions, some -// compatibility wrappers are needed. - -function e_preventDefault(e) { - if (e.preventDefault) { e.preventDefault() } - else { e.returnValue = false } -} -function e_stopPropagation(e) { - if (e.stopPropagation) { e.stopPropagation() } - else { e.cancelBubble = true } -} -function e_defaultPrevented(e) { - return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false -} -function e_stop(e) {e_preventDefault(e); e_stopPropagation(e)} - -function e_target(e) {return e.target || e.srcElement} -function e_button(e) { - var b = e.which - if (b == null) { - if (e.button & 1) { b = 1 } - else if (e.button & 2) { b = 3 } - else if (e.button & 4) { b = 2 } - } - if (mac && e.ctrlKey && b == 1) { b = 3 } - return b -} - -// Detect drag-and-drop -var dragAndDrop = function() { - // There is *some* kind of drag-and-drop support in IE6-8, but I - // couldn't get it to work yet. - if (ie && ie_version < 9) { return false } - var div = elt('div') - return "draggable" in div || "dragDrop" in div -}() - -var zwspSupported -function zeroWidthElement(measure) { - if (zwspSupported == null) { - var test = elt("span", "\u200b") - removeChildrenAndAdd(measure, elt("span", [test, document.createTextNode("x")])) - if (measure.firstChild.offsetHeight != 0) - { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8) } - } - var node = zwspSupported ? elt("span", "\u200b") : - elt("span", "\u00a0", null, "display: inline-block; width: 1px; margin-right: -1px") - node.setAttribute("cm-text", "") - return node -} - -// Feature-detect IE's crummy client rect reporting for bidi text -var badBidiRects -function hasBadBidiRects(measure) { - if (badBidiRects != null) { return badBidiRects } - var txt = removeChildrenAndAdd(measure, document.createTextNode("A\u062eA")) - var r0 = range(txt, 0, 1).getBoundingClientRect() - var r1 = range(txt, 1, 2).getBoundingClientRect() - removeChildren(measure) - if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780) - return badBidiRects = (r1.right - r0.right < 3) -} - -// See if "".split is the broken IE version, if so, provide an -// alternative way to split lines. -var splitLinesAuto = "\n\nb".split(/\n/).length != 3 ? function (string) { - var pos = 0, result = [], l = string.length - while (pos <= l) { - var nl = string.indexOf("\n", pos) - if (nl == -1) { nl = string.length } - var line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl) - var rt = line.indexOf("\r") - if (rt != -1) { - result.push(line.slice(0, rt)) - pos += rt + 1 - } else { - result.push(line) - pos = nl + 1 - } - } - return result -} : function (string) { return string.split(/\r\n?|\n/); } - -var hasSelection = window.getSelection ? function (te) { - try { return te.selectionStart != te.selectionEnd } - catch(e) { return false } -} : function (te) { - var range - try {range = te.ownerDocument.selection.createRange()} - catch(e) {} - if (!range || range.parentElement() != te) { return false } - return range.compareEndPoints("StartToEnd", range) != 0 -} - -var hasCopyEvent = (function () { - var e = elt("div") - if ("oncopy" in e) { return true } - e.setAttribute("oncopy", "return;") - return typeof e.oncopy == "function" -})() - -var badZoomedRects = null -function hasBadZoomedRects(measure) { - if (badZoomedRects != null) { return badZoomedRects } - var node = removeChildrenAndAdd(measure, elt("span", "x")) - var normal = node.getBoundingClientRect() - var fromRange = range(node, 0, 1).getBoundingClientRect() - return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1 -} - -var modes = {}; -var mimeModes = {}; -// Extra arguments are stored as the mode's dependencies, which is -// used by (legacy) mechanisms like loadmode.js to automatically -// load a mode. (Preferred mechanism is the require/define calls.) -function defineMode(name, mode) { - if (arguments.length > 2) - { mode.dependencies = Array.prototype.slice.call(arguments, 2) } - modes[name] = mode -} - -function defineMIME(mime, spec) { - mimeModes[mime] = spec -} - -// Given a MIME type, a {name, ...options} config object, or a name -// string, return a mode config object. -function resolveMode(spec) { - if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) { - spec = mimeModes[spec] - } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) { - var found = mimeModes[spec.name] - if (typeof found == "string") { found = {name: found} } - spec = createObj(found, spec) - spec.name = found.name - } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) { - return resolveMode("application/xml") - } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+json$/.test(spec)) { - return resolveMode("application/json") - } - if (typeof spec == "string") { return {name: spec} } - else { return spec || {name: "null"} } -} - -// Given a mode spec (anything that resolveMode accepts), find and -// initialize an actual mode object. -function getMode(options, spec) { - spec = resolveMode(spec) - var mfactory = modes[spec.name] - if (!mfactory) { return getMode(options, "text/plain") } - var modeObj = mfactory(options, spec) - if (modeExtensions.hasOwnProperty(spec.name)) { - var exts = modeExtensions[spec.name] - for (var prop in exts) { - if (!exts.hasOwnProperty(prop)) { continue } - if (modeObj.hasOwnProperty(prop)) { modeObj["_" + prop] = modeObj[prop] } - modeObj[prop] = exts[prop] - } - } - modeObj.name = spec.name - if (spec.helperType) { modeObj.helperType = spec.helperType } - if (spec.modeProps) { for (var prop$1 in spec.modeProps) - { modeObj[prop$1] = spec.modeProps[prop$1] } } - - return modeObj -} - -// This can be used to attach properties to mode objects from -// outside the actual mode definition. -var modeExtensions = {} -function extendMode(mode, properties) { - var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {}) - copyObj(properties, exts) -} - -function copyState(mode, state) { - if (state === true) { return state } - if (mode.copyState) { return mode.copyState(state) } - var nstate = {} - for (var n in state) { - var val = state[n] - if (val instanceof Array) { val = val.concat([]) } - nstate[n] = val - } - return nstate -} - -// Given a mode and a state (for that mode), find the inner mode and -// state at the position that the state refers to. -function innerMode(mode, state) { - var info - while (mode.innerMode) { - info = mode.innerMode(state) - if (!info || info.mode == mode) { break } - state = info.state - mode = info.mode - } - return info || {mode: mode, state: state} -} - -function startState(mode, a1, a2) { - return mode.startState ? mode.startState(a1, a2) : true -} - -// STRING STREAM - -// Fed to the mode parsers, provides helper functions to make -// parsers more succinct. - -var StringStream = function(string, tabSize, lineOracle) { - this.pos = this.start = 0 - this.string = string - this.tabSize = tabSize || 8 - this.lastColumnPos = this.lastColumnValue = 0 - this.lineStart = 0 - this.lineOracle = lineOracle -}; - -StringStream.prototype.eol = function () {return this.pos >= this.string.length}; -StringStream.prototype.sol = function () {return this.pos == this.lineStart}; -StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined}; -StringStream.prototype.next = function () { - if (this.pos < this.string.length) - { return this.string.charAt(this.pos++) } -}; -StringStream.prototype.eat = function (match) { - var ch = this.string.charAt(this.pos) - var ok - if (typeof match == "string") { ok = ch == match } - else { ok = ch && (match.test ? match.test(ch) : match(ch)) } - if (ok) {++this.pos; return ch} -}; -StringStream.prototype.eatWhile = function (match) { - var start = this.pos - while (this.eat(match)){} - return this.pos > start -}; -StringStream.prototype.eatSpace = function () { - var this$1 = this; - - var start = this.pos - while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) { ++this$1.pos } - return this.pos > start -}; -StringStream.prototype.skipToEnd = function () {this.pos = this.string.length}; -StringStream.prototype.skipTo = function (ch) { - var found = this.string.indexOf(ch, this.pos) - if (found > -1) {this.pos = found; return true} -}; -StringStream.prototype.backUp = function (n) {this.pos -= n}; -StringStream.prototype.column = function () { - if (this.lastColumnPos < this.start) { - this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue) - this.lastColumnPos = this.start - } - return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0) -}; -StringStream.prototype.indentation = function () { - return countColumn(this.string, null, this.tabSize) - - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0) -}; -StringStream.prototype.match = function (pattern, consume, caseInsensitive) { - if (typeof pattern == "string") { - var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; } - var substr = this.string.substr(this.pos, pattern.length) - if (cased(substr) == cased(pattern)) { - if (consume !== false) { this.pos += pattern.length } - return true - } - } else { - var match = this.string.slice(this.pos).match(pattern) - if (match && match.index > 0) { return null } - if (match && consume !== false) { this.pos += match[0].length } - return match - } -}; -StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)}; -StringStream.prototype.hideFirstChars = function (n, inner) { - this.lineStart += n - try { return inner() } - finally { this.lineStart -= n } -}; -StringStream.prototype.lookAhead = function (n) { - var oracle = this.lineOracle - return oracle && oracle.lookAhead(n) -}; -StringStream.prototype.baseToken = function () { - var oracle = this.lineOracle - return oracle && oracle.baseToken(this.pos) -}; - -var SavedContext = function(state, lookAhead) { - this.state = state - this.lookAhead = lookAhead -}; - -var Context = function(doc, state, line, lookAhead) { - this.state = state - this.doc = doc - this.line = line - this.maxLookAhead = lookAhead || 0 - this.baseTokens = null - this.baseTokenPos = 1 -}; - -Context.prototype.lookAhead = function (n) { - var line = this.doc.getLine(this.line + n) - if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n } - return line -}; - -Context.prototype.baseToken = function (n) { - var this$1 = this; - - if (!this.baseTokens) { return null } - while (this.baseTokens[this.baseTokenPos] <= n) - { this$1.baseTokenPos += 2 } - var type = this.baseTokens[this.baseTokenPos + 1] - return {type: type && type.replace(/( |^)overlay .*/, ""), - size: this.baseTokens[this.baseTokenPos] - n} -}; - -Context.prototype.nextLine = function () { - this.line++ - if (this.maxLookAhead > 0) { this.maxLookAhead-- } -}; - -Context.fromSaved = function (doc, saved, line) { - if (saved instanceof SavedContext) - { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) } - else - { return new Context(doc, copyState(doc.mode, saved), line) } -}; - -Context.prototype.save = function (copy) { - var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state - return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state -}; - - -// Compute a style array (an array starting with a mode generation -// -- for invalidation -- followed by pairs of end positions and -// style strings), which is used to highlight the tokens on the -// line. -function highlightLine(cm, line, context, forceToEnd) { - // A styles array always starts with a number identifying the - // mode/overlays that it is based on (for easy invalidation). - var st = [cm.state.modeGen], lineClasses = {} - // Compute the base array of styles - runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); }, - lineClasses, forceToEnd) - var state = context.state - - // Run overlays, adjust style array. - var loop = function ( o ) { - context.baseTokens = st - var overlay = cm.state.overlays[o], i = 1, at = 0 - context.state = true - runMode(cm, line.text, overlay.mode, context, function (end, style) { - var start = i - // Ensure there's a token end at the current position, and that i points at it - while (at < end) { - var i_end = st[i] - if (i_end > end) - { st.splice(i, 1, end, st[i+1], i_end) } - i += 2 - at = Math.min(end, i_end) - } - if (!style) { return } - if (overlay.opaque) { - st.splice(start, i - start, end, "overlay " + style) - i = start + 2 - } else { - for (; start < i; start += 2) { - var cur = st[start+1] - st[start+1] = (cur ? cur + " " : "") + "overlay " + style - } - } - }, lineClasses) - context.state = state - context.baseTokens = null - context.baseTokenPos = 1 - }; - - for (var o = 0; o < cm.state.overlays.length; ++o) loop( o ); - - return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null} -} - -function getLineStyles(cm, line, updateFrontier) { - if (!line.styles || line.styles[0] != cm.state.modeGen) { - var context = getContextBefore(cm, lineNo(line)) - var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state) - var result = highlightLine(cm, line, context) - if (resetState) { context.state = resetState } - line.stateAfter = context.save(!resetState) - line.styles = result.styles - if (result.classes) { line.styleClasses = result.classes } - else if (line.styleClasses) { line.styleClasses = null } - if (updateFrontier === cm.doc.highlightFrontier) - { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier) } - } - return line.styles -} - -function getContextBefore(cm, n, precise) { - var doc = cm.doc, display = cm.display - if (!doc.mode.startState) { return new Context(doc, true, n) } - var start = findStartLine(cm, n, precise) - var saved = start > doc.first && getLine(doc, start - 1).stateAfter - var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start) - - doc.iter(start, n, function (line) { - processLine(cm, line.text, context) - var pos = context.line - line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null - context.nextLine() - }) - if (precise) { doc.modeFrontier = context.line } - return context -} - -// Lightweight form of highlight -- proceed over this line and -// update state, but don't save a style array. Used for lines that -// aren't currently visible. -function processLine(cm, text, context, startAt) { - var mode = cm.doc.mode - var stream = new StringStream(text, cm.options.tabSize, context) - stream.start = stream.pos = startAt || 0 - if (text == "") { callBlankLine(mode, context.state) } - while (!stream.eol()) { - readToken(mode, stream, context.state) - stream.start = stream.pos - } -} - -function callBlankLine(mode, state) { - if (mode.blankLine) { return mode.blankLine(state) } - if (!mode.innerMode) { return } - var inner = innerMode(mode, state) - if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) } -} - -function readToken(mode, stream, state, inner) { - for (var i = 0; i < 10; i++) { - if (inner) { inner[0] = innerMode(mode, state).mode } - var style = mode.token(stream, state) - if (stream.pos > stream.start) { return style } - } - throw new Error("Mode " + mode.name + " failed to advance stream.") -} - -var Token = function(stream, type, state) { - this.start = stream.start; this.end = stream.pos - this.string = stream.current() - this.type = type || null - this.state = state -}; - -// Utility for getTokenAt and getLineTokens -function takeToken(cm, pos, precise, asArray) { - var doc = cm.doc, mode = doc.mode, style - pos = clipPos(doc, pos) - var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise) - var stream = new StringStream(line.text, cm.options.tabSize, context), tokens - if (asArray) { tokens = [] } - while ((asArray || stream.pos < pos.ch) && !stream.eol()) { - stream.start = stream.pos - style = readToken(mode, stream, context.state) - if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))) } - } - return asArray ? tokens : new Token(stream, style, context.state) -} - -function extractLineClasses(type, output) { - if (type) { for (;;) { - var lineClass = type.match(/(?:^|\s+)line-(background-)?(\S+)/) - if (!lineClass) { break } - type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length) - var prop = lineClass[1] ? "bgClass" : "textClass" - if (output[prop] == null) - { output[prop] = lineClass[2] } - else if (!(new RegExp("(?:^|\s)" + lineClass[2] + "(?:$|\s)")).test(output[prop])) - { output[prop] += " " + lineClass[2] } - } } - return type -} - -// Run the given mode's parser over a line, calling f for each token. -function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) { - var flattenSpans = mode.flattenSpans - if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans } - var curStart = 0, curStyle = null - var stream = new StringStream(text, cm.options.tabSize, context), style - var inner = cm.options.addModeClass && [null] - if (text == "") { extractLineClasses(callBlankLine(mode, context.state), lineClasses) } - while (!stream.eol()) { - if (stream.pos > cm.options.maxHighlightLength) { - flattenSpans = false - if (forceToEnd) { processLine(cm, text, context, stream.pos) } - stream.pos = text.length - style = null - } else { - style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses) - } - if (inner) { - var mName = inner[0].name - if (mName) { style = "m-" + (style ? mName + " " + style : mName) } - } - if (!flattenSpans || curStyle != style) { - while (curStart < stream.start) { - curStart = Math.min(stream.start, curStart + 5000) - f(curStart, curStyle) - } - curStyle = style - } - stream.start = stream.pos - } - while (curStart < stream.pos) { - // Webkit seems to refuse to render text nodes longer than 57444 - // characters, and returns inaccurate measurements in nodes - // starting around 5000 chars. - var pos = Math.min(stream.pos, curStart + 5000) - f(pos, curStyle) - curStart = pos - } -} - -// Finds the line to start with when starting a parse. Tries to -// find a line with a stateAfter, so that it can start with a -// valid state. If that fails, it returns the line with the -// smallest indentation, which tends to need the least context to -// parse correctly. -function findStartLine(cm, n, precise) { - var minindent, minline, doc = cm.doc - var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100) - for (var search = n; search > lim; --search) { - if (search <= doc.first) { return doc.first } - var line = getLine(doc, search - 1), after = line.stateAfter - if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier)) - { return search } - var indented = countColumn(line.text, null, cm.options.tabSize) - if (minline == null || minindent > indented) { - minline = search - 1 - minindent = indented - } - } - return minline -} - -function retreatFrontier(doc, n) { - doc.modeFrontier = Math.min(doc.modeFrontier, n) - if (doc.highlightFrontier < n - 10) { return } - var start = doc.first - for (var line = n - 1; line > start; line--) { - var saved = getLine(doc, line).stateAfter - // change is on 3 - // state on line 1 looked ahead 2 -- so saw 3 - // test 1 + 2 < 3 should cover this - if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) { - start = line + 1 - break - } - } - doc.highlightFrontier = Math.min(doc.highlightFrontier, start) -} - -// LINE DATA STRUCTURE - -// Line objects. These hold state related to a line, including -// highlighting info (the styles array). -var Line = function(text, markedSpans, estimateHeight) { - this.text = text - attachMarkedSpans(this, markedSpans) - this.height = estimateHeight ? estimateHeight(this) : 1 -}; - -Line.prototype.lineNo = function () { return lineNo(this) }; -eventMixin(Line) - -// Change the content (text, markers) of a line. Automatically -// invalidates cached information and tries to re-estimate the -// line's height. -function updateLine(line, text, markedSpans, estimateHeight) { - line.text = text - if (line.stateAfter) { line.stateAfter = null } - if (line.styles) { line.styles = null } - if (line.order != null) { line.order = null } - detachMarkedSpans(line) - attachMarkedSpans(line, markedSpans) - var estHeight = estimateHeight ? estimateHeight(line) : 1 - if (estHeight != line.height) { updateLineHeight(line, estHeight) } -} - -// Detach a line from the document tree and its markers. -function cleanUpLine(line) { - line.parent = null - detachMarkedSpans(line) -} - -// Convert a style as returned by a mode (either null, or a string -// containing one or more styles) to a CSS style. This is cached, -// and also looks for line-wide styles. -var styleToClassCache = {}; -var styleToClassCacheWithMode = {}; -function interpretTokenStyle(style, options) { - if (!style || /^\s*$/.test(style)) { return null } - var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache - return cache[style] || - (cache[style] = style.replace(/\S+/g, "cm-$&")) -} - -// Render the DOM representation of the text of a line. Also builds -// up a 'line map', which points at the DOM nodes that represent -// specific stretches of text, and is used by the measuring code. -// The returned object contains the DOM node, this map, and -// information about line-wide styles that were set by the mode. -function buildLineContent(cm, lineView) { - // The padding-right forces the element to have a 'border', which - // is needed on Webkit to be able to get line-level bounding - // rectangles for it (in measureChar). - var content = eltP("span", null, null, webkit ? "padding-right: .1px" : null) - var builder = {pre: eltP("pre", [content], "CodeMirror-line"), content: content, - col: 0, pos: 0, cm: cm, - trailingSpace: false, - splitSpaces: cm.getOption("lineWrapping")} - lineView.measure = {} - - // Iterate over the logical lines that make up this visual line. - for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) { - var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0) - builder.pos = 0 - builder.addToken = buildToken - // Optionally wire in some hacks into the token-rendering - // algorithm, to deal with browser quirks. - if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction))) - { builder.addToken = buildTokenBadBidi(builder.addToken, order) } - builder.map = [] - var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line) - insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate)) - if (line.styleClasses) { - if (line.styleClasses.bgClass) - { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || "") } - if (line.styleClasses.textClass) - { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || "") } - } - - // Ensure at least a single node is present, for measuring. - if (builder.map.length == 0) - { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))) } - - // Store the map and a cache object for the current logical line - if (i == 0) { - lineView.measure.map = builder.map - lineView.measure.cache = {} - } else { - ;(lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map) - ;(lineView.measure.caches || (lineView.measure.caches = [])).push({}) - } - } - - // See issue #2901 - if (webkit) { - var last = builder.content.lastChild - if (/\bcm-tab\b/.test(last.className) || (last.querySelector && last.querySelector(".cm-tab"))) - { builder.content.className = "cm-tab-wrap-hack" } - } - - signal(cm, "renderLine", cm, lineView.line, builder.pre) - if (builder.pre.className) - { builder.textClass = joinClasses(builder.pre.className, builder.textClass || "") } - - return builder -} - -function defaultSpecialCharPlaceholder(ch) { - var token = elt("span", "\u2022", "cm-invalidchar") - token.title = "\\u" + ch.charCodeAt(0).toString(16) - token.setAttribute("aria-label", token.title) - return token -} - -// Build up the DOM representation for a single token, and add it to -// the line map. Takes care to render special characters separately. -function buildToken(builder, text, style, startStyle, endStyle, title, css) { - if (!text) { return } - var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text - var special = builder.cm.state.specialChars, mustWrap = false - var content - if (!special.test(text)) { - builder.col += text.length - content = document.createTextNode(displayText) - builder.map.push(builder.pos, builder.pos + text.length, content) - if (ie && ie_version < 9) { mustWrap = true } - builder.pos += text.length - } else { - content = document.createDocumentFragment() - var pos = 0 - while (true) { - special.lastIndex = pos - var m = special.exec(text) - var skipped = m ? m.index - pos : text.length - pos - if (skipped) { - var txt = document.createTextNode(displayText.slice(pos, pos + skipped)) - if (ie && ie_version < 9) { content.appendChild(elt("span", [txt])) } - else { content.appendChild(txt) } - builder.map.push(builder.pos, builder.pos + skipped, txt) - builder.col += skipped - builder.pos += skipped - } - if (!m) { break } - pos += skipped + 1 - var txt$1 = (void 0) - if (m[0] == "\t") { - var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize - txt$1 = content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab")) - txt$1.setAttribute("role", "presentation") - txt$1.setAttribute("cm-text", "\t") - builder.col += tabWidth - } else if (m[0] == "\r" || m[0] == "\n") { - txt$1 = content.appendChild(elt("span", m[0] == "\r" ? "\u240d" : "\u2424", "cm-invalidchar")) - txt$1.setAttribute("cm-text", m[0]) - builder.col += 1 - } else { - txt$1 = builder.cm.options.specialCharPlaceholder(m[0]) - txt$1.setAttribute("cm-text", m[0]) - if (ie && ie_version < 9) { content.appendChild(elt("span", [txt$1])) } - else { content.appendChild(txt$1) } - builder.col += 1 - } - builder.map.push(builder.pos, builder.pos + 1, txt$1) - builder.pos++ - } - } - builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32 - if (style || startStyle || endStyle || mustWrap || css) { - var fullStyle = style || "" - if (startStyle) { fullStyle += startStyle } - if (endStyle) { fullStyle += endStyle } - var token = elt("span", [content], fullStyle, css) - if (title) { token.title = title } - return builder.content.appendChild(token) - } - builder.content.appendChild(content) -} - -// Change some spaces to NBSP to prevent the browser from collapsing -// trailing spaces at the end of a line when rendering text (issue #1362). -function splitSpaces(text, trailingBefore) { - if (text.length > 1 && !/ /.test(text)) { return text } - var spaceBefore = trailingBefore, result = "" - for (var i = 0; i < text.length; i++) { - var ch = text.charAt(i) - if (ch == " " && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32)) - { ch = "\u00a0" } - result += ch - spaceBefore = ch == " " - } - return result -} - -// Work around nonsense dimensions being reported for stretches of -// right-to-left text. -function buildTokenBadBidi(inner, order) { - return function (builder, text, style, startStyle, endStyle, title, css) { - style = style ? style + " cm-force-border" : "cm-force-border" - var start = builder.pos, end = start + text.length - for (;;) { - // Find the part that overlaps with the start of this text - var part = (void 0) - for (var i = 0; i < order.length; i++) { - part = order[i] - if (part.to > start && part.from <= start) { break } - } - if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, title, css) } - inner(builder, text.slice(0, part.to - start), style, startStyle, null, title, css) - startStyle = null - text = text.slice(part.to - start) - start = part.to - } - } -} - -function buildCollapsedSpan(builder, size, marker, ignoreWidget) { - var widget = !ignoreWidget && marker.widgetNode - if (widget) { builder.map.push(builder.pos, builder.pos + size, widget) } - if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) { - if (!widget) - { widget = builder.content.appendChild(document.createElement("span")) } - widget.setAttribute("cm-marker", marker.id) - } - if (widget) { - builder.cm.display.input.setUneditable(widget) - builder.content.appendChild(widget) - } - builder.pos += size - builder.trailingSpace = false -} - -// Outputs a number of spans to make up a line, taking highlighting -// and marked text into account. -function insertLineContent(line, builder, styles) { - var spans = line.markedSpans, allText = line.text, at = 0 - if (!spans) { - for (var i$1 = 1; i$1 < styles.length; i$1+=2) - { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)) } - return - } - - var len = allText.length, pos = 0, i = 1, text = "", style, css - var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed - for (;;) { - if (nextChange == pos) { // Update current marker set - spanStyle = spanEndStyle = spanStartStyle = title = css = "" - collapsed = null; nextChange = Infinity - var foundBookmarks = [], endStyles = (void 0) - for (var j = 0; j < spans.length; ++j) { - var sp = spans[j], m = sp.marker - if (m.type == "bookmark" && sp.from == pos && m.widgetNode) { - foundBookmarks.push(m) - } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) { - if (sp.to != null && sp.to != pos && nextChange > sp.to) { - nextChange = sp.to - spanEndStyle = "" - } - if (m.className) { spanStyle += " " + m.className } - if (m.css) { css = (css ? css + ";" : "") + m.css } - if (m.startStyle && sp.from == pos) { spanStartStyle += " " + m.startStyle } - if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to) } - if (m.title && !title) { title = m.title } - if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) - { collapsed = sp } - } else if (sp.from > pos && nextChange > sp.from) { - nextChange = sp.from - } - } - if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2) - { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += " " + endStyles[j$1] } } } - - if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2) - { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]) } } - if (collapsed && (collapsed.from || 0) == pos) { - buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, - collapsed.marker, collapsed.from == null) - if (collapsed.to == null) { return } - if (collapsed.to == pos) { collapsed = false } - } - } - if (pos >= len) { break } - - var upto = Math.min(len, nextChange) - while (true) { - if (text) { - var end = pos + text.length - if (!collapsed) { - var tokenText = end > upto ? text.slice(0, upto - pos) : text - builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, - spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : "", title, css) - } - if (end >= upto) {text = text.slice(upto - pos); pos = upto; break} - pos = end - spanStartStyle = "" - } - text = allText.slice(at, at = styles[i++]) - style = interpretTokenStyle(styles[i++], builder.cm.options) - } - } -} - - -// These objects are used to represent the visible (currently drawn) -// part of the document. A LineView may correspond to multiple -// logical lines, if those are connected by collapsed ranges. -function LineView(doc, line, lineN) { - // The starting line - this.line = line - // Continuing lines, if any - this.rest = visualLineContinued(line) - // Number of logical lines in this visual line - this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1 - this.node = this.text = null - this.hidden = lineIsHidden(doc, line) -} - -// Create a range of LineView objects for the given lines. -function buildViewArray(cm, from, to) { - var array = [], nextPos - for (var pos = from; pos < to; pos = nextPos) { - var view = new LineView(cm.doc, getLine(cm.doc, pos), pos) - nextPos = pos + view.size - array.push(view) - } - return array -} - -var operationGroup = null - -function pushOperation(op) { - if (operationGroup) { - operationGroup.ops.push(op) - } else { - op.ownsGroup = operationGroup = { - ops: [op], - delayedCallbacks: [] - } - } -} - -function fireCallbacksForOps(group) { - // Calls delayed callbacks and cursorActivity handlers until no - // new ones appear - var callbacks = group.delayedCallbacks, i = 0 - do { - for (; i < callbacks.length; i++) - { callbacks[i].call(null) } - for (var j = 0; j < group.ops.length; j++) { - var op = group.ops[j] - if (op.cursorActivityHandlers) - { while (op.cursorActivityCalled < op.cursorActivityHandlers.length) - { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm) } } - } - } while (i < callbacks.length) -} - -function finishOperation(op, endCb) { - var group = op.ownsGroup - if (!group) { return } - - try { fireCallbacksForOps(group) } - finally { - operationGroup = null - endCb(group) - } -} - -var orphanDelayedCallbacks = null - -// Often, we want to signal events at a point where we are in the -// middle of some work, but don't want the handler to start calling -// other methods on the editor, which might be in an inconsistent -// state or simply not expect any other events to happen. -// signalLater looks whether there are any handlers, and schedules -// them to be executed when the last operation ends, or, if no -// operation is active, when a timeout fires. -function signalLater(emitter, type /*, values...*/) { - var arr = getHandlers(emitter, type) - if (!arr.length) { return } - var args = Array.prototype.slice.call(arguments, 2), list - if (operationGroup) { - list = operationGroup.delayedCallbacks - } else if (orphanDelayedCallbacks) { - list = orphanDelayedCallbacks - } else { - list = orphanDelayedCallbacks = [] - setTimeout(fireOrphanDelayed, 0) - } - var loop = function ( i ) { - list.push(function () { return arr[i].apply(null, args); }) - }; - - for (var i = 0; i < arr.length; ++i) - loop( i ); -} - -function fireOrphanDelayed() { - var delayed = orphanDelayedCallbacks - orphanDelayedCallbacks = null - for (var i = 0; i < delayed.length; ++i) { delayed[i]() } -} - -// When an aspect of a line changes, a string is added to -// lineView.changes. This updates the relevant part of the line's -// DOM structure. -function updateLineForChanges(cm, lineView, lineN, dims) { - for (var j = 0; j < lineView.changes.length; j++) { - var type = lineView.changes[j] - if (type == "text") { updateLineText(cm, lineView) } - else if (type == "gutter") { updateLineGutter(cm, lineView, lineN, dims) } - else if (type == "class") { updateLineClasses(cm, lineView) } - else if (type == "widget") { updateLineWidgets(cm, lineView, dims) } - } - lineView.changes = null -} - -// Lines with gutter elements, widgets or a background class need to -// be wrapped, and have the extra elements added to the wrapper div -function ensureLineWrapped(lineView) { - if (lineView.node == lineView.text) { - lineView.node = elt("div", null, null, "position: relative") - if (lineView.text.parentNode) - { lineView.text.parentNode.replaceChild(lineView.node, lineView.text) } - lineView.node.appendChild(lineView.text) - if (ie && ie_version < 8) { lineView.node.style.zIndex = 2 } - } - return lineView.node -} - -function updateLineBackground(cm, lineView) { - var cls = lineView.bgClass ? lineView.bgClass + " " + (lineView.line.bgClass || "") : lineView.line.bgClass - if (cls) { cls += " CodeMirror-linebackground" } - if (lineView.background) { - if (cls) { lineView.background.className = cls } - else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null } - } else if (cls) { - var wrap = ensureLineWrapped(lineView) - lineView.background = wrap.insertBefore(elt("div", null, cls), wrap.firstChild) - cm.display.input.setUneditable(lineView.background) - } -} - -// Wrapper around buildLineContent which will reuse the structure -// in display.externalMeasured when possible. -function getLineContent(cm, lineView) { - var ext = cm.display.externalMeasured - if (ext && ext.line == lineView.line) { - cm.display.externalMeasured = null - lineView.measure = ext.measure - return ext.built - } - return buildLineContent(cm, lineView) -} - -// Redraw the line's text. Interacts with the background and text -// classes because the mode may output tokens that influence these -// classes. -function updateLineText(cm, lineView) { - var cls = lineView.text.className - var built = getLineContent(cm, lineView) - if (lineView.text == lineView.node) { lineView.node = built.pre } - lineView.text.parentNode.replaceChild(built.pre, lineView.text) - lineView.text = built.pre - if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) { - lineView.bgClass = built.bgClass - lineView.textClass = built.textClass - updateLineClasses(cm, lineView) - } else if (cls) { - lineView.text.className = cls - } -} - -function updateLineClasses(cm, lineView) { - updateLineBackground(cm, lineView) - if (lineView.line.wrapClass) - { ensureLineWrapped(lineView).className = lineView.line.wrapClass } - else if (lineView.node != lineView.text) - { lineView.node.className = "" } - var textClass = lineView.textClass ? lineView.textClass + " " + (lineView.line.textClass || "") : lineView.line.textClass - lineView.text.className = textClass || "" -} - -function updateLineGutter(cm, lineView, lineN, dims) { - if (lineView.gutter) { - lineView.node.removeChild(lineView.gutter) - lineView.gutter = null - } - if (lineView.gutterBackground) { - lineView.node.removeChild(lineView.gutterBackground) - lineView.gutterBackground = null - } - if (lineView.line.gutterClass) { - var wrap = ensureLineWrapped(lineView) - lineView.gutterBackground = elt("div", null, "CodeMirror-gutter-background " + lineView.line.gutterClass, - ("left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px; width: " + (dims.gutterTotalWidth) + "px")) - cm.display.input.setUneditable(lineView.gutterBackground) - wrap.insertBefore(lineView.gutterBackground, lineView.text) - } - var markers = lineView.line.gutterMarkers - if (cm.options.lineNumbers || markers) { - var wrap$1 = ensureLineWrapped(lineView) - var gutterWrap = lineView.gutter = elt("div", null, "CodeMirror-gutter-wrapper", ("left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px")) - cm.display.input.setUneditable(gutterWrap) - wrap$1.insertBefore(gutterWrap, lineView.text) - if (lineView.line.gutterClass) - { gutterWrap.className += " " + lineView.line.gutterClass } - if (cm.options.lineNumbers && (!markers || !markers["CodeMirror-linenumbers"])) - { lineView.lineNumber = gutterWrap.appendChild( - elt("div", lineNumberFor(cm.options, lineN), - "CodeMirror-linenumber CodeMirror-gutter-elt", - ("left: " + (dims.gutterLeft["CodeMirror-linenumbers"]) + "px; width: " + (cm.display.lineNumInnerWidth) + "px"))) } - if (markers) { for (var k = 0; k < cm.options.gutters.length; ++k) { - var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id] - if (found) - { gutterWrap.appendChild(elt("div", [found], "CodeMirror-gutter-elt", - ("left: " + (dims.gutterLeft[id]) + "px; width: " + (dims.gutterWidth[id]) + "px"))) } - } } - } -} - -function updateLineWidgets(cm, lineView, dims) { - if (lineView.alignable) { lineView.alignable = null } - for (var node = lineView.node.firstChild, next = (void 0); node; node = next) { - next = node.nextSibling - if (node.className == "CodeMirror-linewidget") - { lineView.node.removeChild(node) } - } - insertLineWidgets(cm, lineView, dims) -} - -// Build a line's DOM representation from scratch -function buildLineElement(cm, lineView, lineN, dims) { - var built = getLineContent(cm, lineView) - lineView.text = lineView.node = built.pre - if (built.bgClass) { lineView.bgClass = built.bgClass } - if (built.textClass) { lineView.textClass = built.textClass } - - updateLineClasses(cm, lineView) - updateLineGutter(cm, lineView, lineN, dims) - insertLineWidgets(cm, lineView, dims) - return lineView.node -} - -// A lineView may contain multiple logical lines (when merged by -// collapsed spans). The widgets for all of them need to be drawn. -function insertLineWidgets(cm, lineView, dims) { - insertLineWidgetsFor(cm, lineView.line, lineView, dims, true) - if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++) - { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false) } } -} - -function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) { - if (!line.widgets) { return } - var wrap = ensureLineWrapped(lineView) - for (var i = 0, ws = line.widgets; i < ws.length; ++i) { - var widget = ws[i], node = elt("div", [widget.node], "CodeMirror-linewidget") - if (!widget.handleMouseEvents) { node.setAttribute("cm-ignore-events", "true") } - positionLineWidget(widget, node, lineView, dims) - cm.display.input.setUneditable(node) - if (allowAbove && widget.above) - { wrap.insertBefore(node, lineView.gutter || lineView.text) } - else - { wrap.appendChild(node) } - signalLater(widget, "redraw") - } -} - -function positionLineWidget(widget, node, lineView, dims) { - if (widget.noHScroll) { - ;(lineView.alignable || (lineView.alignable = [])).push(node) - var width = dims.wrapperWidth - node.style.left = dims.fixedPos + "px" - if (!widget.coverGutter) { - width -= dims.gutterTotalWidth - node.style.paddingLeft = dims.gutterTotalWidth + "px" - } - node.style.width = width + "px" - } - if (widget.coverGutter) { - node.style.zIndex = 5 - node.style.position = "relative" - if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + "px" } - } -} - -function widgetHeight(widget) { - if (widget.height != null) { return widget.height } - var cm = widget.doc.cm - if (!cm) { return 0 } - if (!contains(document.body, widget.node)) { - var parentStyle = "position: relative;" - if (widget.coverGutter) - { parentStyle += "margin-left: -" + cm.display.gutters.offsetWidth + "px;" } - if (widget.noHScroll) - { parentStyle += "width: " + cm.display.wrapper.clientWidth + "px;" } - removeChildrenAndAdd(cm.display.measure, elt("div", [widget.node], null, parentStyle)) - } - return widget.height = widget.node.parentNode.offsetHeight -} - -// Return true when the given mouse event happened in a widget -function eventInWidget(display, e) { - for (var n = e_target(e); n != display.wrapper; n = n.parentNode) { - if (!n || (n.nodeType == 1 && n.getAttribute("cm-ignore-events") == "true") || - (n.parentNode == display.sizer && n != display.mover)) - { return true } - } -} - -// POSITION MEASUREMENT - -function paddingTop(display) {return display.lineSpace.offsetTop} -function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight} -function paddingH(display) { - if (display.cachedPaddingH) { return display.cachedPaddingH } - var e = removeChildrenAndAdd(display.measure, elt("pre", "x")) - var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle - var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)} - if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data } - return data -} - -function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth } -function displayWidth(cm) { - return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth -} -function displayHeight(cm) { - return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight -} - -// Ensure the lineView.wrapping.heights array is populated. This is -// an array of bottom offsets for the lines that make up a drawn -// line. When lineWrapping is on, there might be more than one -// height. -function ensureLineHeights(cm, lineView, rect) { - var wrapping = cm.options.lineWrapping - var curWidth = wrapping && displayWidth(cm) - if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) { - var heights = lineView.measure.heights = [] - if (wrapping) { - lineView.measure.width = curWidth - var rects = lineView.text.firstChild.getClientRects() - for (var i = 0; i < rects.length - 1; i++) { - var cur = rects[i], next = rects[i + 1] - if (Math.abs(cur.bottom - next.bottom) > 2) - { heights.push((cur.bottom + next.top) / 2 - rect.top) } - } - } - heights.push(rect.bottom - rect.top) - } -} - -// Find a line map (mapping character offsets to text nodes) and a -// measurement cache for the given line number. (A line view might -// contain multiple lines when collapsed ranges are present.) -function mapFromLineView(lineView, line, lineN) { - if (lineView.line == line) - { return {map: lineView.measure.map, cache: lineView.measure.cache} } - for (var i = 0; i < lineView.rest.length; i++) - { if (lineView.rest[i] == line) - { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } } - for (var i$1 = 0; i$1 < lineView.rest.length; i$1++) - { if (lineNo(lineView.rest[i$1]) > lineN) - { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } } -} - -// Render a line into the hidden node display.externalMeasured. Used -// when measurement is needed for a line that's not in the viewport. -function updateExternalMeasurement(cm, line) { - line = visualLine(line) - var lineN = lineNo(line) - var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN) - view.lineN = lineN - var built = view.built = buildLineContent(cm, view) - view.text = built.pre - removeChildrenAndAdd(cm.display.lineMeasure, built.pre) - return view -} - -// Get a {top, bottom, left, right} box (in line-local coordinates) -// for a given character. -function measureChar(cm, line, ch, bias) { - return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias) -} - -// Find a line view that corresponds to the given line number. -function findViewForLine(cm, lineN) { - if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) - { return cm.display.view[findViewIndex(cm, lineN)] } - var ext = cm.display.externalMeasured - if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) - { return ext } -} - -// Measurement can be split in two steps, the set-up work that -// applies to the whole line, and the measurement of the actual -// character. Functions like coordsChar, that need to do a lot of -// measurements in a row, can thus ensure that the set-up work is -// only done once. -function prepareMeasureForLine(cm, line) { - var lineN = lineNo(line) - var view = findViewForLine(cm, lineN) - if (view && !view.text) { - view = null - } else if (view && view.changes) { - updateLineForChanges(cm, view, lineN, getDimensions(cm)) - cm.curOp.forceUpdate = true - } - if (!view) - { view = updateExternalMeasurement(cm, line) } - - var info = mapFromLineView(view, line, lineN) - return { - line: line, view: view, rect: null, - map: info.map, cache: info.cache, before: info.before, - hasHeights: false - } -} - -// Given a prepared measurement object, measures the position of an -// actual character (or fetches it from the cache). -function measureCharPrepared(cm, prepared, ch, bias, varHeight) { - if (prepared.before) { ch = -1 } - var key = ch + (bias || ""), found - if (prepared.cache.hasOwnProperty(key)) { - found = prepared.cache[key] - } else { - if (!prepared.rect) - { prepared.rect = prepared.view.text.getBoundingClientRect() } - if (!prepared.hasHeights) { - ensureLineHeights(cm, prepared.view, prepared.rect) - prepared.hasHeights = true - } - found = measureCharInner(cm, prepared, ch, bias) - if (!found.bogus) { prepared.cache[key] = found } - } - return {left: found.left, right: found.right, - top: varHeight ? found.rtop : found.top, - bottom: varHeight ? found.rbottom : found.bottom} -} - -var nullRect = {left: 0, right: 0, top: 0, bottom: 0} - -function nodeAndOffsetInLineMap(map, ch, bias) { - var node, start, end, collapse, mStart, mEnd - // First, search the line map for the text node corresponding to, - // or closest to, the target character. - for (var i = 0; i < map.length; i += 3) { - mStart = map[i] - mEnd = map[i + 1] - if (ch < mStart) { - start = 0; end = 1 - collapse = "left" - } else if (ch < mEnd) { - start = ch - mStart - end = start + 1 - } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) { - end = mEnd - mStart - start = end - 1 - if (ch >= mEnd) { collapse = "right" } - } - if (start != null) { - node = map[i + 2] - if (mStart == mEnd && bias == (node.insertLeft ? "left" : "right")) - { collapse = bias } - if (bias == "left" && start == 0) - { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) { - node = map[(i -= 3) + 2] - collapse = "left" - } } - if (bias == "right" && start == mEnd - mStart) - { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) { - node = map[(i += 3) + 2] - collapse = "right" - } } - break - } - } - return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd} -} - -function getUsefulRect(rects, bias) { - var rect = nullRect - if (bias == "left") { for (var i = 0; i < rects.length; i++) { - if ((rect = rects[i]).left != rect.right) { break } - } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) { - if ((rect = rects[i$1]).left != rect.right) { break } - } } - return rect -} - -function measureCharInner(cm, prepared, ch, bias) { - var place = nodeAndOffsetInLineMap(prepared.map, ch, bias) - var node = place.node, start = place.start, end = place.end, collapse = place.collapse - - var rect - if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates. - for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned - while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start } - while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end } - if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) - { rect = node.parentNode.getBoundingClientRect() } - else - { rect = getUsefulRect(range(node, start, end).getClientRects(), bias) } - if (rect.left || rect.right || start == 0) { break } - end = start - start = start - 1 - collapse = "right" - } - if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect) } - } else { // If it is a widget, simply get the box for the whole widget. - if (start > 0) { collapse = bias = "right" } - var rects - if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) - { rect = rects[bias == "right" ? rects.length - 1 : 0] } - else - { rect = node.getBoundingClientRect() } - } - if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) { - var rSpan = node.parentNode.getClientRects()[0] - if (rSpan) - { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom} } - else - { rect = nullRect } - } - - var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top - var mid = (rtop + rbot) / 2 - var heights = prepared.view.measure.heights - var i = 0 - for (; i < heights.length - 1; i++) - { if (mid < heights[i]) { break } } - var top = i ? heights[i - 1] : 0, bot = heights[i] - var result = {left: (collapse == "right" ? rect.right : rect.left) - prepared.rect.left, - right: (collapse == "left" ? rect.left : rect.right) - prepared.rect.left, - top: top, bottom: bot} - if (!rect.left && !rect.right) { result.bogus = true } - if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot } - - return result -} - -// Work around problem with bounding client rects on ranges being -// returned incorrectly when zoomed on IE10 and below. -function maybeUpdateRectForZooming(measure, rect) { - if (!window.screen || screen.logicalXDPI == null || - screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) - { return rect } - var scaleX = screen.logicalXDPI / screen.deviceXDPI - var scaleY = screen.logicalYDPI / screen.deviceYDPI - return {left: rect.left * scaleX, right: rect.right * scaleX, - top: rect.top * scaleY, bottom: rect.bottom * scaleY} -} - -function clearLineMeasurementCacheFor(lineView) { - if (lineView.measure) { - lineView.measure.cache = {} - lineView.measure.heights = null - if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++) - { lineView.measure.caches[i] = {} } } - } -} - -function clearLineMeasurementCache(cm) { - cm.display.externalMeasure = null - removeChildren(cm.display.lineMeasure) - for (var i = 0; i < cm.display.view.length; i++) - { clearLineMeasurementCacheFor(cm.display.view[i]) } -} - -function clearCaches(cm) { - clearLineMeasurementCache(cm) - cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null - if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true } - cm.display.lineNumChars = null -} - -function pageScrollX() { - // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206 - // which causes page_Offset and bounding client rects to use - // different reference viewports and invalidate our calculations. - if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) } - return window.pageXOffset || (document.documentElement || document.body).scrollLeft -} -function pageScrollY() { - if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) } - return window.pageYOffset || (document.documentElement || document.body).scrollTop -} - -function widgetTopHeight(lineObj) { - var height = 0 - if (lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above) - { height += widgetHeight(lineObj.widgets[i]) } } } - return height -} - -// Converts a {top, bottom, left, right} box from line-local -// coordinates into another coordinate system. Context may be one of -// "line", "div" (display.lineDiv), "local"./null (editor), "window", -// or "page". -function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) { - if (!includeWidgets) { - var height = widgetTopHeight(lineObj) - rect.top += height; rect.bottom += height - } - if (context == "line") { return rect } - if (!context) { context = "local" } - var yOff = heightAtLine(lineObj) - if (context == "local") { yOff += paddingTop(cm.display) } - else { yOff -= cm.display.viewOffset } - if (context == "page" || context == "window") { - var lOff = cm.display.lineSpace.getBoundingClientRect() - yOff += lOff.top + (context == "window" ? 0 : pageScrollY()) - var xOff = lOff.left + (context == "window" ? 0 : pageScrollX()) - rect.left += xOff; rect.right += xOff - } - rect.top += yOff; rect.bottom += yOff - return rect -} - -// Coverts a box from "div" coords to another coordinate system. -// Context may be "window", "page", "div", or "local"./null. -function fromCoordSystem(cm, coords, context) { - if (context == "div") { return coords } - var left = coords.left, top = coords.top - // First move into "page" coordinate system - if (context == "page") { - left -= pageScrollX() - top -= pageScrollY() - } else if (context == "local" || !context) { - var localBox = cm.display.sizer.getBoundingClientRect() - left += localBox.left - top += localBox.top - } - - var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect() - return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top} -} - -function charCoords(cm, pos, context, lineObj, bias) { - if (!lineObj) { lineObj = getLine(cm.doc, pos.line) } - return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context) -} - -// Returns a box for a given cursor position, which may have an -// 'other' property containing the position of the secondary cursor -// on a bidi boundary. -// A cursor Pos(line, char, "before") is on the same visual line as `char - 1` -// and after `char - 1` in writing order of `char - 1` -// A cursor Pos(line, char, "after") is on the same visual line as `char` -// and before `char` in writing order of `char` -// Examples (upper-case letters are RTL, lower-case are LTR): -// Pos(0, 1, ...) -// before after -// ab a|b a|b -// aB a|B aB| -// Ab |Ab A|b -// AB B|A B|A -// Every position after the last character on a line is considered to stick -// to the last character on the line. -function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) { - lineObj = lineObj || getLine(cm.doc, pos.line) - if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj) } - function get(ch, right) { - var m = measureCharPrepared(cm, preparedMeasure, ch, right ? "right" : "left", varHeight) - if (right) { m.left = m.right; } else { m.right = m.left } - return intoCoordSystem(cm, lineObj, m, context) - } - var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky - if (ch >= lineObj.text.length) { - ch = lineObj.text.length - sticky = "before" - } else if (ch <= 0) { - ch = 0 - sticky = "after" - } - if (!order) { return get(sticky == "before" ? ch - 1 : ch, sticky == "before") } - - function getBidi(ch, partPos, invert) { - var part = order[partPos], right = part.level == 1 - return get(invert ? ch - 1 : ch, right != invert) - } - var partPos = getBidiPartAt(order, ch, sticky) - var other = bidiOther - var val = getBidi(ch, partPos, sticky == "before") - if (other != null) { val.other = getBidi(ch, other, sticky != "before") } - return val -} - -// Used to cheaply estimate the coordinates for a position. Used for -// intermediate scroll updates. -function estimateCoords(cm, pos) { - var left = 0 - pos = clipPos(cm.doc, pos) - if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch } - var lineObj = getLine(cm.doc, pos.line) - var top = heightAtLine(lineObj) + paddingTop(cm.display) - return {left: left, right: left, top: top, bottom: top + lineObj.height} -} - -// Positions returned by coordsChar contain some extra information. -// xRel is the relative x position of the input coordinates compared -// to the found position (so xRel > 0 means the coordinates are to -// the right of the character position, for example). When outside -// is true, that means the coordinates lie outside the line's -// vertical range. -function PosWithInfo(line, ch, sticky, outside, xRel) { - var pos = Pos(line, ch, sticky) - pos.xRel = xRel - if (outside) { pos.outside = true } - return pos -} - -// Compute the character position closest to the given coordinates. -// Input must be lineSpace-local ("div" coordinate system). -function coordsChar(cm, x, y) { - var doc = cm.doc - y += cm.display.viewOffset - if (y < 0) { return PosWithInfo(doc.first, 0, null, true, -1) } - var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1 - if (lineN > last) - { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, true, 1) } - if (x < 0) { x = 0 } - - var lineObj = getLine(doc, lineN) - for (;;) { - var found = coordsCharInner(cm, lineObj, lineN, x, y) - var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 ? 1 : 0)) - if (!collapsed) { return found } - var rangeEnd = collapsed.find(1) - if (rangeEnd.line == lineN) { return rangeEnd } - lineObj = getLine(doc, lineN = rangeEnd.line) - } -} - -function wrappedLineExtent(cm, lineObj, preparedMeasure, y) { - y -= widgetTopHeight(lineObj) - var end = lineObj.text.length - var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0) - end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end) - return {begin: begin, end: end} -} - -function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) { - if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj) } - var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), "line").top - return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop) -} - -// Returns true if the given side of a box is after the given -// coordinates, in top-to-bottom, left-to-right order. -function boxIsAfter(box, x, y, left) { - return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x -} - -function coordsCharInner(cm, lineObj, lineNo, x, y) { - // Move y into line-local coordinate space - y -= heightAtLine(lineObj) - var preparedMeasure = prepareMeasureForLine(cm, lineObj) - // When directly calling `measureCharPrepared`, we have to adjust - // for the widgets at this line. - var widgetHeight = widgetTopHeight(lineObj) - var begin = 0, end = lineObj.text.length, ltr = true - - var order = getOrder(lineObj, cm.doc.direction) - // If the line isn't plain left-to-right text, first figure out - // which bidi section the coordinates fall into. - if (order) { - var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart) - (cm, lineObj, lineNo, preparedMeasure, order, x, y) - ltr = part.level != 1 - // The awkward -1 offsets are needed because findFirst (called - // on these below) will treat its first bound as inclusive, - // second as exclusive, but we want to actually address the - // characters in the part's range - begin = ltr ? part.from : part.to - 1 - end = ltr ? part.to : part.from - 1 - } - - // A binary search to find the first character whose bounding box - // starts after the coordinates. If we run across any whose box wrap - // the coordinates, store that. - var chAround = null, boxAround = null - var ch = findFirst(function (ch) { - var box = measureCharPrepared(cm, preparedMeasure, ch) - box.top += widgetHeight; box.bottom += widgetHeight - if (!boxIsAfter(box, x, y, false)) { return false } - if (box.top <= y && box.left <= x) { - chAround = ch - boxAround = box - } - return true - }, begin, end) - - var baseX, sticky, outside = false - // If a box around the coordinates was found, use that - if (boxAround) { - // Distinguish coordinates nearer to the left or right side of the box - var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr - ch = chAround + (atStart ? 0 : 1) - sticky = atStart ? "after" : "before" - baseX = atLeft ? boxAround.left : boxAround.right - } else { - // (Adjust for extended bound, if necessary.) - if (!ltr && (ch == end || ch == begin)) { ch++ } - // To determine which side to associate with, get the box to the - // left of the character and compare it's vertical position to the - // coordinates - sticky = ch == 0 ? "after" : ch == lineObj.text.length ? "before" : - (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ? - "after" : "before" - // Now get accurate coordinates for this place, in order to get a - // base X position - var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), "line", lineObj, preparedMeasure) - baseX = coords.left - outside = y < coords.top || y >= coords.bottom - } - - ch = skipExtendingChars(lineObj.text, ch, 1) - return PosWithInfo(lineNo, ch, sticky, outside, x - baseX) -} - -function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) { - // Bidi parts are sorted left-to-right, and in a non-line-wrapping - // situation, we can take this ordering to correspond to the visual - // ordering. This finds the first part whose end is after the given - // coordinates. - var index = findFirst(function (i) { - var part = order[i], ltr = part.level != 1 - return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? "before" : "after"), - "line", lineObj, preparedMeasure), x, y, true) - }, 0, order.length - 1) - var part = order[index] - // If this isn't the first part, the part's start is also after - // the coordinates, and the coordinates aren't on the same line as - // that start, move one part back. - if (index > 0) { - var ltr = part.level != 1 - var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? "after" : "before"), - "line", lineObj, preparedMeasure) - if (boxIsAfter(start, x, y, true) && start.top > y) - { part = order[index - 1] } - } - return part -} - -function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) { - // In a wrapped line, rtl text on wrapping boundaries can do things - // that don't correspond to the ordering in our `order` array at - // all, so a binary search doesn't work, and we want to return a - // part that only spans one line so that the binary search in - // coordsCharInner is safe. As such, we first find the extent of the - // wrapped line, and then do a flat search in which we discard any - // spans that aren't on the line. - var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y); - var begin = ref.begin; - var end = ref.end; - if (/\s/.test(lineObj.text.charAt(end - 1))) { end-- } - var part = null, closestDist = null - for (var i = 0; i < order.length; i++) { - var p = order[i] - if (p.from >= end || p.to <= begin) { continue } - var ltr = p.level != 1 - var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right - // Weigh against spans ending before this, so that they are only - // picked if nothing ends after - var dist = endX < x ? x - endX + 1e9 : endX - x - if (!part || closestDist > dist) { - part = p - closestDist = dist - } - } - if (!part) { part = order[order.length - 1] } - // Clip the part to the wrapped line. - if (part.from < begin) { part = {from: begin, to: part.to, level: part.level} } - if (part.to > end) { part = {from: part.from, to: end, level: part.level} } - return part -} - -var measureText -// Compute the default text height. -function textHeight(display) { - if (display.cachedTextHeight != null) { return display.cachedTextHeight } - if (measureText == null) { - measureText = elt("pre") - // Measure a bunch of lines, for browsers that compute - // fractional heights. - for (var i = 0; i < 49; ++i) { - measureText.appendChild(document.createTextNode("x")) - measureText.appendChild(elt("br")) - } - measureText.appendChild(document.createTextNode("x")) - } - removeChildrenAndAdd(display.measure, measureText) - var height = measureText.offsetHeight / 50 - if (height > 3) { display.cachedTextHeight = height } - removeChildren(display.measure) - return height || 1 -} - -// Compute the default character width. -function charWidth(display) { - if (display.cachedCharWidth != null) { return display.cachedCharWidth } - var anchor = elt("span", "xxxxxxxxxx") - var pre = elt("pre", [anchor]) - removeChildrenAndAdd(display.measure, pre) - var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10 - if (width > 2) { display.cachedCharWidth = width } - return width || 10 -} - -// Do a bulk-read of the DOM positions and sizes needed to draw the -// view, so that we don't interleave reading and writing to the DOM. -function getDimensions(cm) { - var d = cm.display, left = {}, width = {} - var gutterLeft = d.gutters.clientLeft - for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) { - left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft - width[cm.options.gutters[i]] = n.clientWidth - } - return {fixedPos: compensateForHScroll(d), - gutterTotalWidth: d.gutters.offsetWidth, - gutterLeft: left, - gutterWidth: width, - wrapperWidth: d.wrapper.clientWidth} -} - -// Computes display.scroller.scrollLeft + display.gutters.offsetWidth, -// but using getBoundingClientRect to get a sub-pixel-accurate -// result. -function compensateForHScroll(display) { - return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left -} - -// Returns a function that estimates the height of a line, to use as -// first approximation until the line becomes visible (and is thus -// properly measurable). -function estimateHeight(cm) { - var th = textHeight(cm.display), wrapping = cm.options.lineWrapping - var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3) - return function (line) { - if (lineIsHidden(cm.doc, line)) { return 0 } - - var widgetsHeight = 0 - if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) { - if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height } - } } - - if (wrapping) - { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th } - else - { return widgetsHeight + th } - } -} - -function estimateLineHeights(cm) { - var doc = cm.doc, est = estimateHeight(cm) - doc.iter(function (line) { - var estHeight = est(line) - if (estHeight != line.height) { updateLineHeight(line, estHeight) } - }) -} - -// Given a mouse event, find the corresponding position. If liberal -// is false, it checks whether a gutter or scrollbar was clicked, -// and returns null if it was. forRect is used by rectangular -// selections, and tries to estimate a character position even for -// coordinates beyond the right of the text. -function posFromMouse(cm, e, liberal, forRect) { - var display = cm.display - if (!liberal && e_target(e).getAttribute("cm-not-content") == "true") { return null } - - var x, y, space = display.lineSpace.getBoundingClientRect() - // Fails unpredictably on IE[67] when mouse is dragged around quickly. - try { x = e.clientX - space.left; y = e.clientY - space.top } - catch (e) { return null } - var coords = coordsChar(cm, x, y), line - if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) { - var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length - coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff)) - } - return coords -} - -// Find the view element corresponding to a given line. Return null -// when the line isn't visible. -function findViewIndex(cm, n) { - if (n >= cm.display.viewTo) { return null } - n -= cm.display.viewFrom - if (n < 0) { return null } - var view = cm.display.view - for (var i = 0; i < view.length; i++) { - n -= view[i].size - if (n < 0) { return i } - } -} - -function updateSelection(cm) { - cm.display.input.showSelection(cm.display.input.prepareSelection()) -} - -function prepareSelection(cm, primary) { - if ( primary === void 0 ) primary = true; - - var doc = cm.doc, result = {} - var curFragment = result.cursors = document.createDocumentFragment() - var selFragment = result.selection = document.createDocumentFragment() - - for (var i = 0; i < doc.sel.ranges.length; i++) { - if (!primary && i == doc.sel.primIndex) { continue } - var range = doc.sel.ranges[i] - if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue } - var collapsed = range.empty() - if (collapsed || cm.options.showCursorWhenSelecting) - { drawSelectionCursor(cm, range.head, curFragment) } - if (!collapsed) - { drawSelectionRange(cm, range, selFragment) } - } - return result -} - -// Draws a cursor for the given range -function drawSelectionCursor(cm, head, output) { - var pos = cursorCoords(cm, head, "div", null, null, !cm.options.singleCursorHeightPerLine) - - var cursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor")) - cursor.style.left = pos.left + "px" - cursor.style.top = pos.top + "px" - cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + "px" - - if (pos.other) { - // Secondary cursor, shown when on a 'jump' in bi-directional text - var otherCursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor CodeMirror-secondarycursor")) - otherCursor.style.display = "" - otherCursor.style.left = pos.other.left + "px" - otherCursor.style.top = pos.other.top + "px" - otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + "px" - } -} - -function cmpCoords(a, b) { return a.top - b.top || a.left - b.left } - -// Draws the given range as a highlighted selection -function drawSelectionRange(cm, range, output) { - var display = cm.display, doc = cm.doc - var fragment = document.createDocumentFragment() - var padding = paddingH(cm.display), leftSide = padding.left - var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right - var docLTR = doc.direction == "ltr" - - function add(left, top, width, bottom) { - if (top < 0) { top = 0 } - top = Math.round(top) - bottom = Math.round(bottom) - fragment.appendChild(elt("div", null, "CodeMirror-selected", ("position: absolute; left: " + left + "px;\n top: " + top + "px; width: " + (width == null ? rightSide - left : width) + "px;\n height: " + (bottom - top) + "px"))) - } - - function drawForLine(line, fromArg, toArg) { - var lineObj = getLine(doc, line) - var lineLen = lineObj.text.length - var start, end - function coords(ch, bias) { - return charCoords(cm, Pos(line, ch), "div", lineObj, bias) - } - - function wrapX(pos, dir, side) { - var extent = wrappedLineExtentChar(cm, lineObj, null, pos) - var prop = (dir == "ltr") == (side == "after") ? "left" : "right" - var ch = side == "after" ? extent.begin : extent.end - (/\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1) - return coords(ch, prop)[prop] - } - - var order = getOrder(lineObj, doc.direction) - iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) { - var ltr = dir == "ltr" - var fromPos = coords(from, ltr ? "left" : "right") - var toPos = coords(to - 1, ltr ? "right" : "left") - - var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen - var first = i == 0, last = !order || i == order.length - 1 - if (toPos.top - fromPos.top <= 3) { // Single line - var openLeft = (docLTR ? openStart : openEnd) && first - var openRight = (docLTR ? openEnd : openStart) && last - var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left - var right = openRight ? rightSide : (ltr ? toPos : fromPos).right - add(left, fromPos.top, right - left, fromPos.bottom) - } else { // Multiple lines - var topLeft, topRight, botLeft, botRight - if (ltr) { - topLeft = docLTR && openStart && first ? leftSide : fromPos.left - topRight = docLTR ? rightSide : wrapX(from, dir, "before") - botLeft = docLTR ? leftSide : wrapX(to, dir, "after") - botRight = docLTR && openEnd && last ? rightSide : toPos.right - } else { - topLeft = !docLTR ? leftSide : wrapX(from, dir, "before") - topRight = !docLTR && openStart && first ? rightSide : fromPos.right - botLeft = !docLTR && openEnd && last ? leftSide : toPos.left - botRight = !docLTR ? rightSide : wrapX(to, dir, "after") - } - add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom) - if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top) } - add(botLeft, toPos.top, botRight - botLeft, toPos.bottom) - } - - if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos } - if (cmpCoords(toPos, start) < 0) { start = toPos } - if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos } - if (cmpCoords(toPos, end) < 0) { end = toPos } - }) - return {start: start, end: end} - } - - var sFrom = range.from(), sTo = range.to() - if (sFrom.line == sTo.line) { - drawForLine(sFrom.line, sFrom.ch, sTo.ch) - } else { - var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line) - var singleVLine = visualLine(fromLine) == visualLine(toLine) - var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end - var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start - if (singleVLine) { - if (leftEnd.top < rightStart.top - 2) { - add(leftEnd.right, leftEnd.top, null, leftEnd.bottom) - add(leftSide, rightStart.top, rightStart.left, rightStart.bottom) - } else { - add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom) - } - } - if (leftEnd.bottom < rightStart.top) - { add(leftSide, leftEnd.bottom, null, rightStart.top) } - } - - output.appendChild(fragment) -} - -// Cursor-blinking -function restartBlink(cm) { - if (!cm.state.focused) { return } - var display = cm.display - clearInterval(display.blinker) - var on = true - display.cursorDiv.style.visibility = "" - if (cm.options.cursorBlinkRate > 0) - { display.blinker = setInterval(function () { return display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden"; }, - cm.options.cursorBlinkRate) } - else if (cm.options.cursorBlinkRate < 0) - { display.cursorDiv.style.visibility = "hidden" } -} - -function ensureFocus(cm) { - if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm) } -} - -function delayBlurEvent(cm) { - cm.state.delayingBlurEvent = true - setTimeout(function () { if (cm.state.delayingBlurEvent) { - cm.state.delayingBlurEvent = false - onBlur(cm) - } }, 100) -} - -function onFocus(cm, e) { - if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false } - - if (cm.options.readOnly == "nocursor") { return } - if (!cm.state.focused) { - signal(cm, "focus", cm, e) - cm.state.focused = true - addClass(cm.display.wrapper, "CodeMirror-focused") - // This test prevents this from firing when a context - // menu is closed (since the input reset would kill the - // select-all detection hack) - if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) { - cm.display.input.reset() - if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20) } // Issue #1730 - } - cm.display.input.receivedFocus() - } - restartBlink(cm) -} -function onBlur(cm, e) { - if (cm.state.delayingBlurEvent) { return } - - if (cm.state.focused) { - signal(cm, "blur", cm, e) - cm.state.focused = false - rmClass(cm.display.wrapper, "CodeMirror-focused") - } - clearInterval(cm.display.blinker) - setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false } }, 150) -} - -// Read the actual heights of the rendered lines, and update their -// stored heights to match. -function updateHeightsInViewport(cm) { - var display = cm.display - var prevBottom = display.lineDiv.offsetTop - for (var i = 0; i < display.view.length; i++) { - var cur = display.view[i], height = (void 0) - if (cur.hidden) { continue } - if (ie && ie_version < 8) { - var bot = cur.node.offsetTop + cur.node.offsetHeight - height = bot - prevBottom - prevBottom = bot - } else { - var box = cur.node.getBoundingClientRect() - height = box.bottom - box.top - } - var diff = cur.line.height - height - if (height < 2) { height = textHeight(display) } - if (diff > .005 || diff < -.005) { - updateLineHeight(cur.line, height) - updateWidgetHeight(cur.line) - if (cur.rest) { for (var j = 0; j < cur.rest.length; j++) - { updateWidgetHeight(cur.rest[j]) } } - } - } -} - -// Read and store the height of line widgets associated with the -// given line. -function updateWidgetHeight(line) { - if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) { - var w = line.widgets[i], parent = w.node.parentNode - if (parent) { w.height = parent.offsetHeight } - } } -} - -// Compute the lines that are visible in a given viewport (defaults -// the the current scroll position). viewport may contain top, -// height, and ensure (see op.scrollToPos) properties. -function visibleLines(display, doc, viewport) { - var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop - top = Math.floor(top - paddingTop(display)) - var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight - - var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom) - // Ensure is a {from: {line, ch}, to: {line, ch}} object, and - // forces those lines into the viewport (if possible). - if (viewport && viewport.ensure) { - var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line - if (ensureFrom < from) { - from = ensureFrom - to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight) - } else if (Math.min(ensureTo, doc.lastLine()) >= to) { - from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight) - to = ensureTo - } - } - return {from: from, to: Math.max(to, from + 1)} -} - -// Re-align line numbers and gutter marks to compensate for -// horizontal scrolling. -function alignHorizontally(cm) { - var display = cm.display, view = display.view - if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return } - var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft - var gutterW = display.gutters.offsetWidth, left = comp + "px" - for (var i = 0; i < view.length; i++) { if (!view[i].hidden) { - if (cm.options.fixedGutter) { - if (view[i].gutter) - { view[i].gutter.style.left = left } - if (view[i].gutterBackground) - { view[i].gutterBackground.style.left = left } - } - var align = view[i].alignable - if (align) { for (var j = 0; j < align.length; j++) - { align[j].style.left = left } } - } } - if (cm.options.fixedGutter) - { display.gutters.style.left = (comp + gutterW) + "px" } -} - -// Used to ensure that the line number gutter is still the right -// size for the current document size. Returns true when an update -// is needed. -function maybeUpdateLineNumberWidth(cm) { - if (!cm.options.lineNumbers) { return false } - var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display - if (last.length != display.lineNumChars) { - var test = display.measure.appendChild(elt("div", [elt("div", last)], - "CodeMirror-linenumber CodeMirror-gutter-elt")) - var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW - display.lineGutter.style.width = "" - display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1 - display.lineNumWidth = display.lineNumInnerWidth + padding - display.lineNumChars = display.lineNumInnerWidth ? last.length : -1 - display.lineGutter.style.width = display.lineNumWidth + "px" - updateGutterSpace(cm) - return true - } - return false -} - -// SCROLLING THINGS INTO VIEW - -// If an editor sits on the top or bottom of the window, partially -// scrolled out of view, this ensures that the cursor is visible. -function maybeScrollWindow(cm, rect) { - if (signalDOMEvent(cm, "scrollCursorIntoView")) { return } - - var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null - if (rect.top + box.top < 0) { doScroll = true } - else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false } - if (doScroll != null && !phantom) { - var scrollNode = elt("div", "\u200b", null, ("position: absolute;\n top: " + (rect.top - display.viewOffset - paddingTop(cm.display)) + "px;\n height: " + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + "px;\n left: " + (rect.left) + "px; width: " + (Math.max(2, rect.right - rect.left)) + "px;")) - cm.display.lineSpace.appendChild(scrollNode) - scrollNode.scrollIntoView(doScroll) - cm.display.lineSpace.removeChild(scrollNode) - } -} - -// Scroll a given position into view (immediately), verifying that -// it actually became visible (as line heights are accurately -// measured, the position of something may 'drift' during drawing). -function scrollPosIntoView(cm, pos, end, margin) { - if (margin == null) { margin = 0 } - var rect - if (!cm.options.lineWrapping && pos == end) { - // Set pos and end to the cursor positions around the character pos sticks to - // If pos.sticky == "before", that is around pos.ch - 1, otherwise around pos.ch - // If pos == Pos(_, 0, "before"), pos and end are unchanged - pos = pos.ch ? Pos(pos.line, pos.sticky == "before" ? pos.ch - 1 : pos.ch, "after") : pos - end = pos.sticky == "before" ? Pos(pos.line, pos.ch + 1, "before") : pos - } - for (var limit = 0; limit < 5; limit++) { - var changed = false - var coords = cursorCoords(cm, pos) - var endCoords = !end || end == pos ? coords : cursorCoords(cm, end) - rect = {left: Math.min(coords.left, endCoords.left), - top: Math.min(coords.top, endCoords.top) - margin, - right: Math.max(coords.left, endCoords.left), - bottom: Math.max(coords.bottom, endCoords.bottom) + margin} - var scrollPos = calculateScrollPos(cm, rect) - var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft - if (scrollPos.scrollTop != null) { - updateScrollTop(cm, scrollPos.scrollTop) - if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true } - } - if (scrollPos.scrollLeft != null) { - setScrollLeft(cm, scrollPos.scrollLeft) - if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true } - } - if (!changed) { break } - } - return rect -} - -// Scroll a given set of coordinates into view (immediately). -function scrollIntoView(cm, rect) { - var scrollPos = calculateScrollPos(cm, rect) - if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop) } - if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft) } -} - -// Calculate a new scroll position needed to scroll the given -// rectangle into view. Returns an object with scrollTop and -// scrollLeft properties. When these are undefined, the -// vertical/horizontal position does not need to be adjusted. -function calculateScrollPos(cm, rect) { - var display = cm.display, snapMargin = textHeight(cm.display) - if (rect.top < 0) { rect.top = 0 } - var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop - var screen = displayHeight(cm), result = {} - if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen } - var docBottom = cm.doc.height + paddingVert(display) - var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin - if (rect.top < screentop) { - result.scrollTop = atTop ? 0 : rect.top - } else if (rect.bottom > screentop + screen) { - var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen) - if (newTop != screentop) { result.scrollTop = newTop } - } - - var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0) - var tooWide = rect.right - rect.left > screenw - if (tooWide) { rect.right = rect.left + screenw } - if (rect.left < 10) - { result.scrollLeft = 0 } - else if (rect.left < screenleft) - { result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10)) } - else if (rect.right > screenw + screenleft - 3) - { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw } - return result -} - -// Store a relative adjustment to the scroll position in the current -// operation (to be applied when the operation finishes). -function addToScrollTop(cm, top) { - if (top == null) { return } - resolveScrollToPos(cm) - cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top -} - -// Make sure that at the end of the operation the current cursor is -// shown. -function ensureCursorVisible(cm) { - resolveScrollToPos(cm) - var cur = cm.getCursor() - cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin} -} - -function scrollToCoords(cm, x, y) { - if (x != null || y != null) { resolveScrollToPos(cm) } - if (x != null) { cm.curOp.scrollLeft = x } - if (y != null) { cm.curOp.scrollTop = y } -} - -function scrollToRange(cm, range) { - resolveScrollToPos(cm) - cm.curOp.scrollToPos = range -} - -// When an operation has its scrollToPos property set, and another -// scroll action is applied before the end of the operation, this -// 'simulates' scrolling that position into view in a cheap way, so -// that the effect of intermediate scroll commands is not ignored. -function resolveScrollToPos(cm) { - var range = cm.curOp.scrollToPos - if (range) { - cm.curOp.scrollToPos = null - var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to) - scrollToCoordsRange(cm, from, to, range.margin) - } -} - -function scrollToCoordsRange(cm, from, to, margin) { - var sPos = calculateScrollPos(cm, { - left: Math.min(from.left, to.left), - top: Math.min(from.top, to.top) - margin, - right: Math.max(from.right, to.right), - bottom: Math.max(from.bottom, to.bottom) + margin - }) - scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop) -} - -// Sync the scrollable area and scrollbars, ensure the viewport -// covers the visible area. -function updateScrollTop(cm, val) { - if (Math.abs(cm.doc.scrollTop - val) < 2) { return } - if (!gecko) { updateDisplaySimple(cm, {top: val}) } - setScrollTop(cm, val, true) - if (gecko) { updateDisplaySimple(cm) } - startWorker(cm, 100) -} - -function setScrollTop(cm, val, forceScroll) { - val = Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val) - if (cm.display.scroller.scrollTop == val && !forceScroll) { return } - cm.doc.scrollTop = val - cm.display.scrollbars.setScrollTop(val) - if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val } -} - -// Sync scroller and scrollbar, ensure the gutter elements are -// aligned. -function setScrollLeft(cm, val, isScroller, forceScroll) { - val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth) - if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return } - cm.doc.scrollLeft = val - alignHorizontally(cm) - if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val } - cm.display.scrollbars.setScrollLeft(val) -} - -// SCROLLBARS - -// Prepare DOM reads needed to update the scrollbars. Done in one -// shot to minimize update/measure roundtrips. -function measureForScrollbars(cm) { - var d = cm.display, gutterW = d.gutters.offsetWidth - var docH = Math.round(cm.doc.height + paddingVert(cm.display)) - return { - clientHeight: d.scroller.clientHeight, - viewHeight: d.wrapper.clientHeight, - scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth, - viewWidth: d.wrapper.clientWidth, - barLeft: cm.options.fixedGutter ? gutterW : 0, - docHeight: docH, - scrollHeight: docH + scrollGap(cm) + d.barHeight, - nativeBarWidth: d.nativeBarWidth, - gutterWidth: gutterW - } -} - -var NativeScrollbars = function(place, scroll, cm) { - this.cm = cm - var vert = this.vert = elt("div", [elt("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar") - var horiz = this.horiz = elt("div", [elt("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar") - vert.tabIndex = horiz.tabIndex = -1 - place(vert); place(horiz) - - on(vert, "scroll", function () { - if (vert.clientHeight) { scroll(vert.scrollTop, "vertical") } - }) - on(horiz, "scroll", function () { - if (horiz.clientWidth) { scroll(horiz.scrollLeft, "horizontal") } - }) - - this.checkedZeroWidth = false - // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). - if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = "18px" } -}; - -NativeScrollbars.prototype.update = function (measure) { - var needsH = measure.scrollWidth > measure.clientWidth + 1 - var needsV = measure.scrollHeight > measure.clientHeight + 1 - var sWidth = measure.nativeBarWidth - - if (needsV) { - this.vert.style.display = "block" - this.vert.style.bottom = needsH ? sWidth + "px" : "0" - var totalHeight = measure.viewHeight - (needsH ? sWidth : 0) - // A bug in IE8 can cause this value to be negative, so guard it. - this.vert.firstChild.style.height = - Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + "px" - } else { - this.vert.style.display = "" - this.vert.firstChild.style.height = "0" - } - - if (needsH) { - this.horiz.style.display = "block" - this.horiz.style.right = needsV ? sWidth + "px" : "0" - this.horiz.style.left = measure.barLeft + "px" - var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0) - this.horiz.firstChild.style.width = - Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + "px" - } else { - this.horiz.style.display = "" - this.horiz.firstChild.style.width = "0" - } - - if (!this.checkedZeroWidth && measure.clientHeight > 0) { - if (sWidth == 0) { this.zeroWidthHack() } - this.checkedZeroWidth = true - } - - return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0} -}; - -NativeScrollbars.prototype.setScrollLeft = function (pos) { - if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos } - if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, "horiz") } -}; - -NativeScrollbars.prototype.setScrollTop = function (pos) { - if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos } - if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, "vert") } -}; - -NativeScrollbars.prototype.zeroWidthHack = function () { - var w = mac && !mac_geMountainLion ? "12px" : "18px" - this.horiz.style.height = this.vert.style.width = w - this.horiz.style.pointerEvents = this.vert.style.pointerEvents = "none" - this.disableHoriz = new Delayed - this.disableVert = new Delayed -}; - -NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) { - bar.style.pointerEvents = "auto" - function maybeDisable() { - // To find out whether the scrollbar is still visible, we - // check whether the element under the pixel in the bottom - // right corner of the scrollbar box is the scrollbar box - // itself (when the bar is still visible) or its filler child - // (when the bar is hidden). If it is still visible, we keep - // it enabled, if it's hidden, we disable pointer events. - var box = bar.getBoundingClientRect() - var elt = type == "vert" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2) - : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1) - if (elt != bar) { bar.style.pointerEvents = "none" } - else { delay.set(1000, maybeDisable) } - } - delay.set(1000, maybeDisable) -}; - -NativeScrollbars.prototype.clear = function () { - var parent = this.horiz.parentNode - parent.removeChild(this.horiz) - parent.removeChild(this.vert) -}; - -var NullScrollbars = function () {}; - -NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} }; -NullScrollbars.prototype.setScrollLeft = function () {}; -NullScrollbars.prototype.setScrollTop = function () {}; -NullScrollbars.prototype.clear = function () {}; - -function updateScrollbars(cm, measure) { - if (!measure) { measure = measureForScrollbars(cm) } - var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight - updateScrollbarsInner(cm, measure) - for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) { - if (startWidth != cm.display.barWidth && cm.options.lineWrapping) - { updateHeightsInViewport(cm) } - updateScrollbarsInner(cm, measureForScrollbars(cm)) - startWidth = cm.display.barWidth; startHeight = cm.display.barHeight - } -} - -// Re-synchronize the fake scrollbars with the actual size of the -// content. -function updateScrollbarsInner(cm, measure) { - var d = cm.display - var sizes = d.scrollbars.update(measure) - - d.sizer.style.paddingRight = (d.barWidth = sizes.right) + "px" - d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + "px" - d.heightForcer.style.borderBottom = sizes.bottom + "px solid transparent" - - if (sizes.right && sizes.bottom) { - d.scrollbarFiller.style.display = "block" - d.scrollbarFiller.style.height = sizes.bottom + "px" - d.scrollbarFiller.style.width = sizes.right + "px" - } else { d.scrollbarFiller.style.display = "" } - if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) { - d.gutterFiller.style.display = "block" - d.gutterFiller.style.height = sizes.bottom + "px" - d.gutterFiller.style.width = measure.gutterWidth + "px" - } else { d.gutterFiller.style.display = "" } -} - -var scrollbarModel = {"native": NativeScrollbars, "null": NullScrollbars} - -function initScrollbars(cm) { - if (cm.display.scrollbars) { - cm.display.scrollbars.clear() - if (cm.display.scrollbars.addClass) - { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass) } - } - - cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) { - cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller) - // Prevent clicks in the scrollbars from killing focus - on(node, "mousedown", function () { - if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0) } - }) - node.setAttribute("cm-not-content", "true") - }, function (pos, axis) { - if (axis == "horizontal") { setScrollLeft(cm, pos) } - else { updateScrollTop(cm, pos) } - }, cm) - if (cm.display.scrollbars.addClass) - { addClass(cm.display.wrapper, cm.display.scrollbars.addClass) } -} - -// Operations are used to wrap a series of changes to the editor -// state in such a way that each change won't have to update the -// cursor and display (which would be awkward, slow, and -// error-prone). Instead, display updates are batched and then all -// combined and executed at once. - -var nextOpId = 0 -// Start a new operation. -function startOperation(cm) { - cm.curOp = { - cm: cm, - viewChanged: false, // Flag that indicates that lines might need to be redrawn - startHeight: cm.doc.height, // Used to detect need to update scrollbar - forceUpdate: false, // Used to force a redraw - updateInput: null, // Whether to reset the input textarea - typing: false, // Whether this reset should be careful to leave existing text (for compositing) - changeObjs: null, // Accumulated changes, for firing change events - cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on - cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already - selectionChanged: false, // Whether the selection needs to be redrawn - updateMaxLine: false, // Set when the widest line needs to be determined anew - scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet - scrollToPos: null, // Used to scroll to a specific position - focus: false, - id: ++nextOpId // Unique ID - } - pushOperation(cm.curOp) -} - -// Finish an operation, updating the display and signalling delayed events -function endOperation(cm) { - var op = cm.curOp - finishOperation(op, function (group) { - for (var i = 0; i < group.ops.length; i++) - { group.ops[i].cm.curOp = null } - endOperations(group) - }) -} - -// The DOM updates done when an operation finishes are batched so -// that the minimum number of relayouts are required. -function endOperations(group) { - var ops = group.ops - for (var i = 0; i < ops.length; i++) // Read DOM - { endOperation_R1(ops[i]) } - for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe) - { endOperation_W1(ops[i$1]) } - for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM - { endOperation_R2(ops[i$2]) } - for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe) - { endOperation_W2(ops[i$3]) } - for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM - { endOperation_finish(ops[i$4]) } -} - -function endOperation_R1(op) { - var cm = op.cm, display = cm.display - maybeClipScrollbars(cm) - if (op.updateMaxLine) { findMaxLine(cm) } - - op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || - op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || - op.scrollToPos.to.line >= display.viewTo) || - display.maxLineChanged && cm.options.lineWrapping - op.update = op.mustUpdate && - new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate) -} - -function endOperation_W1(op) { - op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update) -} - -function endOperation_R2(op) { - var cm = op.cm, display = cm.display - if (op.updatedDisplay) { updateHeightsInViewport(cm) } - - op.barMeasure = measureForScrollbars(cm) - - // If the max line changed since it was last measured, measure it, - // and ensure the document's width matches it. - // updateDisplay_W2 will use these properties to do the actual resizing - if (display.maxLineChanged && !cm.options.lineWrapping) { - op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3 - cm.display.sizerWidth = op.adjustWidthTo - op.barMeasure.scrollWidth = - Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth) - op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm)) - } - - if (op.updatedDisplay || op.selectionChanged) - { op.preparedSelection = display.input.prepareSelection() } -} - -function endOperation_W2(op) { - var cm = op.cm - - if (op.adjustWidthTo != null) { - cm.display.sizer.style.minWidth = op.adjustWidthTo + "px" - if (op.maxScrollLeft < cm.doc.scrollLeft) - { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true) } - cm.display.maxLineChanged = false - } - - var takeFocus = op.focus && op.focus == activeElt() - if (op.preparedSelection) - { cm.display.input.showSelection(op.preparedSelection, takeFocus) } - if (op.updatedDisplay || op.startHeight != cm.doc.height) - { updateScrollbars(cm, op.barMeasure) } - if (op.updatedDisplay) - { setDocumentHeight(cm, op.barMeasure) } - - if (op.selectionChanged) { restartBlink(cm) } - - if (cm.state.focused && op.updateInput) - { cm.display.input.reset(op.typing) } - if (takeFocus) { ensureFocus(op.cm) } -} - -function endOperation_finish(op) { - var cm = op.cm, display = cm.display, doc = cm.doc - - if (op.updatedDisplay) { postUpdateDisplay(cm, op.update) } - - // Abort mouse wheel delta measurement, when scrolling explicitly - if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) - { display.wheelStartX = display.wheelStartY = null } - - // Propagate the scroll position to the actual DOM scroller - if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll) } - - if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true) } - // If we need to scroll a specific position into view, do so. - if (op.scrollToPos) { - var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from), - clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin) - maybeScrollWindow(cm, rect) - } - - // Fire events for markers that are hidden/unidden by editing or - // undoing - var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers - if (hidden) { for (var i = 0; i < hidden.length; ++i) - { if (!hidden[i].lines.length) { signal(hidden[i], "hide") } } } - if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1) - { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], "unhide") } } } - - if (display.wrapper.offsetHeight) - { doc.scrollTop = cm.display.scroller.scrollTop } - - // Fire change events, and delayed event handlers - if (op.changeObjs) - { signal(cm, "changes", cm, op.changeObjs) } - if (op.update) - { op.update.finish() } -} - -// Run the given function in an operation -function runInOp(cm, f) { - if (cm.curOp) { return f() } - startOperation(cm) - try { return f() } - finally { endOperation(cm) } -} -// Wraps a function in an operation. Returns the wrapped function. -function operation(cm, f) { - return function() { - if (cm.curOp) { return f.apply(cm, arguments) } - startOperation(cm) - try { return f.apply(cm, arguments) } - finally { endOperation(cm) } - } -} -// Used to add methods to editor and doc instances, wrapping them in -// operations. -function methodOp(f) { - return function() { - if (this.curOp) { return f.apply(this, arguments) } - startOperation(this) - try { return f.apply(this, arguments) } - finally { endOperation(this) } - } -} -function docMethodOp(f) { - return function() { - var cm = this.cm - if (!cm || cm.curOp) { return f.apply(this, arguments) } - startOperation(cm) - try { return f.apply(this, arguments) } - finally { endOperation(cm) } - } -} - -// Updates the display.view data structure for a given change to the -// document. From and to are in pre-change coordinates. Lendiff is -// the amount of lines added or subtracted by the change. This is -// used for changes that span multiple lines, or change the way -// lines are divided into visual lines. regLineChange (below) -// registers single-line changes. -function regChange(cm, from, to, lendiff) { - if (from == null) { from = cm.doc.first } - if (to == null) { to = cm.doc.first + cm.doc.size } - if (!lendiff) { lendiff = 0 } - - var display = cm.display - if (lendiff && to < display.viewTo && - (display.updateLineNumbers == null || display.updateLineNumbers > from)) - { display.updateLineNumbers = from } - - cm.curOp.viewChanged = true - - if (from >= display.viewTo) { // Change after - if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) - { resetView(cm) } - } else if (to <= display.viewFrom) { // Change before - if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) { - resetView(cm) - } else { - display.viewFrom += lendiff - display.viewTo += lendiff - } - } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap - resetView(cm) - } else if (from <= display.viewFrom) { // Top overlap - var cut = viewCuttingPoint(cm, to, to + lendiff, 1) - if (cut) { - display.view = display.view.slice(cut.index) - display.viewFrom = cut.lineN - display.viewTo += lendiff - } else { - resetView(cm) - } - } else if (to >= display.viewTo) { // Bottom overlap - var cut$1 = viewCuttingPoint(cm, from, from, -1) - if (cut$1) { - display.view = display.view.slice(0, cut$1.index) - display.viewTo = cut$1.lineN - } else { - resetView(cm) - } - } else { // Gap in the middle - var cutTop = viewCuttingPoint(cm, from, from, -1) - var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1) - if (cutTop && cutBot) { - display.view = display.view.slice(0, cutTop.index) - .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)) - .concat(display.view.slice(cutBot.index)) - display.viewTo += lendiff - } else { - resetView(cm) - } - } - - var ext = display.externalMeasured - if (ext) { - if (to < ext.lineN) - { ext.lineN += lendiff } - else if (from < ext.lineN + ext.size) - { display.externalMeasured = null } - } -} - -// Register a change to a single line. Type must be one of "text", -// "gutter", "class", "widget" -function regLineChange(cm, line, type) { - cm.curOp.viewChanged = true - var display = cm.display, ext = cm.display.externalMeasured - if (ext && line >= ext.lineN && line < ext.lineN + ext.size) - { display.externalMeasured = null } - - if (line < display.viewFrom || line >= display.viewTo) { return } - var lineView = display.view[findViewIndex(cm, line)] - if (lineView.node == null) { return } - var arr = lineView.changes || (lineView.changes = []) - if (indexOf(arr, type) == -1) { arr.push(type) } -} - -// Clear the view. -function resetView(cm) { - cm.display.viewFrom = cm.display.viewTo = cm.doc.first - cm.display.view = [] - cm.display.viewOffset = 0 -} - -function viewCuttingPoint(cm, oldN, newN, dir) { - var index = findViewIndex(cm, oldN), diff, view = cm.display.view - if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) - { return {index: index, lineN: newN} } - var n = cm.display.viewFrom - for (var i = 0; i < index; i++) - { n += view[i].size } - if (n != oldN) { - if (dir > 0) { - if (index == view.length - 1) { return null } - diff = (n + view[index].size) - oldN - index++ - } else { - diff = n - oldN - } - oldN += diff; newN += diff - } - while (visualLineNo(cm.doc, newN) != newN) { - if (index == (dir < 0 ? 0 : view.length - 1)) { return null } - newN += dir * view[index - (dir < 0 ? 1 : 0)].size - index += dir - } - return {index: index, lineN: newN} -} - -// Force the view to cover a given range, adding empty view element -// or clipping off existing ones as needed. -function adjustView(cm, from, to) { - var display = cm.display, view = display.view - if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) { - display.view = buildViewArray(cm, from, to) - display.viewFrom = from - } else { - if (display.viewFrom > from) - { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view) } - else if (display.viewFrom < from) - { display.view = display.view.slice(findViewIndex(cm, from)) } - display.viewFrom = from - if (display.viewTo < to) - { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)) } - else if (display.viewTo > to) - { display.view = display.view.slice(0, findViewIndex(cm, to)) } - } - display.viewTo = to -} - -// Count the number of lines in the view whose DOM representation is -// out of date (or nonexistent). -function countDirtyView(cm) { - var view = cm.display.view, dirty = 0 - for (var i = 0; i < view.length; i++) { - var lineView = view[i] - if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty } - } - return dirty -} - -// HIGHLIGHT WORKER - -function startWorker(cm, time) { - if (cm.doc.highlightFrontier < cm.display.viewTo) - { cm.state.highlight.set(time, bind(highlightWorker, cm)) } -} - -function highlightWorker(cm) { - var doc = cm.doc - if (doc.highlightFrontier >= cm.display.viewTo) { return } - var end = +new Date + cm.options.workTime - var context = getContextBefore(cm, doc.highlightFrontier) - var changedLines = [] - - doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) { - if (context.line >= cm.display.viewFrom) { // Visible - var oldStyles = line.styles - var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null - var highlighted = highlightLine(cm, line, context, true) - if (resetState) { context.state = resetState } - line.styles = highlighted.styles - var oldCls = line.styleClasses, newCls = highlighted.classes - if (newCls) { line.styleClasses = newCls } - else if (oldCls) { line.styleClasses = null } - var ischange = !oldStyles || oldStyles.length != line.styles.length || - oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass) - for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i] } - if (ischange) { changedLines.push(context.line) } - line.stateAfter = context.save() - context.nextLine() - } else { - if (line.text.length <= cm.options.maxHighlightLength) - { processLine(cm, line.text, context) } - line.stateAfter = context.line % 5 == 0 ? context.save() : null - context.nextLine() - } - if (+new Date > end) { - startWorker(cm, cm.options.workDelay) - return true - } - }) - doc.highlightFrontier = context.line - doc.modeFrontier = Math.max(doc.modeFrontier, context.line) - if (changedLines.length) { runInOp(cm, function () { - for (var i = 0; i < changedLines.length; i++) - { regLineChange(cm, changedLines[i], "text") } - }) } -} - -// DISPLAY DRAWING - -var DisplayUpdate = function(cm, viewport, force) { - var display = cm.display - - this.viewport = viewport - // Store some values that we'll need later (but don't want to force a relayout for) - this.visible = visibleLines(display, cm.doc, viewport) - this.editorIsHidden = !display.wrapper.offsetWidth - this.wrapperHeight = display.wrapper.clientHeight - this.wrapperWidth = display.wrapper.clientWidth - this.oldDisplayWidth = displayWidth(cm) - this.force = force - this.dims = getDimensions(cm) - this.events = [] -}; - -DisplayUpdate.prototype.signal = function (emitter, type) { - if (hasHandler(emitter, type)) - { this.events.push(arguments) } -}; -DisplayUpdate.prototype.finish = function () { - var this$1 = this; - - for (var i = 0; i < this.events.length; i++) - { signal.apply(null, this$1.events[i]) } -}; - -function maybeClipScrollbars(cm) { - var display = cm.display - if (!display.scrollbarsClipped && display.scroller.offsetWidth) { - display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth - display.heightForcer.style.height = scrollGap(cm) + "px" - display.sizer.style.marginBottom = -display.nativeBarWidth + "px" - display.sizer.style.borderRightWidth = scrollGap(cm) + "px" - display.scrollbarsClipped = true - } -} - -function selectionSnapshot(cm) { - if (cm.hasFocus()) { return null } - var active = activeElt() - if (!active || !contains(cm.display.lineDiv, active)) { return null } - var result = {activeElt: active} - if (window.getSelection) { - var sel = window.getSelection() - if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) { - result.anchorNode = sel.anchorNode - result.anchorOffset = sel.anchorOffset - result.focusNode = sel.focusNode - result.focusOffset = sel.focusOffset - } - } - return result -} - -function restoreSelection(snapshot) { - if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return } - snapshot.activeElt.focus() - if (snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) { - var sel = window.getSelection(), range = document.createRange() - range.setEnd(snapshot.anchorNode, snapshot.anchorOffset) - range.collapse(false) - sel.removeAllRanges() - sel.addRange(range) - sel.extend(snapshot.focusNode, snapshot.focusOffset) - } -} - -// Does the actual updating of the line display. Bails out -// (returning false) when there is nothing to be done and forced is -// false. -function updateDisplayIfNeeded(cm, update) { - var display = cm.display, doc = cm.doc - - if (update.editorIsHidden) { - resetView(cm) - return false - } - - // Bail out if the visible area is already rendered and nothing changed. - if (!update.force && - update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && - (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && - display.renderedView == display.view && countDirtyView(cm) == 0) - { return false } - - if (maybeUpdateLineNumberWidth(cm)) { - resetView(cm) - update.dims = getDimensions(cm) - } - - // Compute a suitable new viewport (from & to) - var end = doc.first + doc.size - var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first) - var to = Math.min(end, update.visible.to + cm.options.viewportMargin) - if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom) } - if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo) } - if (sawCollapsedSpans) { - from = visualLineNo(cm.doc, from) - to = visualLineEndNo(cm.doc, to) - } - - var different = from != display.viewFrom || to != display.viewTo || - display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth - adjustView(cm, from, to) - - display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom)) - // Position the mover div to align with the current scroll position - cm.display.mover.style.top = display.viewOffset + "px" - - var toUpdate = countDirtyView(cm) - if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && - (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) - { return false } - - // For big changes, we hide the enclosing element during the - // update, since that speeds up the operations on most browsers. - var selSnapshot = selectionSnapshot(cm) - if (toUpdate > 4) { display.lineDiv.style.display = "none" } - patchDisplay(cm, display.updateLineNumbers, update.dims) - if (toUpdate > 4) { display.lineDiv.style.display = "" } - display.renderedView = display.view - // There might have been a widget with a focused element that got - // hidden or updated, if so re-focus it. - restoreSelection(selSnapshot) - - // Prevent selection and cursors from interfering with the scroll - // width and height. - removeChildren(display.cursorDiv) - removeChildren(display.selectionDiv) - display.gutters.style.height = display.sizer.style.minHeight = 0 - - if (different) { - display.lastWrapHeight = update.wrapperHeight - display.lastWrapWidth = update.wrapperWidth - startWorker(cm, 400) - } - - display.updateLineNumbers = null - - return true -} - -function postUpdateDisplay(cm, update) { - var viewport = update.viewport - - for (var first = true;; first = false) { - if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) { - // Clip forced viewport to actual scrollable area. - if (viewport && viewport.top != null) - { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)} } - // Updated line heights might result in the drawn area not - // actually covering the viewport. Keep looping until it does. - update.visible = visibleLines(cm.display, cm.doc, viewport) - if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) - { break } - } - if (!updateDisplayIfNeeded(cm, update)) { break } - updateHeightsInViewport(cm) - var barMeasure = measureForScrollbars(cm) - updateSelection(cm) - updateScrollbars(cm, barMeasure) - setDocumentHeight(cm, barMeasure) - update.force = false - } - - update.signal(cm, "update", cm) - if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) { - update.signal(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo) - cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo - } -} - -function updateDisplaySimple(cm, viewport) { - var update = new DisplayUpdate(cm, viewport) - if (updateDisplayIfNeeded(cm, update)) { - updateHeightsInViewport(cm) - postUpdateDisplay(cm, update) - var barMeasure = measureForScrollbars(cm) - updateSelection(cm) - updateScrollbars(cm, barMeasure) - setDocumentHeight(cm, barMeasure) - update.finish() - } -} - -// Sync the actual display DOM structure with display.view, removing -// nodes for lines that are no longer in view, and creating the ones -// that are not there yet, and updating the ones that are out of -// date. -function patchDisplay(cm, updateNumbersFrom, dims) { - var display = cm.display, lineNumbers = cm.options.lineNumbers - var container = display.lineDiv, cur = container.firstChild - - function rm(node) { - var next = node.nextSibling - // Works around a throw-scroll bug in OS X Webkit - if (webkit && mac && cm.display.currentWheelTarget == node) - { node.style.display = "none" } - else - { node.parentNode.removeChild(node) } - return next - } - - var view = display.view, lineN = display.viewFrom - // Loop over the elements in the view, syncing cur (the DOM nodes - // in display.lineDiv) with the view as we go. - for (var i = 0; i < view.length; i++) { - var lineView = view[i] - if (lineView.hidden) { - } else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet - var node = buildLineElement(cm, lineView, lineN, dims) - container.insertBefore(node, cur) - } else { // Already drawn - while (cur != lineView.node) { cur = rm(cur) } - var updateNumber = lineNumbers && updateNumbersFrom != null && - updateNumbersFrom <= lineN && lineView.lineNumber - if (lineView.changes) { - if (indexOf(lineView.changes, "gutter") > -1) { updateNumber = false } - updateLineForChanges(cm, lineView, lineN, dims) - } - if (updateNumber) { - removeChildren(lineView.lineNumber) - lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN))) - } - cur = lineView.node.nextSibling - } - lineN += lineView.size - } - while (cur) { cur = rm(cur) } -} - -function updateGutterSpace(cm) { - var width = cm.display.gutters.offsetWidth - cm.display.sizer.style.marginLeft = width + "px" -} - -function setDocumentHeight(cm, measure) { - cm.display.sizer.style.minHeight = measure.docHeight + "px" - cm.display.heightForcer.style.top = measure.docHeight + "px" - cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + "px" -} - -// Rebuild the gutter elements, ensure the margin to the left of the -// code matches their width. -function updateGutters(cm) { - var gutters = cm.display.gutters, specs = cm.options.gutters - removeChildren(gutters) - var i = 0 - for (; i < specs.length; ++i) { - var gutterClass = specs[i] - var gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + gutterClass)) - if (gutterClass == "CodeMirror-linenumbers") { - cm.display.lineGutter = gElt - gElt.style.width = (cm.display.lineNumWidth || 1) + "px" - } - } - gutters.style.display = i ? "" : "none" - updateGutterSpace(cm) -} - -// Make sure the gutters options contains the element -// "CodeMirror-linenumbers" when the lineNumbers option is true. -function setGuttersForLineNumbers(options) { - var found = indexOf(options.gutters, "CodeMirror-linenumbers") - if (found == -1 && options.lineNumbers) { - options.gutters = options.gutters.concat(["CodeMirror-linenumbers"]) - } else if (found > -1 && !options.lineNumbers) { - options.gutters = options.gutters.slice(0) - options.gutters.splice(found, 1) - } -} - -var wheelSamples = 0; -var wheelPixelsPerUnit = null; -// Fill in a browser-detected starting value on browsers where we -// know one. These don't have to be accurate -- the result of them -// being wrong would just be a slight flicker on the first wheel -// scroll (if it is large enough). -if (ie) { wheelPixelsPerUnit = -.53 } -else if (gecko) { wheelPixelsPerUnit = 15 } -else if (chrome) { wheelPixelsPerUnit = -.7 } -else if (safari) { wheelPixelsPerUnit = -1/3 } - -function wheelEventDelta(e) { - var dx = e.wheelDeltaX, dy = e.wheelDeltaY - if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail } - if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail } - else if (dy == null) { dy = e.wheelDelta } - return {x: dx, y: dy} -} -function wheelEventPixels(e) { - var delta = wheelEventDelta(e) - delta.x *= wheelPixelsPerUnit - delta.y *= wheelPixelsPerUnit - return delta -} - -function onScrollWheel(cm, e) { - var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y - - var display = cm.display, scroll = display.scroller - // Quit if there's nothing to scroll here - var canScrollX = scroll.scrollWidth > scroll.clientWidth - var canScrollY = scroll.scrollHeight > scroll.clientHeight - if (!(dx && canScrollX || dy && canScrollY)) { return } - - // Webkit browsers on OS X abort momentum scrolls when the target - // of the scroll event is removed from the scrollable element. - // This hack (see related code in patchDisplay) makes sure the - // element is kept around. - if (dy && mac && webkit) { - outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) { - for (var i = 0; i < view.length; i++) { - if (view[i].node == cur) { - cm.display.currentWheelTarget = cur - break outer - } - } - } - } - - // On some browsers, horizontal scrolling will cause redraws to - // happen before the gutter has been realigned, causing it to - // wriggle around in a most unseemly way. When we have an - // estimated pixels/delta value, we just handle horizontal - // scrolling entirely here. It'll be slightly off from native, but - // better than glitching out. - if (dx && !gecko && !presto && wheelPixelsPerUnit != null) { - if (dy && canScrollY) - { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit)) } - setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit)) - // Only prevent default scrolling if vertical scrolling is - // actually possible. Otherwise, it causes vertical scroll - // jitter on OSX trackpads when deltaX is small and deltaY - // is large (issue #3579) - if (!dy || (dy && canScrollY)) - { e_preventDefault(e) } - display.wheelStartX = null // Abort measurement, if in progress - return - } - - // 'Project' the visible viewport to cover the area that is being - // scrolled into view (if we know enough to estimate it). - if (dy && wheelPixelsPerUnit != null) { - var pixels = dy * wheelPixelsPerUnit - var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight - if (pixels < 0) { top = Math.max(0, top + pixels - 50) } - else { bot = Math.min(cm.doc.height, bot + pixels + 50) } - updateDisplaySimple(cm, {top: top, bottom: bot}) - } - - if (wheelSamples < 20) { - if (display.wheelStartX == null) { - display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop - display.wheelDX = dx; display.wheelDY = dy - setTimeout(function () { - if (display.wheelStartX == null) { return } - var movedX = scroll.scrollLeft - display.wheelStartX - var movedY = scroll.scrollTop - display.wheelStartY - var sample = (movedY && display.wheelDY && movedY / display.wheelDY) || - (movedX && display.wheelDX && movedX / display.wheelDX) - display.wheelStartX = display.wheelStartY = null - if (!sample) { return } - wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1) - ++wheelSamples - }, 200) - } else { - display.wheelDX += dx; display.wheelDY += dy - } - } -} - -// Selection objects are immutable. A new one is created every time -// the selection changes. A selection is one or more non-overlapping -// (and non-touching) ranges, sorted, and an integer that indicates -// which one is the primary selection (the one that's scrolled into -// view, that getCursor returns, etc). -var Selection = function(ranges, primIndex) { - this.ranges = ranges - this.primIndex = primIndex -}; - -Selection.prototype.primary = function () { return this.ranges[this.primIndex] }; - -Selection.prototype.equals = function (other) { - var this$1 = this; - - if (other == this) { return true } - if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false } - for (var i = 0; i < this.ranges.length; i++) { - var here = this$1.ranges[i], there = other.ranges[i] - if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false } - } - return true -}; - -Selection.prototype.deepCopy = function () { - var this$1 = this; - - var out = [] - for (var i = 0; i < this.ranges.length; i++) - { out[i] = new Range(copyPos(this$1.ranges[i].anchor), copyPos(this$1.ranges[i].head)) } - return new Selection(out, this.primIndex) -}; - -Selection.prototype.somethingSelected = function () { - var this$1 = this; - - for (var i = 0; i < this.ranges.length; i++) - { if (!this$1.ranges[i].empty()) { return true } } - return false -}; - -Selection.prototype.contains = function (pos, end) { - var this$1 = this; - - if (!end) { end = pos } - for (var i = 0; i < this.ranges.length; i++) { - var range = this$1.ranges[i] - if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) - { return i } - } - return -1 -}; - -var Range = function(anchor, head) { - this.anchor = anchor; this.head = head -}; - -Range.prototype.from = function () { return minPos(this.anchor, this.head) }; -Range.prototype.to = function () { return maxPos(this.anchor, this.head) }; -Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch }; - -// Take an unsorted, potentially overlapping set of ranges, and -// build a selection out of it. 'Consumes' ranges array (modifying -// it). -function normalizeSelection(ranges, primIndex) { - var prim = ranges[primIndex] - ranges.sort(function (a, b) { return cmp(a.from(), b.from()); }) - primIndex = indexOf(ranges, prim) - for (var i = 1; i < ranges.length; i++) { - var cur = ranges[i], prev = ranges[i - 1] - if (cmp(prev.to(), cur.from()) >= 0) { - var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to()) - var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head - if (i <= primIndex) { --primIndex } - ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to)) - } - } - return new Selection(ranges, primIndex) -} - -function simpleSelection(anchor, head) { - return new Selection([new Range(anchor, head || anchor)], 0) -} - -// Compute the position of the end of a change (its 'to' property -// refers to the pre-change end). -function changeEnd(change) { - if (!change.text) { return change.to } - return Pos(change.from.line + change.text.length - 1, - lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0)) -} - -// Adjust a position to refer to the post-change position of the -// same text, or the end of the change if the change covers it. -function adjustForChange(pos, change) { - if (cmp(pos, change.from) < 0) { return pos } - if (cmp(pos, change.to) <= 0) { return changeEnd(change) } - - var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch - if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch } - return Pos(line, ch) -} - -function computeSelAfterChange(doc, change) { - var out = [] - for (var i = 0; i < doc.sel.ranges.length; i++) { - var range = doc.sel.ranges[i] - out.push(new Range(adjustForChange(range.anchor, change), - adjustForChange(range.head, change))) - } - return normalizeSelection(out, doc.sel.primIndex) -} - -function offsetPos(pos, old, nw) { - if (pos.line == old.line) - { return Pos(nw.line, pos.ch - old.ch + nw.ch) } - else - { return Pos(nw.line + (pos.line - old.line), pos.ch) } -} - -// Used by replaceSelections to allow moving the selection to the -// start or around the replaced test. Hint may be "start" or "around". -function computeReplacedSel(doc, changes, hint) { - var out = [] - var oldPrev = Pos(doc.first, 0), newPrev = oldPrev - for (var i = 0; i < changes.length; i++) { - var change = changes[i] - var from = offsetPos(change.from, oldPrev, newPrev) - var to = offsetPos(changeEnd(change), oldPrev, newPrev) - oldPrev = change.to - newPrev = to - if (hint == "around") { - var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0 - out[i] = new Range(inv ? to : from, inv ? from : to) - } else { - out[i] = new Range(from, from) - } - } - return new Selection(out, doc.sel.primIndex) -} - -// Used to get the editor into a consistent state again when options change. - -function loadMode(cm) { - cm.doc.mode = getMode(cm.options, cm.doc.modeOption) - resetModeState(cm) -} - -function resetModeState(cm) { - cm.doc.iter(function (line) { - if (line.stateAfter) { line.stateAfter = null } - if (line.styles) { line.styles = null } - }) - cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first - startWorker(cm, 100) - cm.state.modeGen++ - if (cm.curOp) { regChange(cm) } -} - -// DOCUMENT DATA STRUCTURE - -// By default, updates that start and end at the beginning of a line -// are treated specially, in order to make the association of line -// widgets and marker elements with the text behave more intuitive. -function isWholeLineUpdate(doc, change) { - return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == "" && - (!doc.cm || doc.cm.options.wholeLineUpdateBefore) -} - -// Perform a change on the document data structure. -function updateDoc(doc, change, markedSpans, estimateHeight) { - function spansFor(n) {return markedSpans ? markedSpans[n] : null} - function update(line, text, spans) { - updateLine(line, text, spans, estimateHeight) - signalLater(line, "change", line, change) - } - function linesFor(start, end) { - var result = [] - for (var i = start; i < end; ++i) - { result.push(new Line(text[i], spansFor(i), estimateHeight)) } - return result - } - - var from = change.from, to = change.to, text = change.text - var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line) - var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line - - // Adjust the line structure - if (change.full) { - doc.insert(0, linesFor(0, text.length)) - doc.remove(text.length, doc.size - text.length) - } else if (isWholeLineUpdate(doc, change)) { - // This is a whole-line replace. Treated specially to make - // sure line objects move the way they are supposed to. - var added = linesFor(0, text.length - 1) - update(lastLine, lastLine.text, lastSpans) - if (nlines) { doc.remove(from.line, nlines) } - if (added.length) { doc.insert(from.line, added) } - } else if (firstLine == lastLine) { - if (text.length == 1) { - update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans) - } else { - var added$1 = linesFor(1, text.length - 1) - added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight)) - update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)) - doc.insert(from.line + 1, added$1) - } - } else if (text.length == 1) { - update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0)) - doc.remove(from.line + 1, nlines) - } else { - update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)) - update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans) - var added$2 = linesFor(1, text.length - 1) - if (nlines > 1) { doc.remove(from.line + 1, nlines - 1) } - doc.insert(from.line + 1, added$2) - } - - signalLater(doc, "change", doc, change) -} - -// Call f for all linked documents. -function linkedDocs(doc, f, sharedHistOnly) { - function propagate(doc, skip, sharedHist) { - if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) { - var rel = doc.linked[i] - if (rel.doc == skip) { continue } - var shared = sharedHist && rel.sharedHist - if (sharedHistOnly && !shared) { continue } - f(rel.doc, shared) - propagate(rel.doc, doc, shared) - } } - } - propagate(doc, null, true) -} - -// Attach a document to an editor. -function attachDoc(cm, doc) { - if (doc.cm) { throw new Error("This document is already in use.") } - cm.doc = doc - doc.cm = cm - estimateLineHeights(cm) - loadMode(cm) - setDirectionClass(cm) - if (!cm.options.lineWrapping) { findMaxLine(cm) } - cm.options.mode = doc.modeOption - regChange(cm) -} - -function setDirectionClass(cm) { - ;(cm.doc.direction == "rtl" ? addClass : rmClass)(cm.display.lineDiv, "CodeMirror-rtl") -} - -function directionChanged(cm) { - runInOp(cm, function () { - setDirectionClass(cm) - regChange(cm) - }) -} - -function History(startGen) { - // Arrays of change events and selections. Doing something adds an - // event to done and clears undo. Undoing moves events from done - // to undone, redoing moves them in the other direction. - this.done = []; this.undone = [] - this.undoDepth = Infinity - // Used to track when changes can be merged into a single undo - // event - this.lastModTime = this.lastSelTime = 0 - this.lastOp = this.lastSelOp = null - this.lastOrigin = this.lastSelOrigin = null - // Used by the isClean() method - this.generation = this.maxGeneration = startGen || 1 -} - -// Create a history change event from an updateDoc-style change -// object. -function historyChangeFromChange(doc, change) { - var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)} - attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1) - linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true) - return histChange -} - -// Pop all selection events off the end of a history array. Stop at -// a change event. -function clearSelectionEvents(array) { - while (array.length) { - var last = lst(array) - if (last.ranges) { array.pop() } - else { break } - } -} - -// Find the top change event in the history. Pop off selection -// events that are in the way. -function lastChangeEvent(hist, force) { - if (force) { - clearSelectionEvents(hist.done) - return lst(hist.done) - } else if (hist.done.length && !lst(hist.done).ranges) { - return lst(hist.done) - } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) { - hist.done.pop() - return lst(hist.done) - } -} - -// Register a change in the history. Merges changes that are within -// a single operation, or are close together with an origin that -// allows merging (starting with "+") into a single event. -function addChangeToHistory(doc, change, selAfter, opId) { - var hist = doc.history - hist.undone.length = 0 - var time = +new Date, cur - var last - - if ((hist.lastOp == opId || - hist.lastOrigin == change.origin && change.origin && - ((change.origin.charAt(0) == "+" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) || - change.origin.charAt(0) == "*")) && - (cur = lastChangeEvent(hist, hist.lastOp == opId))) { - // Merge this change into the last event - last = lst(cur.changes) - if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) { - // Optimized case for simple insertion -- don't want to add - // new changesets for every character typed - last.to = changeEnd(change) - } else { - // Add new sub-event - cur.changes.push(historyChangeFromChange(doc, change)) - } - } else { - // Can not be merged, start a new event. - var before = lst(hist.done) - if (!before || !before.ranges) - { pushSelectionToHistory(doc.sel, hist.done) } - cur = {changes: [historyChangeFromChange(doc, change)], - generation: hist.generation} - hist.done.push(cur) - while (hist.done.length > hist.undoDepth) { - hist.done.shift() - if (!hist.done[0].ranges) { hist.done.shift() } - } - } - hist.done.push(selAfter) - hist.generation = ++hist.maxGeneration - hist.lastModTime = hist.lastSelTime = time - hist.lastOp = hist.lastSelOp = opId - hist.lastOrigin = hist.lastSelOrigin = change.origin - - if (!last) { signal(doc, "historyAdded") } -} - -function selectionEventCanBeMerged(doc, origin, prev, sel) { - var ch = origin.charAt(0) - return ch == "*" || - ch == "+" && - prev.ranges.length == sel.ranges.length && - prev.somethingSelected() == sel.somethingSelected() && - new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500) -} - -// Called whenever the selection changes, sets the new selection as -// the pending selection in the history, and pushes the old pending -// selection into the 'done' array when it was significantly -// different (in number of selected ranges, emptiness, or time). -function addSelectionToHistory(doc, sel, opId, options) { - var hist = doc.history, origin = options && options.origin - - // A new event is started when the previous origin does not match - // the current, or the origins don't allow matching. Origins - // starting with * are always merged, those starting with + are - // merged when similar and close together in time. - if (opId == hist.lastSelOp || - (origin && hist.lastSelOrigin == origin && - (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || - selectionEventCanBeMerged(doc, origin, lst(hist.done), sel)))) - { hist.done[hist.done.length - 1] = sel } - else - { pushSelectionToHistory(sel, hist.done) } - - hist.lastSelTime = +new Date - hist.lastSelOrigin = origin - hist.lastSelOp = opId - if (options && options.clearRedo !== false) - { clearSelectionEvents(hist.undone) } -} - -function pushSelectionToHistory(sel, dest) { - var top = lst(dest) - if (!(top && top.ranges && top.equals(sel))) - { dest.push(sel) } -} - -// Used to store marked span information in the history. -function attachLocalSpans(doc, change, from, to) { - var existing = change["spans_" + doc.id], n = 0 - doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) { - if (line.markedSpans) - { (existing || (existing = change["spans_" + doc.id] = {}))[n] = line.markedSpans } - ++n - }) -} - -// When un/re-doing restores text containing marked spans, those -// that have been explicitly cleared should not be restored. -function removeClearedSpans(spans) { - if (!spans) { return null } - var out - for (var i = 0; i < spans.length; ++i) { - if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i) } } - else if (out) { out.push(spans[i]) } - } - return !out ? spans : out.length ? out : null -} - -// Retrieve and filter the old marked spans stored in a change event. -function getOldSpans(doc, change) { - var found = change["spans_" + doc.id] - if (!found) { return null } - var nw = [] - for (var i = 0; i < change.text.length; ++i) - { nw.push(removeClearedSpans(found[i])) } - return nw -} - -// Used for un/re-doing changes from the history. Combines the -// result of computing the existing spans with the set of spans that -// existed in the history (so that deleting around a span and then -// undoing brings back the span). -function mergeOldSpans(doc, change) { - var old = getOldSpans(doc, change) - var stretched = stretchSpansOverChange(doc, change) - if (!old) { return stretched } - if (!stretched) { return old } - - for (var i = 0; i < old.length; ++i) { - var oldCur = old[i], stretchCur = stretched[i] - if (oldCur && stretchCur) { - spans: for (var j = 0; j < stretchCur.length; ++j) { - var span = stretchCur[j] - for (var k = 0; k < oldCur.length; ++k) - { if (oldCur[k].marker == span.marker) { continue spans } } - oldCur.push(span) - } - } else if (stretchCur) { - old[i] = stretchCur - } - } - return old -} - -// Used both to provide a JSON-safe object in .getHistory, and, when -// detaching a document, to split the history in two -function copyHistoryArray(events, newGroup, instantiateSel) { - var copy = [] - for (var i = 0; i < events.length; ++i) { - var event = events[i] - if (event.ranges) { - copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event) - continue - } - var changes = event.changes, newChanges = [] - copy.push({changes: newChanges}) - for (var j = 0; j < changes.length; ++j) { - var change = changes[j], m = (void 0) - newChanges.push({from: change.from, to: change.to, text: change.text}) - if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\d+)$/)) { - if (indexOf(newGroup, Number(m[1])) > -1) { - lst(newChanges)[prop] = change[prop] - delete change[prop] - } - } } } - } - } - return copy -} - -// The 'scroll' parameter given to many of these indicated whether -// the new cursor position should be scrolled into view after -// modifying the selection. - -// If shift is held or the extend flag is set, extends a range to -// include a given position (and optionally a second position). -// Otherwise, simply returns the range between the given positions. -// Used for cursor motion and such. -function extendRange(range, head, other, extend) { - if (extend) { - var anchor = range.anchor - if (other) { - var posBefore = cmp(head, anchor) < 0 - if (posBefore != (cmp(other, anchor) < 0)) { - anchor = head - head = other - } else if (posBefore != (cmp(head, other) < 0)) { - head = other - } - } - return new Range(anchor, head) - } else { - return new Range(other || head, head) - } -} - -// Extend the primary selection range, discard the rest. -function extendSelection(doc, head, other, options, extend) { - if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend) } - setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options) -} - -// Extend all selections (pos is an array of selections with length -// equal the number of selections) -function extendSelections(doc, heads, options) { - var out = [] - var extend = doc.cm && (doc.cm.display.shift || doc.extend) - for (var i = 0; i < doc.sel.ranges.length; i++) - { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend) } - var newSel = normalizeSelection(out, doc.sel.primIndex) - setSelection(doc, newSel, options) -} - -// Updates a single range in the selection. -function replaceOneSelection(doc, i, range, options) { - var ranges = doc.sel.ranges.slice(0) - ranges[i] = range - setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options) -} - -// Reset the selection to a single range. -function setSimpleSelection(doc, anchor, head, options) { - setSelection(doc, simpleSelection(anchor, head), options) -} - -// Give beforeSelectionChange handlers a change to influence a -// selection update. -function filterSelectionChange(doc, sel, options) { - var obj = { - ranges: sel.ranges, - update: function(ranges) { - var this$1 = this; - - this.ranges = [] - for (var i = 0; i < ranges.length; i++) - { this$1.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), - clipPos(doc, ranges[i].head)) } - }, - origin: options && options.origin - } - signal(doc, "beforeSelectionChange", doc, obj) - if (doc.cm) { signal(doc.cm, "beforeSelectionChange", doc.cm, obj) } - if (obj.ranges != sel.ranges) { return normalizeSelection(obj.ranges, obj.ranges.length - 1) } - else { return sel } -} - -function setSelectionReplaceHistory(doc, sel, options) { - var done = doc.history.done, last = lst(done) - if (last && last.ranges) { - done[done.length - 1] = sel - setSelectionNoUndo(doc, sel, options) - } else { - setSelection(doc, sel, options) - } -} - -// Set a new selection. -function setSelection(doc, sel, options) { - setSelectionNoUndo(doc, sel, options) - addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options) -} - -function setSelectionNoUndo(doc, sel, options) { - if (hasHandler(doc, "beforeSelectionChange") || doc.cm && hasHandler(doc.cm, "beforeSelectionChange")) - { sel = filterSelectionChange(doc, sel, options) } - - var bias = options && options.bias || - (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1) - setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true)) - - if (!(options && options.scroll === false) && doc.cm) - { ensureCursorVisible(doc.cm) } -} - -function setSelectionInner(doc, sel) { - if (sel.equals(doc.sel)) { return } - - doc.sel = sel - - if (doc.cm) { - doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true - signalCursorActivity(doc.cm) - } - signalLater(doc, "cursorActivity", doc) -} - -// Verify that the selection does not partially select any atomic -// marked ranges. -function reCheckSelection(doc) { - setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false)) -} - -// Return a selection that does not partially select any atomic -// ranges. -function skipAtomicInSelection(doc, sel, bias, mayClear) { - var out - for (var i = 0; i < sel.ranges.length; i++) { - var range = sel.ranges[i] - var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i] - var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear) - var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear) - if (out || newAnchor != range.anchor || newHead != range.head) { - if (!out) { out = sel.ranges.slice(0, i) } - out[i] = new Range(newAnchor, newHead) - } - } - return out ? normalizeSelection(out, sel.primIndex) : sel -} - -function skipAtomicInner(doc, pos, oldPos, dir, mayClear) { - var line = getLine(doc, pos.line) - if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) { - var sp = line.markedSpans[i], m = sp.marker - if ((sp.from == null || (m.inclusiveLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && - (sp.to == null || (m.inclusiveRight ? sp.to >= pos.ch : sp.to > pos.ch))) { - if (mayClear) { - signal(m, "beforeCursorEnter") - if (m.explicitlyCleared) { - if (!line.markedSpans) { break } - else {--i; continue} - } - } - if (!m.atomic) { continue } - - if (oldPos) { - var near = m.find(dir < 0 ? 1 : -1), diff = (void 0) - if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft) - { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null) } - if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) - { return skipAtomicInner(doc, near, pos, dir, mayClear) } - } - - var far = m.find(dir < 0 ? -1 : 1) - if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight) - { far = movePos(doc, far, dir, far.line == pos.line ? line : null) } - return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null - } - } } - return pos -} - -// Ensure a given position is not inside an atomic range. -function skipAtomic(doc, pos, oldPos, bias, mayClear) { - var dir = bias || 1 - var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || - (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) || - skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || - (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true)) - if (!found) { - doc.cantEdit = true - return Pos(doc.first, 0) - } - return found -} - -function movePos(doc, pos, dir, line) { - if (dir < 0 && pos.ch == 0) { - if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) } - else { return null } - } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) { - if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) } - else { return null } - } else { - return new Pos(pos.line, pos.ch + dir) - } -} - -function selectAll(cm) { - cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll) -} - -// UPDATING - -// Allow "beforeChange" event handlers to influence a change -function filterChange(doc, change, update) { - var obj = { - canceled: false, - from: change.from, - to: change.to, - text: change.text, - origin: change.origin, - cancel: function () { return obj.canceled = true; } - } - if (update) { obj.update = function (from, to, text, origin) { - if (from) { obj.from = clipPos(doc, from) } - if (to) { obj.to = clipPos(doc, to) } - if (text) { obj.text = text } - if (origin !== undefined) { obj.origin = origin } - } } - signal(doc, "beforeChange", doc, obj) - if (doc.cm) { signal(doc.cm, "beforeChange", doc.cm, obj) } - - if (obj.canceled) { return null } - return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin} -} - -// Apply a change to a document, and add it to the document's -// history, and propagating it to all linked documents. -function makeChange(doc, change, ignoreReadOnly) { - if (doc.cm) { - if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) } - if (doc.cm.state.suppressEdits) { return } - } - - if (hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange")) { - change = filterChange(doc, change, true) - if (!change) { return } - } - - // Possibly split or suppress the update based on the presence - // of read-only spans in its range. - var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to) - if (split) { - for (var i = split.length - 1; i >= 0; --i) - { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [""] : change.text, origin: change.origin}) } - } else { - makeChangeInner(doc, change) - } -} - -function makeChangeInner(doc, change) { - if (change.text.length == 1 && change.text[0] == "" && cmp(change.from, change.to) == 0) { return } - var selAfter = computeSelAfterChange(doc, change) - addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN) - - makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change)) - var rebased = [] - - linkedDocs(doc, function (doc, sharedHist) { - if (!sharedHist && indexOf(rebased, doc.history) == -1) { - rebaseHist(doc.history, change) - rebased.push(doc.history) - } - makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change)) - }) -} - -// Revert a change stored in a document's history. -function makeChangeFromHistory(doc, type, allowSelectionOnly) { - var suppress = doc.cm && doc.cm.state.suppressEdits - if (suppress && !allowSelectionOnly) { return } - - var hist = doc.history, event, selAfter = doc.sel - var source = type == "undo" ? hist.done : hist.undone, dest = type == "undo" ? hist.undone : hist.done - - // Verify that there is a useable event (so that ctrl-z won't - // needlessly clear selection events) - var i = 0 - for (; i < source.length; i++) { - event = source[i] - if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) - { break } - } - if (i == source.length) { return } - hist.lastOrigin = hist.lastSelOrigin = null - - for (;;) { - event = source.pop() - if (event.ranges) { - pushSelectionToHistory(event, dest) - if (allowSelectionOnly && !event.equals(doc.sel)) { - setSelection(doc, event, {clearRedo: false}) - return - } - selAfter = event - } else if (suppress) { - source.push(event) - return - } else { break } - } - - // Build up a reverse change object to add to the opposite history - // stack (redo when undoing, and vice versa). - var antiChanges = [] - pushSelectionToHistory(selAfter, dest) - dest.push({changes: antiChanges, generation: hist.generation}) - hist.generation = event.generation || ++hist.maxGeneration - - var filter = hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange") - - var loop = function ( i ) { - var change = event.changes[i] - change.origin = type - if (filter && !filterChange(doc, change, false)) { - source.length = 0 - return {} - } - - antiChanges.push(historyChangeFromChange(doc, change)) - - var after = i ? computeSelAfterChange(doc, change) : lst(source) - makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change)) - if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}) } - var rebased = [] - - // Propagate to the linked documents - linkedDocs(doc, function (doc, sharedHist) { - if (!sharedHist && indexOf(rebased, doc.history) == -1) { - rebaseHist(doc.history, change) - rebased.push(doc.history) - } - makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change)) - }) - }; - - for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) { - var returned = loop( i$1 ); - - if ( returned ) return returned.v; - } -} - -// Sub-views need their line numbers shifted when text is added -// above or below them in the parent document. -function shiftDoc(doc, distance) { - if (distance == 0) { return } - doc.first += distance - doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range( - Pos(range.anchor.line + distance, range.anchor.ch), - Pos(range.head.line + distance, range.head.ch) - ); }), doc.sel.primIndex) - if (doc.cm) { - regChange(doc.cm, doc.first, doc.first - distance, distance) - for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) - { regLineChange(doc.cm, l, "gutter") } - } -} - -// More lower-level change function, handling only a single document -// (not linked ones). -function makeChangeSingleDoc(doc, change, selAfter, spans) { - if (doc.cm && !doc.cm.curOp) - { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) } - - if (change.to.line < doc.first) { - shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line)) - return - } - if (change.from.line > doc.lastLine()) { return } - - // Clip the change to the size of this doc - if (change.from.line < doc.first) { - var shift = change.text.length - 1 - (doc.first - change.from.line) - shiftDoc(doc, shift) - change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch), - text: [lst(change.text)], origin: change.origin} - } - var last = doc.lastLine() - if (change.to.line > last) { - change = {from: change.from, to: Pos(last, getLine(doc, last).text.length), - text: [change.text[0]], origin: change.origin} - } - - change.removed = getBetween(doc, change.from, change.to) - - if (!selAfter) { selAfter = computeSelAfterChange(doc, change) } - if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans) } - else { updateDoc(doc, change, spans) } - setSelectionNoUndo(doc, selAfter, sel_dontScroll) -} - -// Handle the interaction of a change to a document with the editor -// that this document is part of. -function makeChangeSingleDocInEditor(cm, change, spans) { - var doc = cm.doc, display = cm.display, from = change.from, to = change.to - - var recomputeMaxLength = false, checkWidthStart = from.line - if (!cm.options.lineWrapping) { - checkWidthStart = lineNo(visualLine(getLine(doc, from.line))) - doc.iter(checkWidthStart, to.line + 1, function (line) { - if (line == display.maxLine) { - recomputeMaxLength = true - return true - } - }) - } - - if (doc.sel.contains(change.from, change.to) > -1) - { signalCursorActivity(cm) } - - updateDoc(doc, change, spans, estimateHeight(cm)) - - if (!cm.options.lineWrapping) { - doc.iter(checkWidthStart, from.line + change.text.length, function (line) { - var len = lineLength(line) - if (len > display.maxLineLength) { - display.maxLine = line - display.maxLineLength = len - display.maxLineChanged = true - recomputeMaxLength = false - } - }) - if (recomputeMaxLength) { cm.curOp.updateMaxLine = true } - } - - retreatFrontier(doc, from.line) - startWorker(cm, 400) - - var lendiff = change.text.length - (to.line - from.line) - 1 - // Remember that these lines changed, for updating the display - if (change.full) - { regChange(cm) } - else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) - { regLineChange(cm, from.line, "text") } - else - { regChange(cm, from.line, to.line + 1, lendiff) } - - var changesHandler = hasHandler(cm, "changes"), changeHandler = hasHandler(cm, "change") - if (changeHandler || changesHandler) { - var obj = { - from: from, to: to, - text: change.text, - removed: change.removed, - origin: change.origin - } - if (changeHandler) { signalLater(cm, "change", cm, obj) } - if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj) } - } - cm.display.selForContextMenu = null -} - -function replaceRange(doc, code, from, to, origin) { - if (!to) { to = from } - if (cmp(to, from) < 0) { var assign; - (assign = [to, from], from = assign[0], to = assign[1], assign) } - if (typeof code == "string") { code = doc.splitLines(code) } - makeChange(doc, {from: from, to: to, text: code, origin: origin}) -} - -// Rebasing/resetting history to deal with externally-sourced changes - -function rebaseHistSelSingle(pos, from, to, diff) { - if (to < pos.line) { - pos.line += diff - } else if (from < pos.line) { - pos.line = from - pos.ch = 0 - } -} - -// Tries to rebase an array of history events given a change in the -// document. If the change touches the same lines as the event, the -// event, and everything 'behind' it, is discarded. If the change is -// before the event, the event's positions are updated. Uses a -// copy-on-write scheme for the positions, to avoid having to -// reallocate them all on every rebase, but also avoid problems with -// shared position objects being unsafely updated. -function rebaseHistArray(array, from, to, diff) { - for (var i = 0; i < array.length; ++i) { - var sub = array[i], ok = true - if (sub.ranges) { - if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true } - for (var j = 0; j < sub.ranges.length; j++) { - rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff) - rebaseHistSelSingle(sub.ranges[j].head, from, to, diff) - } - continue - } - for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) { - var cur = sub.changes[j$1] - if (to < cur.from.line) { - cur.from = Pos(cur.from.line + diff, cur.from.ch) - cur.to = Pos(cur.to.line + diff, cur.to.ch) - } else if (from <= cur.to.line) { - ok = false - break - } - } - if (!ok) { - array.splice(0, i + 1) - i = 0 - } - } -} - -function rebaseHist(hist, change) { - var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1 - rebaseHistArray(hist.done, from, to, diff) - rebaseHistArray(hist.undone, from, to, diff) -} - -// Utility for applying a change to a line by handle or number, -// returning the number and optionally registering the line as -// changed. -function changeLine(doc, handle, changeType, op) { - var no = handle, line = handle - if (typeof handle == "number") { line = getLine(doc, clipLine(doc, handle)) } - else { no = lineNo(handle) } - if (no == null) { return null } - if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType) } - return line -} - -// The document is represented as a BTree consisting of leaves, with -// chunk of lines in them, and branches, with up to ten leaves or -// other branch nodes below them. The top node is always a branch -// node, and is the document object itself (meaning it has -// additional methods and properties). -// -// All nodes have parent links. The tree is used both to go from -// line numbers to line objects, and to go from objects to numbers. -// It also indexes by height, and is used to convert between height -// and line object, and to find the total height of the document. -// -// See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html - -function LeafChunk(lines) { - var this$1 = this; - - this.lines = lines - this.parent = null - var height = 0 - for (var i = 0; i < lines.length; ++i) { - lines[i].parent = this$1 - height += lines[i].height - } - this.height = height -} - -LeafChunk.prototype = { - chunkSize: function chunkSize() { return this.lines.length }, - - // Remove the n lines at offset 'at'. - removeInner: function removeInner(at, n) { - var this$1 = this; - - for (var i = at, e = at + n; i < e; ++i) { - var line = this$1.lines[i] - this$1.height -= line.height - cleanUpLine(line) - signalLater(line, "delete") - } - this.lines.splice(at, n) - }, - - // Helper used to collapse a small branch into a single leaf. - collapse: function collapse(lines) { - lines.push.apply(lines, this.lines) - }, - - // Insert the given array of lines at offset 'at', count them as - // having the given height. - insertInner: function insertInner(at, lines, height) { - var this$1 = this; - - this.height += height - this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at)) - for (var i = 0; i < lines.length; ++i) { lines[i].parent = this$1 } - }, - - // Used to iterate over a part of the tree. - iterN: function iterN(at, n, op) { - var this$1 = this; - - for (var e = at + n; at < e; ++at) - { if (op(this$1.lines[at])) { return true } } - } -} - -function BranchChunk(children) { - var this$1 = this; - - this.children = children - var size = 0, height = 0 - for (var i = 0; i < children.length; ++i) { - var ch = children[i] - size += ch.chunkSize(); height += ch.height - ch.parent = this$1 - } - this.size = size - this.height = height - this.parent = null -} - -BranchChunk.prototype = { - chunkSize: function chunkSize() { return this.size }, - - removeInner: function removeInner(at, n) { - var this$1 = this; - - this.size -= n - for (var i = 0; i < this.children.length; ++i) { - var child = this$1.children[i], sz = child.chunkSize() - if (at < sz) { - var rm = Math.min(n, sz - at), oldHeight = child.height - child.removeInner(at, rm) - this$1.height -= oldHeight - child.height - if (sz == rm) { this$1.children.splice(i--, 1); child.parent = null } - if ((n -= rm) == 0) { break } - at = 0 - } else { at -= sz } - } - // If the result is smaller than 25 lines, ensure that it is a - // single leaf node. - if (this.size - n < 25 && - (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) { - var lines = [] - this.collapse(lines) - this.children = [new LeafChunk(lines)] - this.children[0].parent = this - } - }, - - collapse: function collapse(lines) { - var this$1 = this; - - for (var i = 0; i < this.children.length; ++i) { this$1.children[i].collapse(lines) } - }, - - insertInner: function insertInner(at, lines, height) { - var this$1 = this; - - this.size += lines.length - this.height += height - for (var i = 0; i < this.children.length; ++i) { - var child = this$1.children[i], sz = child.chunkSize() - if (at <= sz) { - child.insertInner(at, lines, height) - if (child.lines && child.lines.length > 50) { - // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced. - // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest. - var remaining = child.lines.length % 25 + 25 - for (var pos = remaining; pos < child.lines.length;) { - var leaf = new LeafChunk(child.lines.slice(pos, pos += 25)) - child.height -= leaf.height - this$1.children.splice(++i, 0, leaf) - leaf.parent = this$1 - } - child.lines = child.lines.slice(0, remaining) - this$1.maybeSpill() - } - break - } - at -= sz - } - }, - - // When a node has grown, check whether it should be split. - maybeSpill: function maybeSpill() { - if (this.children.length <= 10) { return } - var me = this - do { - var spilled = me.children.splice(me.children.length - 5, 5) - var sibling = new BranchChunk(spilled) - if (!me.parent) { // Become the parent node - var copy = new BranchChunk(me.children) - copy.parent = me - me.children = [copy, sibling] - me = copy - } else { - me.size -= sibling.size - me.height -= sibling.height - var myIndex = indexOf(me.parent.children, me) - me.parent.children.splice(myIndex + 1, 0, sibling) - } - sibling.parent = me.parent - } while (me.children.length > 10) - me.parent.maybeSpill() - }, - - iterN: function iterN(at, n, op) { - var this$1 = this; - - for (var i = 0; i < this.children.length; ++i) { - var child = this$1.children[i], sz = child.chunkSize() - if (at < sz) { - var used = Math.min(n, sz - at) - if (child.iterN(at, used, op)) { return true } - if ((n -= used) == 0) { break } - at = 0 - } else { at -= sz } - } - } -} - -// Line widgets are block elements displayed above or below a line. - -var LineWidget = function(doc, node, options) { - var this$1 = this; - - if (options) { for (var opt in options) { if (options.hasOwnProperty(opt)) - { this$1[opt] = options[opt] } } } - this.doc = doc - this.node = node -}; - -LineWidget.prototype.clear = function () { - var this$1 = this; - - var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line) - if (no == null || !ws) { return } - for (var i = 0; i < ws.length; ++i) { if (ws[i] == this$1) { ws.splice(i--, 1) } } - if (!ws.length) { line.widgets = null } - var height = widgetHeight(this) - updateLineHeight(line, Math.max(0, line.height - height)) - if (cm) { - runInOp(cm, function () { - adjustScrollWhenAboveVisible(cm, line, -height) - regLineChange(cm, no, "widget") - }) - signalLater(cm, "lineWidgetCleared", cm, this, no) - } -}; - -LineWidget.prototype.changed = function () { - var this$1 = this; - - var oldH = this.height, cm = this.doc.cm, line = this.line - this.height = null - var diff = widgetHeight(this) - oldH - if (!diff) { return } - if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff) } - if (cm) { - runInOp(cm, function () { - cm.curOp.forceUpdate = true - adjustScrollWhenAboveVisible(cm, line, diff) - signalLater(cm, "lineWidgetChanged", cm, this$1, lineNo(line)) - }) - } -}; -eventMixin(LineWidget) - -function adjustScrollWhenAboveVisible(cm, line, diff) { - if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop)) - { addToScrollTop(cm, diff) } -} - -function addLineWidget(doc, handle, node, options) { - var widget = new LineWidget(doc, node, options) - var cm = doc.cm - if (cm && widget.noHScroll) { cm.display.alignWidgets = true } - changeLine(doc, handle, "widget", function (line) { - var widgets = line.widgets || (line.widgets = []) - if (widget.insertAt == null) { widgets.push(widget) } - else { widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget) } - widget.line = line - if (cm && !lineIsHidden(doc, line)) { - var aboveVisible = heightAtLine(line) < doc.scrollTop - updateLineHeight(line, line.height + widgetHeight(widget)) - if (aboveVisible) { addToScrollTop(cm, widget.height) } - cm.curOp.forceUpdate = true - } - return true - }) - if (cm) { signalLater(cm, "lineWidgetAdded", cm, widget, typeof handle == "number" ? handle : lineNo(handle)) } - return widget -} - -// TEXTMARKERS - -// Created with markText and setBookmark methods. A TextMarker is a -// handle that can be used to clear or find a marked position in the -// document. Line objects hold arrays (markedSpans) containing -// {from, to, marker} object pointing to such marker objects, and -// indicating that such a marker is present on that line. Multiple -// lines may point to the same marker when it spans across lines. -// The spans will have null for their from/to properties when the -// marker continues beyond the start/end of the line. Markers have -// links back to the lines they currently touch. - -// Collapsed markers have unique ids, in order to be able to order -// them, which is needed for uniquely determining an outer marker -// when they overlap (they may nest, but not partially overlap). -var nextMarkerId = 0 - -var TextMarker = function(doc, type) { - this.lines = [] - this.type = type - this.doc = doc - this.id = ++nextMarkerId -}; - -// Clear the marker. -TextMarker.prototype.clear = function () { - var this$1 = this; - - if (this.explicitlyCleared) { return } - var cm = this.doc.cm, withOp = cm && !cm.curOp - if (withOp) { startOperation(cm) } - if (hasHandler(this, "clear")) { - var found = this.find() - if (found) { signalLater(this, "clear", found.from, found.to) } - } - var min = null, max = null - for (var i = 0; i < this.lines.length; ++i) { - var line = this$1.lines[i] - var span = getMarkedSpanFor(line.markedSpans, this$1) - if (cm && !this$1.collapsed) { regLineChange(cm, lineNo(line), "text") } - else if (cm) { - if (span.to != null) { max = lineNo(line) } - if (span.from != null) { min = lineNo(line) } - } - line.markedSpans = removeMarkedSpan(line.markedSpans, span) - if (span.from == null && this$1.collapsed && !lineIsHidden(this$1.doc, line) && cm) - { updateLineHeight(line, textHeight(cm.display)) } - } - if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) { - var visual = visualLine(this$1.lines[i$1]), len = lineLength(visual) - if (len > cm.display.maxLineLength) { - cm.display.maxLine = visual - cm.display.maxLineLength = len - cm.display.maxLineChanged = true - } - } } - - if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1) } - this.lines.length = 0 - this.explicitlyCleared = true - if (this.atomic && this.doc.cantEdit) { - this.doc.cantEdit = false - if (cm) { reCheckSelection(cm.doc) } - } - if (cm) { signalLater(cm, "markerCleared", cm, this, min, max) } - if (withOp) { endOperation(cm) } - if (this.parent) { this.parent.clear() } -}; - -// Find the position of the marker in the document. Returns a {from, -// to} object by default. Side can be passed to get a specific side -// -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the -// Pos objects returned contain a line object, rather than a line -// number (used to prevent looking up the same line twice). -TextMarker.prototype.find = function (side, lineObj) { - var this$1 = this; - - if (side == null && this.type == "bookmark") { side = 1 } - var from, to - for (var i = 0; i < this.lines.length; ++i) { - var line = this$1.lines[i] - var span = getMarkedSpanFor(line.markedSpans, this$1) - if (span.from != null) { - from = Pos(lineObj ? line : lineNo(line), span.from) - if (side == -1) { return from } - } - if (span.to != null) { - to = Pos(lineObj ? line : lineNo(line), span.to) - if (side == 1) { return to } - } - } - return from && {from: from, to: to} -}; - -// Signals that the marker's widget changed, and surrounding layout -// should be recomputed. -TextMarker.prototype.changed = function () { - var this$1 = this; - - var pos = this.find(-1, true), widget = this, cm = this.doc.cm - if (!pos || !cm) { return } - runInOp(cm, function () { - var line = pos.line, lineN = lineNo(pos.line) - var view = findViewForLine(cm, lineN) - if (view) { - clearLineMeasurementCacheFor(view) - cm.curOp.selectionChanged = cm.curOp.forceUpdate = true - } - cm.curOp.updateMaxLine = true - if (!lineIsHidden(widget.doc, line) && widget.height != null) { - var oldHeight = widget.height - widget.height = null - var dHeight = widgetHeight(widget) - oldHeight - if (dHeight) - { updateLineHeight(line, line.height + dHeight) } - } - signalLater(cm, "markerChanged", cm, this$1) - }) -}; - -TextMarker.prototype.attachLine = function (line) { - if (!this.lines.length && this.doc.cm) { - var op = this.doc.cm.curOp - if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) - { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this) } - } - this.lines.push(line) -}; - -TextMarker.prototype.detachLine = function (line) { - this.lines.splice(indexOf(this.lines, line), 1) - if (!this.lines.length && this.doc.cm) { - var op = this.doc.cm.curOp - ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this) - } -}; -eventMixin(TextMarker) - -// Create a marker, wire it up to the right lines, and -function markText(doc, from, to, options, type) { - // Shared markers (across linked documents) are handled separately - // (markTextShared will call out to this again, once per - // document). - if (options && options.shared) { return markTextShared(doc, from, to, options, type) } - // Ensure we are in an operation. - if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) } - - var marker = new TextMarker(doc, type), diff = cmp(from, to) - if (options) { copyObj(options, marker, false) } - // Don't connect empty markers unless clearWhenEmpty is false - if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) - { return marker } - if (marker.replacedWith) { - // Showing up as a widget implies collapsed (widget replaces text) - marker.collapsed = true - marker.widgetNode = eltP("span", [marker.replacedWith], "CodeMirror-widget") - if (!options.handleMouseEvents) { marker.widgetNode.setAttribute("cm-ignore-events", "true") } - if (options.insertLeft) { marker.widgetNode.insertLeft = true } - } - if (marker.collapsed) { - if (conflictingCollapsedRange(doc, from.line, from, to, marker) || - from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) - { throw new Error("Inserting collapsed marker partially overlapping an existing one") } - seeCollapsedSpans() - } - - if (marker.addToHistory) - { addChangeToHistory(doc, {from: from, to: to, origin: "markText"}, doc.sel, NaN) } - - var curLine = from.line, cm = doc.cm, updateMaxLine - doc.iter(curLine, to.line + 1, function (line) { - if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) - { updateMaxLine = true } - if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0) } - addMarkedSpan(line, new MarkedSpan(marker, - curLine == from.line ? from.ch : null, - curLine == to.line ? to.ch : null)) - ++curLine - }) - // lineIsHidden depends on the presence of the spans, so needs a second pass - if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) { - if (lineIsHidden(doc, line)) { updateLineHeight(line, 0) } - }) } - - if (marker.clearOnEnter) { on(marker, "beforeCursorEnter", function () { return marker.clear(); }) } - - if (marker.readOnly) { - seeReadOnlySpans() - if (doc.history.done.length || doc.history.undone.length) - { doc.clearHistory() } - } - if (marker.collapsed) { - marker.id = ++nextMarkerId - marker.atomic = true - } - if (cm) { - // Sync editor state - if (updateMaxLine) { cm.curOp.updateMaxLine = true } - if (marker.collapsed) - { regChange(cm, from.line, to.line + 1) } - else if (marker.className || marker.title || marker.startStyle || marker.endStyle || marker.css) - { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, "text") } } - if (marker.atomic) { reCheckSelection(cm.doc) } - signalLater(cm, "markerAdded", cm, marker) - } - return marker -} - -// SHARED TEXTMARKERS - -// A shared marker spans multiple linked documents. It is -// implemented as a meta-marker-object controlling multiple normal -// markers. -var SharedTextMarker = function(markers, primary) { - var this$1 = this; - - this.markers = markers - this.primary = primary - for (var i = 0; i < markers.length; ++i) - { markers[i].parent = this$1 } -}; - -SharedTextMarker.prototype.clear = function () { - var this$1 = this; - - if (this.explicitlyCleared) { return } - this.explicitlyCleared = true - for (var i = 0; i < this.markers.length; ++i) - { this$1.markers[i].clear() } - signalLater(this, "clear") -}; - -SharedTextMarker.prototype.find = function (side, lineObj) { - return this.primary.find(side, lineObj) -}; -eventMixin(SharedTextMarker) - -function markTextShared(doc, from, to, options, type) { - options = copyObj(options) - options.shared = false - var markers = [markText(doc, from, to, options, type)], primary = markers[0] - var widget = options.widgetNode - linkedDocs(doc, function (doc) { - if (widget) { options.widgetNode = widget.cloneNode(true) } - markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type)) - for (var i = 0; i < doc.linked.length; ++i) - { if (doc.linked[i].isParent) { return } } - primary = lst(markers) - }) - return new SharedTextMarker(markers, primary) -} - -function findSharedMarkers(doc) { - return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; }) -} - -function copySharedMarkers(doc, markers) { - for (var i = 0; i < markers.length; i++) { - var marker = markers[i], pos = marker.find() - var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to) - if (cmp(mFrom, mTo)) { - var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type) - marker.markers.push(subMark) - subMark.parent = marker - } - } -} - -function detachSharedMarkers(markers) { - var loop = function ( i ) { - var marker = markers[i], linked = [marker.primary.doc] - linkedDocs(marker.primary.doc, function (d) { return linked.push(d); }) - for (var j = 0; j < marker.markers.length; j++) { - var subMarker = marker.markers[j] - if (indexOf(linked, subMarker.doc) == -1) { - subMarker.parent = null - marker.markers.splice(j--, 1) - } - } - }; - - for (var i = 0; i < markers.length; i++) loop( i ); -} - -var nextDocId = 0 -var Doc = function(text, mode, firstLine, lineSep, direction) { - if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) } - if (firstLine == null) { firstLine = 0 } - - BranchChunk.call(this, [new LeafChunk([new Line("", null)])]) - this.first = firstLine - this.scrollTop = this.scrollLeft = 0 - this.cantEdit = false - this.cleanGeneration = 1 - this.modeFrontier = this.highlightFrontier = firstLine - var start = Pos(firstLine, 0) - this.sel = simpleSelection(start) - this.history = new History(null) - this.id = ++nextDocId - this.modeOption = mode - this.lineSep = lineSep - this.direction = (direction == "rtl") ? "rtl" : "ltr" - this.extend = false - - if (typeof text == "string") { text = this.splitLines(text) } - updateDoc(this, {from: start, to: start, text: text}) - setSelection(this, simpleSelection(start), sel_dontScroll) -} - -Doc.prototype = createObj(BranchChunk.prototype, { - constructor: Doc, - // Iterate over the document. Supports two forms -- with only one - // argument, it calls that for each line in the document. With - // three, it iterates over the range given by the first two (with - // the second being non-inclusive). - iter: function(from, to, op) { - if (op) { this.iterN(from - this.first, to - from, op) } - else { this.iterN(this.first, this.first + this.size, from) } - }, - - // Non-public interface for adding and removing lines. - insert: function(at, lines) { - var height = 0 - for (var i = 0; i < lines.length; ++i) { height += lines[i].height } - this.insertInner(at - this.first, lines, height) - }, - remove: function(at, n) { this.removeInner(at - this.first, n) }, - - // From here, the methods are part of the public interface. Most - // are also available from CodeMirror (editor) instances. - - getValue: function(lineSep) { - var lines = getLines(this, this.first, this.first + this.size) - if (lineSep === false) { return lines } - return lines.join(lineSep || this.lineSeparator()) - }, - setValue: docMethodOp(function(code) { - var top = Pos(this.first, 0), last = this.first + this.size - 1 - makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length), - text: this.splitLines(code), origin: "setValue", full: true}, true) - if (this.cm) { scrollToCoords(this.cm, 0, 0) } - setSelection(this, simpleSelection(top), sel_dontScroll) - }), - replaceRange: function(code, from, to, origin) { - from = clipPos(this, from) - to = to ? clipPos(this, to) : from - replaceRange(this, code, from, to, origin) - }, - getRange: function(from, to, lineSep) { - var lines = getBetween(this, clipPos(this, from), clipPos(this, to)) - if (lineSep === false) { return lines } - return lines.join(lineSep || this.lineSeparator()) - }, - - getLine: function(line) {var l = this.getLineHandle(line); return l && l.text}, - - getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }}, - getLineNumber: function(line) {return lineNo(line)}, - - getLineHandleVisualStart: function(line) { - if (typeof line == "number") { line = getLine(this, line) } - return visualLine(line) - }, - - lineCount: function() {return this.size}, - firstLine: function() {return this.first}, - lastLine: function() {return this.first + this.size - 1}, - - clipPos: function(pos) {return clipPos(this, pos)}, - - getCursor: function(start) { - var range = this.sel.primary(), pos - if (start == null || start == "head") { pos = range.head } - else if (start == "anchor") { pos = range.anchor } - else if (start == "end" || start == "to" || start === false) { pos = range.to() } - else { pos = range.from() } - return pos - }, - listSelections: function() { return this.sel.ranges }, - somethingSelected: function() {return this.sel.somethingSelected()}, - - setCursor: docMethodOp(function(line, ch, options) { - setSimpleSelection(this, clipPos(this, typeof line == "number" ? Pos(line, ch || 0) : line), null, options) - }), - setSelection: docMethodOp(function(anchor, head, options) { - setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options) - }), - extendSelection: docMethodOp(function(head, other, options) { - extendSelection(this, clipPos(this, head), other && clipPos(this, other), options) - }), - extendSelections: docMethodOp(function(heads, options) { - extendSelections(this, clipPosArray(this, heads), options) - }), - extendSelectionsBy: docMethodOp(function(f, options) { - var heads = map(this.sel.ranges, f) - extendSelections(this, clipPosArray(this, heads), options) - }), - setSelections: docMethodOp(function(ranges, primary, options) { - var this$1 = this; - - if (!ranges.length) { return } - var out = [] - for (var i = 0; i < ranges.length; i++) - { out[i] = new Range(clipPos(this$1, ranges[i].anchor), - clipPos(this$1, ranges[i].head)) } - if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex) } - setSelection(this, normalizeSelection(out, primary), options) - }), - addSelection: docMethodOp(function(anchor, head, options) { - var ranges = this.sel.ranges.slice(0) - ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor))) - setSelection(this, normalizeSelection(ranges, ranges.length - 1), options) - }), - - getSelection: function(lineSep) { - var this$1 = this; - - var ranges = this.sel.ranges, lines - for (var i = 0; i < ranges.length; i++) { - var sel = getBetween(this$1, ranges[i].from(), ranges[i].to()) - lines = lines ? lines.concat(sel) : sel - } - if (lineSep === false) { return lines } - else { return lines.join(lineSep || this.lineSeparator()) } - }, - getSelections: function(lineSep) { - var this$1 = this; - - var parts = [], ranges = this.sel.ranges - for (var i = 0; i < ranges.length; i++) { - var sel = getBetween(this$1, ranges[i].from(), ranges[i].to()) - if (lineSep !== false) { sel = sel.join(lineSep || this$1.lineSeparator()) } - parts[i] = sel - } - return parts - }, - replaceSelection: function(code, collapse, origin) { - var dup = [] - for (var i = 0; i < this.sel.ranges.length; i++) - { dup[i] = code } - this.replaceSelections(dup, collapse, origin || "+input") - }, - replaceSelections: docMethodOp(function(code, collapse, origin) { - var this$1 = this; - - var changes = [], sel = this.sel - for (var i = 0; i < sel.ranges.length; i++) { - var range = sel.ranges[i] - changes[i] = {from: range.from(), to: range.to(), text: this$1.splitLines(code[i]), origin: origin} - } - var newSel = collapse && collapse != "end" && computeReplacedSel(this, changes, collapse) - for (var i$1 = changes.length - 1; i$1 >= 0; i$1--) - { makeChange(this$1, changes[i$1]) } - if (newSel) { setSelectionReplaceHistory(this, newSel) } - else if (this.cm) { ensureCursorVisible(this.cm) } - }), - undo: docMethodOp(function() {makeChangeFromHistory(this, "undo")}), - redo: docMethodOp(function() {makeChangeFromHistory(this, "redo")}), - undoSelection: docMethodOp(function() {makeChangeFromHistory(this, "undo", true)}), - redoSelection: docMethodOp(function() {makeChangeFromHistory(this, "redo", true)}), - - setExtending: function(val) {this.extend = val}, - getExtending: function() {return this.extend}, - - historySize: function() { - var hist = this.history, done = 0, undone = 0 - for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done } } - for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone } } - return {undo: done, redo: undone} - }, - clearHistory: function() {this.history = new History(this.history.maxGeneration)}, - - markClean: function() { - this.cleanGeneration = this.changeGeneration(true) - }, - changeGeneration: function(forceSplit) { - if (forceSplit) - { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null } - return this.history.generation - }, - isClean: function (gen) { - return this.history.generation == (gen || this.cleanGeneration) - }, - - getHistory: function() { - return {done: copyHistoryArray(this.history.done), - undone: copyHistoryArray(this.history.undone)} - }, - setHistory: function(histData) { - var hist = this.history = new History(this.history.maxGeneration) - hist.done = copyHistoryArray(histData.done.slice(0), null, true) - hist.undone = copyHistoryArray(histData.undone.slice(0), null, true) - }, - - setGutterMarker: docMethodOp(function(line, gutterID, value) { - return changeLine(this, line, "gutter", function (line) { - var markers = line.gutterMarkers || (line.gutterMarkers = {}) - markers[gutterID] = value - if (!value && isEmpty(markers)) { line.gutterMarkers = null } - return true - }) - }), - - clearGutter: docMethodOp(function(gutterID) { - var this$1 = this; - - this.iter(function (line) { - if (line.gutterMarkers && line.gutterMarkers[gutterID]) { - changeLine(this$1, line, "gutter", function () { - line.gutterMarkers[gutterID] = null - if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null } - return true - }) - } - }) - }), - - lineInfo: function(line) { - var n - if (typeof line == "number") { - if (!isLine(this, line)) { return null } - n = line - line = getLine(this, line) - if (!line) { return null } - } else { - n = lineNo(line) - if (n == null) { return null } - } - return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers, - textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass, - widgets: line.widgets} - }, - - addLineClass: docMethodOp(function(handle, where, cls) { - return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function (line) { - var prop = where == "text" ? "textClass" - : where == "background" ? "bgClass" - : where == "gutter" ? "gutterClass" : "wrapClass" - if (!line[prop]) { line[prop] = cls } - else if (classTest(cls).test(line[prop])) { return false } - else { line[prop] += " " + cls } - return true - }) - }), - removeLineClass: docMethodOp(function(handle, where, cls) { - return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function (line) { - var prop = where == "text" ? "textClass" - : where == "background" ? "bgClass" - : where == "gutter" ? "gutterClass" : "wrapClass" - var cur = line[prop] - if (!cur) { return false } - else if (cls == null) { line[prop] = null } - else { - var found = cur.match(classTest(cls)) - if (!found) { return false } - var end = found.index + found[0].length - line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? "" : " ") + cur.slice(end) || null - } - return true - }) - }), - - addLineWidget: docMethodOp(function(handle, node, options) { - return addLineWidget(this, handle, node, options) - }), - removeLineWidget: function(widget) { widget.clear() }, - - markText: function(from, to, options) { - return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || "range") - }, - setBookmark: function(pos, options) { - var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options), - insertLeft: options && options.insertLeft, - clearWhenEmpty: false, shared: options && options.shared, - handleMouseEvents: options && options.handleMouseEvents} - pos = clipPos(this, pos) - return markText(this, pos, pos, realOpts, "bookmark") - }, - findMarksAt: function(pos) { - pos = clipPos(this, pos) - var markers = [], spans = getLine(this, pos.line).markedSpans - if (spans) { for (var i = 0; i < spans.length; ++i) { - var span = spans[i] - if ((span.from == null || span.from <= pos.ch) && - (span.to == null || span.to >= pos.ch)) - { markers.push(span.marker.parent || span.marker) } - } } - return markers - }, - findMarks: function(from, to, filter) { - from = clipPos(this, from); to = clipPos(this, to) - var found = [], lineNo = from.line - this.iter(from.line, to.line + 1, function (line) { - var spans = line.markedSpans - if (spans) { for (var i = 0; i < spans.length; i++) { - var span = spans[i] - if (!(span.to != null && lineNo == from.line && from.ch >= span.to || - span.from == null && lineNo != from.line || - span.from != null && lineNo == to.line && span.from >= to.ch) && - (!filter || filter(span.marker))) - { found.push(span.marker.parent || span.marker) } - } } - ++lineNo - }) - return found - }, - getAllMarks: function() { - var markers = [] - this.iter(function (line) { - var sps = line.markedSpans - if (sps) { for (var i = 0; i < sps.length; ++i) - { if (sps[i].from != null) { markers.push(sps[i].marker) } } } - }) - return markers - }, - - posFromIndex: function(off) { - var ch, lineNo = this.first, sepSize = this.lineSeparator().length - this.iter(function (line) { - var sz = line.text.length + sepSize - if (sz > off) { ch = off; return true } - off -= sz - ++lineNo - }) - return clipPos(this, Pos(lineNo, ch)) - }, - indexFromPos: function (coords) { - coords = clipPos(this, coords) - var index = coords.ch - if (coords.line < this.first || coords.ch < 0) { return 0 } - var sepSize = this.lineSeparator().length - this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value - index += line.text.length + sepSize - }) - return index - }, - - copy: function(copyHistory) { - var doc = new Doc(getLines(this, this.first, this.first + this.size), - this.modeOption, this.first, this.lineSep, this.direction) - doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft - doc.sel = this.sel - doc.extend = false - if (copyHistory) { - doc.history.undoDepth = this.history.undoDepth - doc.setHistory(this.getHistory()) - } - return doc - }, - - linkedDoc: function(options) { - if (!options) { options = {} } - var from = this.first, to = this.first + this.size - if (options.from != null && options.from > from) { from = options.from } - if (options.to != null && options.to < to) { to = options.to } - var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction) - if (options.sharedHist) { copy.history = this.history - ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist}) - copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}] - copySharedMarkers(copy, findSharedMarkers(this)) - return copy - }, - unlinkDoc: function(other) { - var this$1 = this; - - if (other instanceof CodeMirror) { other = other.doc } - if (this.linked) { for (var i = 0; i < this.linked.length; ++i) { - var link = this$1.linked[i] - if (link.doc != other) { continue } - this$1.linked.splice(i, 1) - other.unlinkDoc(this$1) - detachSharedMarkers(findSharedMarkers(this$1)) - break - } } - // If the histories were shared, split them again - if (other.history == this.history) { - var splitIds = [other.id] - linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true) - other.history = new History(null) - other.history.done = copyHistoryArray(this.history.done, splitIds) - other.history.undone = copyHistoryArray(this.history.undone, splitIds) - } - }, - iterLinkedDocs: function(f) {linkedDocs(this, f)}, - - getMode: function() {return this.mode}, - getEditor: function() {return this.cm}, - - splitLines: function(str) { - if (this.lineSep) { return str.split(this.lineSep) } - return splitLinesAuto(str) - }, - lineSeparator: function() { return this.lineSep || "\n" }, - - setDirection: docMethodOp(function (dir) { - if (dir != "rtl") { dir = "ltr" } - if (dir == this.direction) { return } - this.direction = dir - this.iter(function (line) { return line.order = null; }) - if (this.cm) { directionChanged(this.cm) } - }) -}) - -// Public alias. -Doc.prototype.eachLine = Doc.prototype.iter - -// Kludge to work around strange IE behavior where it'll sometimes -// re-fire a series of drag-related events right after the drop (#1551) -var lastDrop = 0 - -function onDrop(e) { - var cm = this - clearDragCursor(cm) - if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) - { return } - e_preventDefault(e) - if (ie) { lastDrop = +new Date } - var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files - if (!pos || cm.isReadOnly()) { return } - // Might be a file drop, in which case we simply extract the text - // and insert it. - if (files && files.length && window.FileReader && window.File) { - var n = files.length, text = Array(n), read = 0 - var loadFile = function (file, i) { - if (cm.options.allowDropFileTypes && - indexOf(cm.options.allowDropFileTypes, file.type) == -1) - { return } - - var reader = new FileReader - reader.onload = operation(cm, function () { - var content = reader.result - if (/[\x00-\x08\x0e-\x1f]{2}/.test(content)) { content = "" } - text[i] = content - if (++read == n) { - pos = clipPos(cm.doc, pos) - var change = {from: pos, to: pos, - text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())), - origin: "paste"} - makeChange(cm.doc, change) - setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change))) - } - }) - reader.readAsText(file) - } - for (var i = 0; i < n; ++i) { loadFile(files[i], i) } - } else { // Normal drop - // Don't do a replace if the drop happened inside of the selected text. - if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) { - cm.state.draggingText(e) - // Ensure the editor is re-focused - setTimeout(function () { return cm.display.input.focus(); }, 20) - return - } - try { - var text$1 = e.dataTransfer.getData("Text") - if (text$1) { - var selected - if (cm.state.draggingText && !cm.state.draggingText.copy) - { selected = cm.listSelections() } - setSelectionNoUndo(cm.doc, simpleSelection(pos, pos)) - if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1) - { replaceRange(cm.doc, "", selected[i$1].anchor, selected[i$1].head, "drag") } } - cm.replaceSelection(text$1, "around", "paste") - cm.display.input.focus() - } - } - catch(e){} - } -} - -function onDragStart(cm, e) { - if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return } - if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return } - - e.dataTransfer.setData("Text", cm.getSelection()) - e.dataTransfer.effectAllowed = "copyMove" - - // Use dummy image instead of default browsers image. - // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there. - if (e.dataTransfer.setDragImage && !safari) { - var img = elt("img", null, null, "position: fixed; left: 0; top: 0;") - img.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" - if (presto) { - img.width = img.height = 1 - cm.display.wrapper.appendChild(img) - // Force a relayout, or Opera won't use our image for some obscure reason - img._top = img.offsetTop - } - e.dataTransfer.setDragImage(img, 0, 0) - if (presto) { img.parentNode.removeChild(img) } - } -} - -function onDragOver(cm, e) { - var pos = posFromMouse(cm, e) - if (!pos) { return } - var frag = document.createDocumentFragment() - drawSelectionCursor(cm, pos, frag) - if (!cm.display.dragCursor) { - cm.display.dragCursor = elt("div", null, "CodeMirror-cursors CodeMirror-dragcursors") - cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv) - } - removeChildrenAndAdd(cm.display.dragCursor, frag) -} - -function clearDragCursor(cm) { - if (cm.display.dragCursor) { - cm.display.lineSpace.removeChild(cm.display.dragCursor) - cm.display.dragCursor = null - } -} - -// These must be handled carefully, because naively registering a -// handler for each editor will cause the editors to never be -// garbage collected. - -function forEachCodeMirror(f) { - if (!document.getElementsByClassName) { return } - var byClass = document.getElementsByClassName("CodeMirror") - for (var i = 0; i < byClass.length; i++) { - var cm = byClass[i].CodeMirror - if (cm) { f(cm) } - } -} - -var globalsRegistered = false -function ensureGlobalHandlers() { - if (globalsRegistered) { return } - registerGlobalHandlers() - globalsRegistered = true -} -function registerGlobalHandlers() { - // When the window resizes, we need to refresh active editors. - var resizeTimer - on(window, "resize", function () { - if (resizeTimer == null) { resizeTimer = setTimeout(function () { - resizeTimer = null - forEachCodeMirror(onResize) - }, 100) } - }) - // When the window loses focus, we want to show the editor as blurred - on(window, "blur", function () { return forEachCodeMirror(onBlur); }) -} -// Called when the window resizes -function onResize(cm) { - var d = cm.display - // Might be a text scaling operation, clear size caches. - d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null - d.scrollbarsClipped = false - cm.setSize() -} - -var keyNames = { - 3: "Pause", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", - 19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", - 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert", - 46: "Delete", 59: ";", 61: "=", 91: "Mod", 92: "Mod", 93: "Mod", - 106: "*", 107: "=", 109: "-", 110: ".", 111: "/", 127: "Delete", 145: "ScrollLock", - 173: "-", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", - 221: "]", 222: "'", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63272: "Delete", - 63273: "Home", 63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert" -} - -// Number keys -for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i) } -// Alphabetic keys -for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1) } -// Function keys -for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = "F" + i$2 } - -var keyMap = {} - -keyMap.basic = { - "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown", - "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown", - "Delete": "delCharAfter", "Backspace": "delCharBefore", "Shift-Backspace": "delCharBefore", - "Tab": "defaultTab", "Shift-Tab": "indentAuto", - "Enter": "newlineAndIndent", "Insert": "toggleOverwrite", - "Esc": "singleSelection" -} -// Note that the save and find-related commands aren't defined by -// default. User code or addons can define them. Unknown commands -// are simply ignored. -keyMap.pcDefault = { - "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", - "Ctrl-Home": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Up": "goLineUp", "Ctrl-Down": "goLineDown", - "Ctrl-Left": "goGroupLeft", "Ctrl-Right": "goGroupRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd", - "Ctrl-Backspace": "delGroupBefore", "Ctrl-Delete": "delGroupAfter", "Ctrl-S": "save", "Ctrl-F": "find", - "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll", - "Ctrl-[": "indentLess", "Ctrl-]": "indentMore", - "Ctrl-U": "undoSelection", "Shift-Ctrl-U": "redoSelection", "Alt-U": "redoSelection", - "fallthrough": "basic" -} -// Very basic readline/emacs-style bindings, which are standard on Mac. -keyMap.emacsy = { - "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown", - "Alt-F": "goWordRight", "Alt-B": "goWordLeft", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", - "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp", "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore", - "Alt-D": "delWordAfter", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars", - "Ctrl-O": "openLine" -} -keyMap.macDefault = { - "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo", - "Cmd-Home": "goDocStart", "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goGroupLeft", - "Alt-Right": "goGroupRight", "Cmd-Left": "goLineLeft", "Cmd-Right": "goLineRight", "Alt-Backspace": "delGroupBefore", - "Ctrl-Alt-Backspace": "delGroupAfter", "Alt-Delete": "delGroupAfter", "Cmd-S": "save", "Cmd-F": "find", - "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll", - "Cmd-[": "indentLess", "Cmd-]": "indentMore", "Cmd-Backspace": "delWrappedLineLeft", "Cmd-Delete": "delWrappedLineRight", - "Cmd-U": "undoSelection", "Shift-Cmd-U": "redoSelection", "Ctrl-Up": "goDocStart", "Ctrl-Down": "goDocEnd", - "fallthrough": ["basic", "emacsy"] -} -keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault - -// KEYMAP DISPATCH - -function normalizeKeyName(name) { - var parts = name.split(/-(?!$)/) - name = parts[parts.length - 1] - var alt, ctrl, shift, cmd - for (var i = 0; i < parts.length - 1; i++) { - var mod = parts[i] - if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true } - else if (/^a(lt)?$/i.test(mod)) { alt = true } - else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true } - else if (/^s(hift)?$/i.test(mod)) { shift = true } - else { throw new Error("Unrecognized modifier name: " + mod) } - } - if (alt) { name = "Alt-" + name } - if (ctrl) { name = "Ctrl-" + name } - if (cmd) { name = "Cmd-" + name } - if (shift) { name = "Shift-" + name } - return name -} - -// This is a kludge to keep keymaps mostly working as raw objects -// (backwards compatibility) while at the same time support features -// like normalization and multi-stroke key bindings. It compiles a -// new normalized keymap, and then updates the old object to reflect -// this. -function normalizeKeyMap(keymap) { - var copy = {} - for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) { - var value = keymap[keyname] - if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue } - if (value == "...") { delete keymap[keyname]; continue } - - var keys = map(keyname.split(" "), normalizeKeyName) - for (var i = 0; i < keys.length; i++) { - var val = (void 0), name = (void 0) - if (i == keys.length - 1) { - name = keys.join(" ") - val = value - } else { - name = keys.slice(0, i + 1).join(" ") - val = "..." - } - var prev = copy[name] - if (!prev) { copy[name] = val } - else if (prev != val) { throw new Error("Inconsistent bindings for " + name) } - } - delete keymap[keyname] - } } - for (var prop in copy) { keymap[prop] = copy[prop] } - return keymap -} - -function lookupKey(key, map, handle, context) { - map = getKeyMap(map) - var found = map.call ? map.call(key, context) : map[key] - if (found === false) { return "nothing" } - if (found === "...") { return "multi" } - if (found != null && handle(found)) { return "handled" } - - if (map.fallthrough) { - if (Object.prototype.toString.call(map.fallthrough) != "[object Array]") - { return lookupKey(key, map.fallthrough, handle, context) } - for (var i = 0; i < map.fallthrough.length; i++) { - var result = lookupKey(key, map.fallthrough[i], handle, context) - if (result) { return result } - } - } -} - -// Modifier key presses don't count as 'real' key presses for the -// purpose of keymap fallthrough. -function isModifierKey(value) { - var name = typeof value == "string" ? value : keyNames[value.keyCode] - return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod" -} - -function addModifierNames(name, event, noShift) { - var base = name - if (event.altKey && base != "Alt") { name = "Alt-" + name } - if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != "Ctrl") { name = "Ctrl-" + name } - if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != "Cmd") { name = "Cmd-" + name } - if (!noShift && event.shiftKey && base != "Shift") { name = "Shift-" + name } - return name -} - -// Look up the name of a key as indicated by an event object. -function keyName(event, noShift) { - if (presto && event.keyCode == 34 && event["char"]) { return false } - var name = keyNames[event.keyCode] - if (name == null || event.altGraphKey) { return false } - // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause, - // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+) - if (event.keyCode == 3 && event.code) { name = event.code } - return addModifierNames(name, event, noShift) -} - -function getKeyMap(val) { - return typeof val == "string" ? keyMap[val] : val -} - -// Helper for deleting text near the selection(s), used to implement -// backspace, delete, and similar functionality. -function deleteNearSelection(cm, compute) { - var ranges = cm.doc.sel.ranges, kill = [] - // Build up a set of ranges to kill first, merging overlapping - // ranges. - for (var i = 0; i < ranges.length; i++) { - var toKill = compute(ranges[i]) - while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) { - var replaced = kill.pop() - if (cmp(replaced.from, toKill.from) < 0) { - toKill.from = replaced.from - break - } - } - kill.push(toKill) - } - // Next, remove those actual ranges. - runInOp(cm, function () { - for (var i = kill.length - 1; i >= 0; i--) - { replaceRange(cm.doc, "", kill[i].from, kill[i].to, "+delete") } - ensureCursorVisible(cm) - }) -} - -function moveCharLogically(line, ch, dir) { - var target = skipExtendingChars(line.text, ch + dir, dir) - return target < 0 || target > line.text.length ? null : target -} - -function moveLogically(line, start, dir) { - var ch = moveCharLogically(line, start.ch, dir) - return ch == null ? null : new Pos(start.line, ch, dir < 0 ? "after" : "before") -} - -function endOfLine(visually, cm, lineObj, lineNo, dir) { - if (visually) { - var order = getOrder(lineObj, cm.doc.direction) - if (order) { - var part = dir < 0 ? lst(order) : order[0] - var moveInStorageOrder = (dir < 0) == (part.level == 1) - var sticky = moveInStorageOrder ? "after" : "before" - var ch - // With a wrapped rtl chunk (possibly spanning multiple bidi parts), - // it could be that the last bidi part is not on the last visual line, - // since visual lines contain content order-consecutive chunks. - // Thus, in rtl, we are looking for the first (content-order) character - // in the rtl chunk that is on the last line (that is, the same line - // as the last (content-order) character). - if (part.level > 0 || cm.doc.direction == "rtl") { - var prep = prepareMeasureForLine(cm, lineObj) - ch = dir < 0 ? lineObj.text.length - 1 : 0 - var targetTop = measureCharPrepared(cm, prep, ch).top - ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch) - if (sticky == "before") { ch = moveCharLogically(lineObj, ch, 1) } - } else { ch = dir < 0 ? part.to : part.from } - return new Pos(lineNo, ch, sticky) - } - } - return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? "before" : "after") -} - -function moveVisually(cm, line, start, dir) { - var bidi = getOrder(line, cm.doc.direction) - if (!bidi) { return moveLogically(line, start, dir) } - if (start.ch >= line.text.length) { - start.ch = line.text.length - start.sticky = "before" - } else if (start.ch <= 0) { - start.ch = 0 - start.sticky = "after" - } - var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos] - if (cm.doc.direction == "ltr" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) { - // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines, - // nothing interesting happens. - return moveLogically(line, start, dir) - } - - var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); } - var prep - var getWrappedLineExtent = function (ch) { - if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} } - prep = prep || prepareMeasureForLine(cm, line) - return wrappedLineExtentChar(cm, line, prep, ch) - } - var wrappedLineExtent = getWrappedLineExtent(start.sticky == "before" ? mv(start, -1) : start.ch) - - if (cm.doc.direction == "rtl" || part.level == 1) { - var moveInStorageOrder = (part.level == 1) == (dir < 0) - var ch = mv(start, moveInStorageOrder ? 1 : -1) - if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) { - // Case 2: We move within an rtl part or in an rtl editor on the same visual line - var sticky = moveInStorageOrder ? "before" : "after" - return new Pos(start.line, ch, sticky) - } - } - - // Case 3: Could not move within this bidi part in this visual line, so leave - // the current bidi part - - var searchInVisualLine = function (partPos, dir, wrappedLineExtent) { - var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder - ? new Pos(start.line, mv(ch, 1), "before") - : new Pos(start.line, ch, "after"); } - - for (; partPos >= 0 && partPos < bidi.length; partPos += dir) { - var part = bidi[partPos] - var moveInStorageOrder = (dir > 0) == (part.level != 1) - var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1) - if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) } - ch = moveInStorageOrder ? part.from : mv(part.to, -1) - if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) } - } - } - - // Case 3a: Look for other bidi parts on the same visual line - var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent) - if (res) { return res } - - // Case 3b: Look for other bidi parts on the next visual line - var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1) - if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) { - res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh)) - if (res) { return res } - } - - // Case 4: Nowhere to move - return null -} - -// Commands are parameter-less actions that can be performed on an -// editor, mostly used for keybindings. -var commands = { - selectAll: selectAll, - singleSelection: function (cm) { return cm.setSelection(cm.getCursor("anchor"), cm.getCursor("head"), sel_dontScroll); }, - killLine: function (cm) { return deleteNearSelection(cm, function (range) { - if (range.empty()) { - var len = getLine(cm.doc, range.head.line).text.length - if (range.head.ch == len && range.head.line < cm.lastLine()) - { return {from: range.head, to: Pos(range.head.line + 1, 0)} } - else - { return {from: range.head, to: Pos(range.head.line, len)} } - } else { - return {from: range.from(), to: range.to()} - } - }); }, - deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({ - from: Pos(range.from().line, 0), - to: clipPos(cm.doc, Pos(range.to().line + 1, 0)) - }); }); }, - delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({ - from: Pos(range.from().line, 0), to: range.from() - }); }); }, - delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { - var top = cm.charCoords(range.head, "div").top + 5 - var leftPos = cm.coordsChar({left: 0, top: top}, "div") - return {from: leftPos, to: range.from()} - }); }, - delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) { - var top = cm.charCoords(range.head, "div").top + 5 - var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div") - return {from: range.from(), to: rightPos } - }); }, - undo: function (cm) { return cm.undo(); }, - redo: function (cm) { return cm.redo(); }, - undoSelection: function (cm) { return cm.undoSelection(); }, - redoSelection: function (cm) { return cm.redoSelection(); }, - goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); }, - goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); }, - goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); }, - {origin: "+move", bias: 1} - ); }, - goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); }, - {origin: "+move", bias: 1} - ); }, - goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); }, - {origin: "+move", bias: -1} - ); }, - goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) { - var top = cm.cursorCoords(range.head, "div").top + 5 - return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div") - }, sel_move); }, - goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) { - var top = cm.cursorCoords(range.head, "div").top + 5 - return cm.coordsChar({left: 0, top: top}, "div") - }, sel_move); }, - goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) { - var top = cm.cursorCoords(range.head, "div").top + 5 - var pos = cm.coordsChar({left: 0, top: top}, "div") - if (pos.ch < cm.getLine(pos.line).search(/\S/)) { return lineStartSmart(cm, range.head) } - return pos - }, sel_move); }, - goLineUp: function (cm) { return cm.moveV(-1, "line"); }, - goLineDown: function (cm) { return cm.moveV(1, "line"); }, - goPageUp: function (cm) { return cm.moveV(-1, "page"); }, - goPageDown: function (cm) { return cm.moveV(1, "page"); }, - goCharLeft: function (cm) { return cm.moveH(-1, "char"); }, - goCharRight: function (cm) { return cm.moveH(1, "char"); }, - goColumnLeft: function (cm) { return cm.moveH(-1, "column"); }, - goColumnRight: function (cm) { return cm.moveH(1, "column"); }, - goWordLeft: function (cm) { return cm.moveH(-1, "word"); }, - goGroupRight: function (cm) { return cm.moveH(1, "group"); }, - goGroupLeft: function (cm) { return cm.moveH(-1, "group"); }, - goWordRight: function (cm) { return cm.moveH(1, "word"); }, - delCharBefore: function (cm) { return cm.deleteH(-1, "char"); }, - delCharAfter: function (cm) { return cm.deleteH(1, "char"); }, - delWordBefore: function (cm) { return cm.deleteH(-1, "word"); }, - delWordAfter: function (cm) { return cm.deleteH(1, "word"); }, - delGroupBefore: function (cm) { return cm.deleteH(-1, "group"); }, - delGroupAfter: function (cm) { return cm.deleteH(1, "group"); }, - indentAuto: function (cm) { return cm.indentSelection("smart"); }, - indentMore: function (cm) { return cm.indentSelection("add"); }, - indentLess: function (cm) { return cm.indentSelection("subtract"); }, - insertTab: function (cm) { return cm.replaceSelection("\t"); }, - insertSoftTab: function (cm) { - var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize - for (var i = 0; i < ranges.length; i++) { - var pos = ranges[i].from() - var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize) - spaces.push(spaceStr(tabSize - col % tabSize)) - } - cm.replaceSelections(spaces) - }, - defaultTab: function (cm) { - if (cm.somethingSelected()) { cm.indentSelection("add") } - else { cm.execCommand("insertTab") } - }, - // Swap the two chars left and right of each selection's head. - // Move cursor behind the two swapped characters afterwards. - // - // Doesn't consider line feeds a character. - // Doesn't scan more than one line above to find a character. - // Doesn't do anything on an empty line. - // Doesn't do anything with non-empty selections. - transposeChars: function (cm) { return runInOp(cm, function () { - var ranges = cm.listSelections(), newSel = [] - for (var i = 0; i < ranges.length; i++) { - if (!ranges[i].empty()) { continue } - var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text - if (line) { - if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1) } - if (cur.ch > 0) { - cur = new Pos(cur.line, cur.ch + 1) - cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), - Pos(cur.line, cur.ch - 2), cur, "+transpose") - } else if (cur.line > cm.doc.first) { - var prev = getLine(cm.doc, cur.line - 1).text - if (prev) { - cur = new Pos(cur.line, 1) - cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + - prev.charAt(prev.length - 1), - Pos(cur.line - 1, prev.length - 1), cur, "+transpose") - } - } - } - newSel.push(new Range(cur, cur)) - } - cm.setSelections(newSel) - }); }, - newlineAndIndent: function (cm) { return runInOp(cm, function () { - var sels = cm.listSelections() - for (var i = sels.length - 1; i >= 0; i--) - { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, "+input") } - sels = cm.listSelections() - for (var i$1 = 0; i$1 < sels.length; i$1++) - { cm.indentLine(sels[i$1].from().line, null, true) } - ensureCursorVisible(cm) - }); }, - openLine: function (cm) { return cm.replaceSelection("\n", "start"); }, - toggleOverwrite: function (cm) { return cm.toggleOverwrite(); } -} - - -function lineStart(cm, lineN) { - var line = getLine(cm.doc, lineN) - var visual = visualLine(line) - if (visual != line) { lineN = lineNo(visual) } - return endOfLine(true, cm, visual, lineN, 1) -} -function lineEnd(cm, lineN) { - var line = getLine(cm.doc, lineN) - var visual = visualLineEnd(line) - if (visual != line) { lineN = lineNo(visual) } - return endOfLine(true, cm, line, lineN, -1) -} -function lineStartSmart(cm, pos) { - var start = lineStart(cm, pos.line) - var line = getLine(cm.doc, start.line) - var order = getOrder(line, cm.doc.direction) - if (!order || order[0].level == 0) { - var firstNonWS = Math.max(0, line.text.search(/\S/)) - var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch - return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky) - } - return start -} - -// Run a handler that was bound to a key. -function doHandleBinding(cm, bound, dropShift) { - if (typeof bound == "string") { - bound = commands[bound] - if (!bound) { return false } - } - // Ensure previous input has been read, so that the handler sees a - // consistent view of the document - cm.display.input.ensurePolled() - var prevShift = cm.display.shift, done = false - try { - if (cm.isReadOnly()) { cm.state.suppressEdits = true } - if (dropShift) { cm.display.shift = false } - done = bound(cm) != Pass - } finally { - cm.display.shift = prevShift - cm.state.suppressEdits = false - } - return done -} - -function lookupKeyForEditor(cm, name, handle) { - for (var i = 0; i < cm.state.keyMaps.length; i++) { - var result = lookupKey(name, cm.state.keyMaps[i], handle, cm) - if (result) { return result } - } - return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm)) - || lookupKey(name, cm.options.keyMap, handle, cm) -} - -// Note that, despite the name, this function is also used to check -// for bound mouse clicks. - -var stopSeq = new Delayed - -function dispatchKey(cm, name, e, handle) { - var seq = cm.state.keySeq - if (seq) { - if (isModifierKey(name)) { return "handled" } - if (/\'$/.test(name)) - { cm.state.keySeq = null } - else - { stopSeq.set(50, function () { - if (cm.state.keySeq == seq) { - cm.state.keySeq = null - cm.display.input.reset() - } - }) } - if (dispatchKeyInner(cm, seq + " " + name, e, handle)) { return true } - } - return dispatchKeyInner(cm, name, e, handle) -} - -function dispatchKeyInner(cm, name, e, handle) { - var result = lookupKeyForEditor(cm, name, handle) - - if (result == "multi") - { cm.state.keySeq = name } - if (result == "handled") - { signalLater(cm, "keyHandled", cm, name, e) } - - if (result == "handled" || result == "multi") { - e_preventDefault(e) - restartBlink(cm) - } - - return !!result -} - -// Handle a key from the keydown event. -function handleKeyBinding(cm, e) { - var name = keyName(e, true) - if (!name) { return false } - - if (e.shiftKey && !cm.state.keySeq) { - // First try to resolve full name (including 'Shift-'). Failing - // that, see if there is a cursor-motion command (starting with - // 'go') bound to the keyname without 'Shift-'. - return dispatchKey(cm, "Shift-" + name, e, function (b) { return doHandleBinding(cm, b, true); }) - || dispatchKey(cm, name, e, function (b) { - if (typeof b == "string" ? /^go[A-Z]/.test(b) : b.motion) - { return doHandleBinding(cm, b) } - }) - } else { - return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); }) - } -} - -// Handle a key from the keypress event -function handleCharBinding(cm, e, ch) { - return dispatchKey(cm, "'" + ch + "'", e, function (b) { return doHandleBinding(cm, b, true); }) -} - -var lastStoppedKey = null -function onKeyDown(e) { - var cm = this - cm.curOp.focus = activeElt() - if (signalDOMEvent(cm, e)) { return } - // IE does strange things with escape. - if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false } - var code = e.keyCode - cm.display.shift = code == 16 || e.shiftKey - var handled = handleKeyBinding(cm, e) - if (presto) { - lastStoppedKey = handled ? code : null - // Opera has no cut event... we try to at least catch the key combo - if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) - { cm.replaceSelection("", null, "cut") } - } - - // Turn mouse into crosshair when Alt is held on Mac. - if (code == 18 && !/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className)) - { showCrossHair(cm) } -} - -function showCrossHair(cm) { - var lineDiv = cm.display.lineDiv - addClass(lineDiv, "CodeMirror-crosshair") - - function up(e) { - if (e.keyCode == 18 || !e.altKey) { - rmClass(lineDiv, "CodeMirror-crosshair") - off(document, "keyup", up) - off(document, "mouseover", up) - } - } - on(document, "keyup", up) - on(document, "mouseover", up) -} - -function onKeyUp(e) { - if (e.keyCode == 16) { this.doc.sel.shift = false } - signalDOMEvent(this, e) -} - -function onKeyPress(e) { - var cm = this - if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return } - var keyCode = e.keyCode, charCode = e.charCode - if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return} - if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return } - var ch = String.fromCharCode(charCode == null ? keyCode : charCode) - // Some browsers fire keypress events for backspace - if (ch == "\x08") { return } - if (handleCharBinding(cm, e, ch)) { return } - cm.display.input.onKeyPress(e) -} - -var DOUBLECLICK_DELAY = 400 - -var PastClick = function(time, pos, button) { - this.time = time - this.pos = pos - this.button = button -}; - -PastClick.prototype.compare = function (time, pos, button) { - return this.time + DOUBLECLICK_DELAY > time && - cmp(pos, this.pos) == 0 && button == this.button -}; - -var lastClick; -var lastDoubleClick; -function clickRepeat(pos, button) { - var now = +new Date - if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) { - lastClick = lastDoubleClick = null - return "triple" - } else if (lastClick && lastClick.compare(now, pos, button)) { - lastDoubleClick = new PastClick(now, pos, button) - lastClick = null - return "double" - } else { - lastClick = new PastClick(now, pos, button) - lastDoubleClick = null - return "single" - } -} - -// A mouse down can be a single click, double click, triple click, -// start of selection drag, start of text drag, new cursor -// (ctrl-click), rectangle drag (alt-drag), or xwin -// middle-click-paste. Or it might be a click on something we should -// not interfere with, such as a scrollbar or widget. -function onMouseDown(e) { - var cm = this, display = cm.display - if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return } - display.input.ensurePolled() - display.shift = e.shiftKey - - if (eventInWidget(display, e)) { - if (!webkit) { - // Briefly turn off draggability, to allow widgets to do - // normal dragging things. - display.scroller.draggable = false - setTimeout(function () { return display.scroller.draggable = true; }, 100) - } - return - } - var button = e_button(e) - if (button == 3 && captureRightClick ? contextMenuInGutter(cm, e) : clickInGutter(cm, e)) { return } - var pos = posFromMouse(cm, e), repeat = pos ? clickRepeat(pos, button) : "single" - window.focus() - - // #3261: make sure, that we're not starting a second selection - if (button == 1 && cm.state.selectingText) - { cm.state.selectingText(e) } - - if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return } - - if (button == 1) { - if (pos) { leftButtonDown(cm, pos, repeat, e) } - else if (e_target(e) == display.scroller) { e_preventDefault(e) } - } else if (button == 2) { - if (pos) { extendSelection(cm.doc, pos) } - setTimeout(function () { return display.input.focus(); }, 20) - } else if (button == 3) { - if (captureRightClick) { onContextMenu(cm, e) } - else { delayBlurEvent(cm) } - } -} - -function handleMappedButton(cm, button, pos, repeat, event) { - var name = "Click" - if (repeat == "double") { name = "Double" + name } - else if (repeat == "triple") { name = "Triple" + name } - name = (button == 1 ? "Left" : button == 2 ? "Middle" : "Right") + name - - return dispatchKey(cm, addModifierNames(name, event), event, function (bound) { - if (typeof bound == "string") { bound = commands[bound] } - if (!bound) { return false } - var done = false - try { - if (cm.isReadOnly()) { cm.state.suppressEdits = true } - done = bound(cm, pos) != Pass - } finally { - cm.state.suppressEdits = false - } - return done - }) -} - -function configureMouse(cm, repeat, event) { - var option = cm.getOption("configureMouse") - var value = option ? option(cm, repeat, event) : {} - if (value.unit == null) { - var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey - value.unit = rect ? "rectangle" : repeat == "single" ? "char" : repeat == "double" ? "word" : "line" - } - if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey } - if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey } - if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey) } - return value -} - -function leftButtonDown(cm, pos, repeat, event) { - if (ie) { setTimeout(bind(ensureFocus, cm), 0) } - else { cm.curOp.focus = activeElt() } - - var behavior = configureMouse(cm, repeat, event) - - var sel = cm.doc.sel, contained - if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && - repeat == "single" && (contained = sel.contains(pos)) > -1 && - (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) && - (cmp(contained.to(), pos) > 0 || pos.xRel < 0)) - { leftButtonStartDrag(cm, event, pos, behavior) } - else - { leftButtonSelect(cm, event, pos, behavior) } -} - -// Start a text drag. When it ends, see if any dragging actually -// happen, and treat as a click if it didn't. -function leftButtonStartDrag(cm, event, pos, behavior) { - var display = cm.display, moved = false - var dragEnd = operation(cm, function (e) { - if (webkit) { display.scroller.draggable = false } - cm.state.draggingText = false - off(display.wrapper.ownerDocument, "mouseup", dragEnd) - off(display.wrapper.ownerDocument, "mousemove", mouseMove) - off(display.scroller, "dragstart", dragStart) - off(display.scroller, "drop", dragEnd) - if (!moved) { - e_preventDefault(e) - if (!behavior.addNew) - { extendSelection(cm.doc, pos, null, null, behavior.extend) } - // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081) - if (webkit || ie && ie_version == 9) - { setTimeout(function () {display.wrapper.ownerDocument.body.focus(); display.input.focus()}, 20) } - else - { display.input.focus() } - } - }) - var mouseMove = function(e2) { - moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10 - } - var dragStart = function () { return moved = true; } - // Let the drag handler handle this. - if (webkit) { display.scroller.draggable = true } - cm.state.draggingText = dragEnd - dragEnd.copy = !behavior.moveOnDrag - // IE's approach to draggable - if (display.scroller.dragDrop) { display.scroller.dragDrop() } - on(display.wrapper.ownerDocument, "mouseup", dragEnd) - on(display.wrapper.ownerDocument, "mousemove", mouseMove) - on(display.scroller, "dragstart", dragStart) - on(display.scroller, "drop", dragEnd) - - delayBlurEvent(cm) - setTimeout(function () { return display.input.focus(); }, 20) -} - -function rangeForUnit(cm, pos, unit) { - if (unit == "char") { return new Range(pos, pos) } - if (unit == "word") { return cm.findWordAt(pos) } - if (unit == "line") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) } - var result = unit(cm, pos) - return new Range(result.from, result.to) -} - -// Normal selection, as opposed to text dragging. -function leftButtonSelect(cm, event, start, behavior) { - var display = cm.display, doc = cm.doc - e_preventDefault(event) - - var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges - if (behavior.addNew && !behavior.extend) { - ourIndex = doc.sel.contains(start) - if (ourIndex > -1) - { ourRange = ranges[ourIndex] } - else - { ourRange = new Range(start, start) } - } else { - ourRange = doc.sel.primary() - ourIndex = doc.sel.primIndex - } - - if (behavior.unit == "rectangle") { - if (!behavior.addNew) { ourRange = new Range(start, start) } - start = posFromMouse(cm, event, true, true) - ourIndex = -1 - } else { - var range = rangeForUnit(cm, start, behavior.unit) - if (behavior.extend) - { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend) } - else - { ourRange = range } - } - - if (!behavior.addNew) { - ourIndex = 0 - setSelection(doc, new Selection([ourRange], 0), sel_mouse) - startSel = doc.sel - } else if (ourIndex == -1) { - ourIndex = ranges.length - setSelection(doc, normalizeSelection(ranges.concat([ourRange]), ourIndex), - {scroll: false, origin: "*mouse"}) - } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == "char" && !behavior.extend) { - setSelection(doc, normalizeSelection(ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), - {scroll: false, origin: "*mouse"}) - startSel = doc.sel - } else { - replaceOneSelection(doc, ourIndex, ourRange, sel_mouse) - } - - var lastPos = start - function extendTo(pos) { - if (cmp(lastPos, pos) == 0) { return } - lastPos = pos - - if (behavior.unit == "rectangle") { - var ranges = [], tabSize = cm.options.tabSize - var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize) - var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize) - var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol) - for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); - line <= end; line++) { - var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize) - if (left == right) - { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))) } - else if (text.length > leftPos) - { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))) } - } - if (!ranges.length) { ranges.push(new Range(start, start)) } - setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), - {origin: "*mouse", scroll: false}) - cm.scrollIntoView(pos) - } else { - var oldRange = ourRange - var range = rangeForUnit(cm, pos, behavior.unit) - var anchor = oldRange.anchor, head - if (cmp(range.anchor, anchor) > 0) { - head = range.head - anchor = minPos(oldRange.from(), range.anchor) - } else { - head = range.anchor - anchor = maxPos(oldRange.to(), range.head) - } - var ranges$1 = startSel.ranges.slice(0) - ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head)) - setSelection(doc, normalizeSelection(ranges$1, ourIndex), sel_mouse) - } - } - - var editorSize = display.wrapper.getBoundingClientRect() - // Used to ensure timeout re-tries don't fire when another extend - // happened in the meantime (clearTimeout isn't reliable -- at - // least on Chrome, the timeouts still happen even when cleared, - // if the clear happens after their scheduled firing time). - var counter = 0 - - function extend(e) { - var curCount = ++counter - var cur = posFromMouse(cm, e, true, behavior.unit == "rectangle") - if (!cur) { return } - if (cmp(cur, lastPos) != 0) { - cm.curOp.focus = activeElt() - extendTo(cur) - var visible = visibleLines(display, doc) - if (cur.line >= visible.to || cur.line < visible.from) - { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e) }}), 150) } - } else { - var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0 - if (outside) { setTimeout(operation(cm, function () { - if (counter != curCount) { return } - display.scroller.scrollTop += outside - extend(e) - }), 50) } - } - } - - function done(e) { - cm.state.selectingText = false - counter = Infinity - e_preventDefault(e) - display.input.focus() - off(display.wrapper.ownerDocument, "mousemove", move) - off(display.wrapper.ownerDocument, "mouseup", up) - doc.history.lastSelOrigin = null - } - - var move = operation(cm, function (e) { - if (e.buttons === 0 || !e_button(e)) { done(e) } - else { extend(e) } - }) - var up = operation(cm, done) - cm.state.selectingText = up - on(display.wrapper.ownerDocument, "mousemove", move) - on(display.wrapper.ownerDocument, "mouseup", up) -} - -// Used when mouse-selecting to adjust the anchor to the proper side -// of a bidi jump depending on the visual position of the head. -function bidiSimplify(cm, range) { - var anchor = range.anchor; - var head = range.head; - var anchorLine = getLine(cm.doc, anchor.line) - if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range } - var order = getOrder(anchorLine) - if (!order) { return range } - var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index] - if (part.from != anchor.ch && part.to != anchor.ch) { return range } - var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1) - if (boundary == 0 || boundary == order.length) { return range } - - // Compute the relative visual position of the head compared to the - // anchor (<0 is to the left, >0 to the right) - var leftSide - if (head.line != anchor.line) { - leftSide = (head.line - anchor.line) * (cm.doc.direction == "ltr" ? 1 : -1) > 0 - } else { - var headIndex = getBidiPartAt(order, head.ch, head.sticky) - var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1) - if (headIndex == boundary - 1 || headIndex == boundary) - { leftSide = dir < 0 } - else - { leftSide = dir > 0 } - } - - var usePart = order[boundary + (leftSide ? -1 : 0)] - var from = leftSide == (usePart.level == 1) - var ch = from ? usePart.from : usePart.to, sticky = from ? "after" : "before" - return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head) -} - - -// Determines whether an event happened in the gutter, and fires the -// handlers for the corresponding event. -function gutterEvent(cm, e, type, prevent) { - var mX, mY - if (e.touches) { - mX = e.touches[0].clientX - mY = e.touches[0].clientY - } else { - try { mX = e.clientX; mY = e.clientY } - catch(e) { return false } - } - if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false } - if (prevent) { e_preventDefault(e) } - - var display = cm.display - var lineBox = display.lineDiv.getBoundingClientRect() - - if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) } - mY -= lineBox.top - display.viewOffset - - for (var i = 0; i < cm.options.gutters.length; ++i) { - var g = display.gutters.childNodes[i] - if (g && g.getBoundingClientRect().right >= mX) { - var line = lineAtHeight(cm.doc, mY) - var gutter = cm.options.gutters[i] - signal(cm, type, cm, line, gutter, e) - return e_defaultPrevented(e) - } - } -} - -function clickInGutter(cm, e) { - return gutterEvent(cm, e, "gutterClick", true) -} - -// CONTEXT MENU HANDLING - -// To make the context menu work, we need to briefly unhide the -// textarea (making it as unobtrusive as possible) to let the -// right-click take effect on it. -function onContextMenu(cm, e) { - if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return } - if (signalDOMEvent(cm, e, "contextmenu")) { return } - cm.display.input.onContextMenu(e) -} - -function contextMenuInGutter(cm, e) { - if (!hasHandler(cm, "gutterContextMenu")) { return false } - return gutterEvent(cm, e, "gutterContextMenu", false) -} - -function themeChanged(cm) { - cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + - cm.options.theme.replace(/(^|\s)\s*/g, " cm-s-") - clearCaches(cm) -} - -var Init = {toString: function(){return "CodeMirror.Init"}} - -var defaults = {} -var optionHandlers = {} - -function defineOptions(CodeMirror) { - var optionHandlers = CodeMirror.optionHandlers - - function option(name, deflt, handle, notOnInit) { - CodeMirror.defaults[name] = deflt - if (handle) { optionHandlers[name] = - notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old) }} : handle } - } - - CodeMirror.defineOption = option - - // Passed to option handlers when there is no old value. - CodeMirror.Init = Init - - // These two are, on init, called from the constructor because they - // have to be initialized before the editor can start at all. - option("value", "", function (cm, val) { return cm.setValue(val); }, true) - option("mode", null, function (cm, val) { - cm.doc.modeOption = val - loadMode(cm) - }, true) - - option("indentUnit", 2, loadMode, true) - option("indentWithTabs", false) - option("smartIndent", true) - option("tabSize", 4, function (cm) { - resetModeState(cm) - clearCaches(cm) - regChange(cm) - }, true) - - option("lineSeparator", null, function (cm, val) { - cm.doc.lineSep = val - if (!val) { return } - var newBreaks = [], lineNo = cm.doc.first - cm.doc.iter(function (line) { - for (var pos = 0;;) { - var found = line.text.indexOf(val, pos) - if (found == -1) { break } - pos = found + val.length - newBreaks.push(Pos(lineNo, found)) - } - lineNo++ - }) - for (var i = newBreaks.length - 1; i >= 0; i--) - { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)) } - }) - option("specialChars", /[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/g, function (cm, val, old) { - cm.state.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g") - if (old != Init) { cm.refresh() } - }) - option("specialCharPlaceholder", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true) - option("electricChars", true) - option("inputStyle", mobile ? "contenteditable" : "textarea", function () { - throw new Error("inputStyle can not (yet) be changed in a running editor") // FIXME - }, true) - option("spellcheck", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true) - option("rtlMoveVisually", !windows) - option("wholeLineUpdateBefore", true) - - option("theme", "default", function (cm) { - themeChanged(cm) - guttersChanged(cm) - }, true) - option("keyMap", "default", function (cm, val, old) { - var next = getKeyMap(val) - var prev = old != Init && getKeyMap(old) - if (prev && prev.detach) { prev.detach(cm, next) } - if (next.attach) { next.attach(cm, prev || null) } - }) - option("extraKeys", null) - option("configureMouse", null) - - option("lineWrapping", false, wrappingChanged, true) - option("gutters", [], function (cm) { - setGuttersForLineNumbers(cm.options) - guttersChanged(cm) - }, true) - option("fixedGutter", true, function (cm, val) { - cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + "px" : "0" - cm.refresh() - }, true) - option("coverGutterNextToScrollbar", false, function (cm) { return updateScrollbars(cm); }, true) - option("scrollbarStyle", "native", function (cm) { - initScrollbars(cm) - updateScrollbars(cm) - cm.display.scrollbars.setScrollTop(cm.doc.scrollTop) - cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft) - }, true) - option("lineNumbers", false, function (cm) { - setGuttersForLineNumbers(cm.options) - guttersChanged(cm) - }, true) - option("firstLineNumber", 1, guttersChanged, true) - option("lineNumberFormatter", function (integer) { return integer; }, guttersChanged, true) - option("showCursorWhenSelecting", false, updateSelection, true) - - option("resetSelectionOnContextMenu", true) - option("lineWiseCopyCut", true) - option("pasteLinesPerSelection", true) - - option("readOnly", false, function (cm, val) { - if (val == "nocursor") { - onBlur(cm) - cm.display.input.blur() - } - cm.display.input.readOnlyChanged(val) - }) - option("disableInput", false, function (cm, val) {if (!val) { cm.display.input.reset() }}, true) - option("dragDrop", true, dragDropChanged) - option("allowDropFileTypes", null) - - option("cursorBlinkRate", 530) - option("cursorScrollMargin", 0) - option("cursorHeight", 1, updateSelection, true) - option("singleCursorHeightPerLine", true, updateSelection, true) - option("workTime", 100) - option("workDelay", 100) - option("flattenSpans", true, resetModeState, true) - option("addModeClass", false, resetModeState, true) - option("pollInterval", 100) - option("undoDepth", 200, function (cm, val) { return cm.doc.history.undoDepth = val; }) - option("historyEventDelay", 1250) - option("viewportMargin", 10, function (cm) { return cm.refresh(); }, true) - option("maxHighlightLength", 10000, resetModeState, true) - option("moveInputWithCursor", true, function (cm, val) { - if (!val) { cm.display.input.resetPosition() } - }) - - option("tabindex", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || ""; }) - option("autofocus", null) - option("direction", "ltr", function (cm, val) { return cm.doc.setDirection(val); }, true) - option("phrases", null) -} - -function guttersChanged(cm) { - updateGutters(cm) - regChange(cm) - alignHorizontally(cm) -} - -function dragDropChanged(cm, value, old) { - var wasOn = old && old != Init - if (!value != !wasOn) { - var funcs = cm.display.dragFunctions - var toggle = value ? on : off - toggle(cm.display.scroller, "dragstart", funcs.start) - toggle(cm.display.scroller, "dragenter", funcs.enter) - toggle(cm.display.scroller, "dragover", funcs.over) - toggle(cm.display.scroller, "dragleave", funcs.leave) - toggle(cm.display.scroller, "drop", funcs.drop) - } -} - -function wrappingChanged(cm) { - if (cm.options.lineWrapping) { - addClass(cm.display.wrapper, "CodeMirror-wrap") - cm.display.sizer.style.minWidth = "" - cm.display.sizerWidth = null - } else { - rmClass(cm.display.wrapper, "CodeMirror-wrap") - findMaxLine(cm) - } - estimateLineHeights(cm) - regChange(cm) - clearCaches(cm) - setTimeout(function () { return updateScrollbars(cm); }, 100) -} - -// A CodeMirror instance represents an editor. This is the object -// that user code is usually dealing with. - -function CodeMirror(place, options) { - var this$1 = this; - - if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) } - - this.options = options = options ? copyObj(options) : {} - // Determine effective options based on given values and defaults. - copyObj(defaults, options, false) - setGuttersForLineNumbers(options) - - var doc = options.value - if (typeof doc == "string") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction) } - else if (options.mode) { doc.modeOption = options.mode } - this.doc = doc - - var input = new CodeMirror.inputStyles[options.inputStyle](this) - var display = this.display = new Display(place, doc, input) - display.wrapper.CodeMirror = this - updateGutters(this) - themeChanged(this) - if (options.lineWrapping) - { this.display.wrapper.className += " CodeMirror-wrap" } - initScrollbars(this) - - this.state = { - keyMaps: [], // stores maps added by addKeyMap - overlays: [], // highlighting overlays, as added by addOverlay - modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info - overwrite: false, - delayingBlurEvent: false, - focused: false, - suppressEdits: false, // used to disable editing during key handlers when in readOnly mode - pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in input.poll - selectingText: false, - draggingText: false, - highlight: new Delayed(), // stores highlight worker timeout - keySeq: null, // Unfinished key sequence - specialChars: null - } - - if (options.autofocus && !mobile) { display.input.focus() } - - // Override magic textarea content restore that IE sometimes does - // on our hidden textarea on reload - if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20) } - - registerEventHandlers(this) - ensureGlobalHandlers() - - startOperation(this) - this.curOp.forceUpdate = true - attachDoc(this, doc) - - if ((options.autofocus && !mobile) || this.hasFocus()) - { setTimeout(bind(onFocus, this), 20) } - else - { onBlur(this) } - - for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt)) - { optionHandlers[opt](this$1, options[opt], Init) } } - maybeUpdateLineNumberWidth(this) - if (options.finishInit) { options.finishInit(this) } - for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this$1) } - endOperation(this) - // Suppress optimizelegibility in Webkit, since it breaks text - // measuring on line wrapping boundaries. - if (webkit && options.lineWrapping && - getComputedStyle(display.lineDiv).textRendering == "optimizelegibility") - { display.lineDiv.style.textRendering = "auto" } -} - -// The default configuration options. -CodeMirror.defaults = defaults -// Functions to run when options are changed. -CodeMirror.optionHandlers = optionHandlers - -// Attach the necessary event handlers when initializing the editor -function registerEventHandlers(cm) { - var d = cm.display - on(d.scroller, "mousedown", operation(cm, onMouseDown)) - // Older IE's will not fire a second mousedown for a double click - if (ie && ie_version < 11) - { on(d.scroller, "dblclick", operation(cm, function (e) { - if (signalDOMEvent(cm, e)) { return } - var pos = posFromMouse(cm, e) - if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return } - e_preventDefault(e) - var word = cm.findWordAt(pos) - extendSelection(cm.doc, word.anchor, word.head) - })) } - else - { on(d.scroller, "dblclick", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }) } - // Some browsers fire contextmenu *after* opening the menu, at - // which point we can't mess with it anymore. Context menu is - // handled in onMouseDown for these browsers. - if (!captureRightClick) { on(d.scroller, "contextmenu", function (e) { return onContextMenu(cm, e); }) } - - // Used to suppress mouse event handling when a touch happens - var touchFinished, prevTouch = {end: 0} - function finishTouch() { - if (d.activeTouch) { - touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000) - prevTouch = d.activeTouch - prevTouch.end = +new Date - } - } - function isMouseLikeTouchEvent(e) { - if (e.touches.length != 1) { return false } - var touch = e.touches[0] - return touch.radiusX <= 1 && touch.radiusY <= 1 - } - function farAway(touch, other) { - if (other.left == null) { return true } - var dx = other.left - touch.left, dy = other.top - touch.top - return dx * dx + dy * dy > 20 * 20 - } - on(d.scroller, "touchstart", function (e) { - if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) { - d.input.ensurePolled() - clearTimeout(touchFinished) - var now = +new Date - d.activeTouch = {start: now, moved: false, - prev: now - prevTouch.end <= 300 ? prevTouch : null} - if (e.touches.length == 1) { - d.activeTouch.left = e.touches[0].pageX - d.activeTouch.top = e.touches[0].pageY - } - } - }) - on(d.scroller, "touchmove", function () { - if (d.activeTouch) { d.activeTouch.moved = true } - }) - on(d.scroller, "touchend", function (e) { - var touch = d.activeTouch - if (touch && !eventInWidget(d, e) && touch.left != null && - !touch.moved && new Date - touch.start < 300) { - var pos = cm.coordsChar(d.activeTouch, "page"), range - if (!touch.prev || farAway(touch, touch.prev)) // Single tap - { range = new Range(pos, pos) } - else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap - { range = cm.findWordAt(pos) } - else // Triple tap - { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) } - cm.setSelection(range.anchor, range.head) - cm.focus() - e_preventDefault(e) - } - finishTouch() - }) - on(d.scroller, "touchcancel", finishTouch) - - // Sync scrolling between fake scrollbars and real scrollable - // area, ensure viewport is updated when scrolling. - on(d.scroller, "scroll", function () { - if (d.scroller.clientHeight) { - updateScrollTop(cm, d.scroller.scrollTop) - setScrollLeft(cm, d.scroller.scrollLeft, true) - signal(cm, "scroll", cm) - } - }) - - // Listen to wheel events in order to try and update the viewport on time. - on(d.scroller, "mousewheel", function (e) { return onScrollWheel(cm, e); }) - on(d.scroller, "DOMMouseScroll", function (e) { return onScrollWheel(cm, e); }) - - // Prevent wrapper from ever scrolling - on(d.wrapper, "scroll", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; }) - - d.dragFunctions = { - enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e) }}, - over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e) }}, - start: function (e) { return onDragStart(cm, e); }, - drop: operation(cm, onDrop), - leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm) }} - } - - var inp = d.input.getField() - on(inp, "keyup", function (e) { return onKeyUp.call(cm, e); }) - on(inp, "keydown", operation(cm, onKeyDown)) - on(inp, "keypress", operation(cm, onKeyPress)) - on(inp, "focus", function (e) { return onFocus(cm, e); }) - on(inp, "blur", function (e) { return onBlur(cm, e); }) -} - -var initHooks = [] -CodeMirror.defineInitHook = function (f) { return initHooks.push(f); } - -// Indent the given line. The how parameter can be "smart", -// "add"/null, "subtract", or "prev". When aggressive is false -// (typically set to true for forced single-line indents), empty -// lines are not indented, and places where the mode returns Pass -// are left alone. -function indentLine(cm, n, how, aggressive) { - var doc = cm.doc, state - if (how == null) { how = "add" } - if (how == "smart") { - // Fall back to "prev" when the mode doesn't have an indentation - // method. - if (!doc.mode.indent) { how = "prev" } - else { state = getContextBefore(cm, n).state } - } - - var tabSize = cm.options.tabSize - var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize) - if (line.stateAfter) { line.stateAfter = null } - var curSpaceString = line.text.match(/^\s*/)[0], indentation - if (!aggressive && !/\S/.test(line.text)) { - indentation = 0 - how = "not" - } else if (how == "smart") { - indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text) - if (indentation == Pass || indentation > 150) { - if (!aggressive) { return } - how = "prev" - } - } - if (how == "prev") { - if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize) } - else { indentation = 0 } - } else if (how == "add") { - indentation = curSpace + cm.options.indentUnit - } else if (how == "subtract") { - indentation = curSpace - cm.options.indentUnit - } else if (typeof how == "number") { - indentation = curSpace + how - } - indentation = Math.max(0, indentation) - - var indentString = "", pos = 0 - if (cm.options.indentWithTabs) - { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t"} } - if (pos < indentation) { indentString += spaceStr(indentation - pos) } - - if (indentString != curSpaceString) { - replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input") - line.stateAfter = null - return true - } else { - // Ensure that, if the cursor was in the whitespace at the start - // of the line, it is moved to the end of that space. - for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) { - var range = doc.sel.ranges[i$1] - if (range.head.line == n && range.head.ch < curSpaceString.length) { - var pos$1 = Pos(n, curSpaceString.length) - replaceOneSelection(doc, i$1, new Range(pos$1, pos$1)) - break - } - } - } -} - -// This will be set to a {lineWise: bool, text: [string]} object, so -// that, when pasting, we know what kind of selections the copied -// text was made out of. -var lastCopied = null - -function setLastCopied(newLastCopied) { - lastCopied = newLastCopied -} - -function applyTextInput(cm, inserted, deleted, sel, origin) { - var doc = cm.doc - cm.display.shift = false - if (!sel) { sel = doc.sel } - - var paste = cm.state.pasteIncoming || origin == "paste" - var textLines = splitLinesAuto(inserted), multiPaste = null - // When pasting N lines into N selections, insert one line per selection - if (paste && sel.ranges.length > 1) { - if (lastCopied && lastCopied.text.join("\n") == inserted) { - if (sel.ranges.length % lastCopied.text.length == 0) { - multiPaste = [] - for (var i = 0; i < lastCopied.text.length; i++) - { multiPaste.push(doc.splitLines(lastCopied.text[i])) } - } - } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) { - multiPaste = map(textLines, function (l) { return [l]; }) - } - } - - var updateInput - // Normal behavior is to insert the new text into every selection - for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) { - var range = sel.ranges[i$1] - var from = range.from(), to = range.to() - if (range.empty()) { - if (deleted && deleted > 0) // Handle deletion - { from = Pos(from.line, from.ch - deleted) } - else if (cm.state.overwrite && !paste) // Handle overwrite - { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)) } - else if (lastCopied && lastCopied.lineWise && lastCopied.text.join("\n") == inserted) - { from = to = Pos(from.line, 0) } - } - updateInput = cm.curOp.updateInput - var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines, - origin: origin || (paste ? "paste" : cm.state.cutIncoming ? "cut" : "+input")} - makeChange(cm.doc, changeEvent) - signalLater(cm, "inputRead", cm, changeEvent) - } - if (inserted && !paste) - { triggerElectric(cm, inserted) } - - ensureCursorVisible(cm) - cm.curOp.updateInput = updateInput - cm.curOp.typing = true - cm.state.pasteIncoming = cm.state.cutIncoming = false -} - -function handlePaste(e, cm) { - var pasted = e.clipboardData && e.clipboardData.getData("Text") - if (pasted) { - e.preventDefault() - if (!cm.isReadOnly() && !cm.options.disableInput) - { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, "paste"); }) } - return true - } -} - -function triggerElectric(cm, inserted) { - // When an 'electric' character is inserted, immediately trigger a reindent - if (!cm.options.electricChars || !cm.options.smartIndent) { return } - var sel = cm.doc.sel - - for (var i = sel.ranges.length - 1; i >= 0; i--) { - var range = sel.ranges[i] - if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue } - var mode = cm.getModeAt(range.head) - var indented = false - if (mode.electricChars) { - for (var j = 0; j < mode.electricChars.length; j++) - { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) { - indented = indentLine(cm, range.head.line, "smart") - break - } } - } else if (mode.electricInput) { - if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch))) - { indented = indentLine(cm, range.head.line, "smart") } - } - if (indented) { signalLater(cm, "electricInput", cm, range.head.line) } - } -} - -function copyableRanges(cm) { - var text = [], ranges = [] - for (var i = 0; i < cm.doc.sel.ranges.length; i++) { - var line = cm.doc.sel.ranges[i].head.line - var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)} - ranges.push(lineRange) - text.push(cm.getRange(lineRange.anchor, lineRange.head)) - } - return {text: text, ranges: ranges} -} - -function disableBrowserMagic(field, spellcheck) { - field.setAttribute("autocorrect", "off") - field.setAttribute("autocapitalize", "off") - field.setAttribute("spellcheck", !!spellcheck) -} - -function hiddenTextarea() { - var te = elt("textarea", null, null, "position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none") - var div = elt("div", [te], null, "overflow: hidden; position: relative; width: 3px; height: 0px;") - // The textarea is kept positioned near the cursor to prevent the - // fact that it'll be scrolled into view on input from scrolling - // our fake cursor out of view. On webkit, when wrap=off, paste is - // very slow. So make the area wide instead. - if (webkit) { te.style.width = "1000px" } - else { te.setAttribute("wrap", "off") } - // If border: 0; -- iOS fails to open keyboard (issue #1287) - if (ios) { te.style.border = "1px solid black" } - disableBrowserMagic(te) - return div -} - -// The publicly visible API. Note that methodOp(f) means -// 'wrap f in an operation, performed on its `this` parameter'. - -// This is not the complete set of editor methods. Most of the -// methods defined on the Doc type are also injected into -// CodeMirror.prototype, for backwards compatibility and -// convenience. - -function addEditorMethods(CodeMirror) { - var optionHandlers = CodeMirror.optionHandlers - - var helpers = CodeMirror.helpers = {} - - CodeMirror.prototype = { - constructor: CodeMirror, - focus: function(){window.focus(); this.display.input.focus()}, - - setOption: function(option, value) { - var options = this.options, old = options[option] - if (options[option] == value && option != "mode") { return } - options[option] = value - if (optionHandlers.hasOwnProperty(option)) - { operation(this, optionHandlers[option])(this, value, old) } - signal(this, "optionChange", this, option) - }, - - getOption: function(option) {return this.options[option]}, - getDoc: function() {return this.doc}, - - addKeyMap: function(map, bottom) { - this.state.keyMaps[bottom ? "push" : "unshift"](getKeyMap(map)) - }, - removeKeyMap: function(map) { - var maps = this.state.keyMaps - for (var i = 0; i < maps.length; ++i) - { if (maps[i] == map || maps[i].name == map) { - maps.splice(i, 1) - return true - } } - }, - - addOverlay: methodOp(function(spec, options) { - var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec) - if (mode.startState) { throw new Error("Overlays may not be stateful.") } - insertSorted(this.state.overlays, - {mode: mode, modeSpec: spec, opaque: options && options.opaque, - priority: (options && options.priority) || 0}, - function (overlay) { return overlay.priority; }) - this.state.modeGen++ - regChange(this) - }), - removeOverlay: methodOp(function(spec) { - var this$1 = this; - - var overlays = this.state.overlays - for (var i = 0; i < overlays.length; ++i) { - var cur = overlays[i].modeSpec - if (cur == spec || typeof spec == "string" && cur.name == spec) { - overlays.splice(i, 1) - this$1.state.modeGen++ - regChange(this$1) - return - } - } - }), - - indentLine: methodOp(function(n, dir, aggressive) { - if (typeof dir != "string" && typeof dir != "number") { - if (dir == null) { dir = this.options.smartIndent ? "smart" : "prev" } - else { dir = dir ? "add" : "subtract" } - } - if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive) } - }), - indentSelection: methodOp(function(how) { - var this$1 = this; - - var ranges = this.doc.sel.ranges, end = -1 - for (var i = 0; i < ranges.length; i++) { - var range = ranges[i] - if (!range.empty()) { - var from = range.from(), to = range.to() - var start = Math.max(end, from.line) - end = Math.min(this$1.lastLine(), to.line - (to.ch ? 0 : 1)) + 1 - for (var j = start; j < end; ++j) - { indentLine(this$1, j, how) } - var newRanges = this$1.doc.sel.ranges - if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) - { replaceOneSelection(this$1.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll) } - } else if (range.head.line > end) { - indentLine(this$1, range.head.line, how, true) - end = range.head.line - if (i == this$1.doc.sel.primIndex) { ensureCursorVisible(this$1) } - } - } - }), - - // Fetch the parser token for a given character. Useful for hacks - // that want to inspect the mode state (say, for completion). - getTokenAt: function(pos, precise) { - return takeToken(this, pos, precise) - }, - - getLineTokens: function(line, precise) { - return takeToken(this, Pos(line), precise, true) - }, - - getTokenTypeAt: function(pos) { - pos = clipPos(this.doc, pos) - var styles = getLineStyles(this, getLine(this.doc, pos.line)) - var before = 0, after = (styles.length - 1) / 2, ch = pos.ch - var type - if (ch == 0) { type = styles[2] } - else { for (;;) { - var mid = (before + after) >> 1 - if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid } - else if (styles[mid * 2 + 1] < ch) { before = mid + 1 } - else { type = styles[mid * 2 + 2]; break } - } } - var cut = type ? type.indexOf("overlay ") : -1 - return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1) - }, - - getModeAt: function(pos) { - var mode = this.doc.mode - if (!mode.innerMode) { return mode } - return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode - }, - - getHelper: function(pos, type) { - return this.getHelpers(pos, type)[0] - }, - - getHelpers: function(pos, type) { - var this$1 = this; - - var found = [] - if (!helpers.hasOwnProperty(type)) { return found } - var help = helpers[type], mode = this.getModeAt(pos) - if (typeof mode[type] == "string") { - if (help[mode[type]]) { found.push(help[mode[type]]) } - } else if (mode[type]) { - for (var i = 0; i < mode[type].length; i++) { - var val = help[mode[type][i]] - if (val) { found.push(val) } - } - } else if (mode.helperType && help[mode.helperType]) { - found.push(help[mode.helperType]) - } else if (help[mode.name]) { - found.push(help[mode.name]) - } - for (var i$1 = 0; i$1 < help._global.length; i$1++) { - var cur = help._global[i$1] - if (cur.pred(mode, this$1) && indexOf(found, cur.val) == -1) - { found.push(cur.val) } - } - return found - }, - - getStateAfter: function(line, precise) { - var doc = this.doc - line = clipLine(doc, line == null ? doc.first + doc.size - 1: line) - return getContextBefore(this, line + 1, precise).state - }, - - cursorCoords: function(start, mode) { - var pos, range = this.doc.sel.primary() - if (start == null) { pos = range.head } - else if (typeof start == "object") { pos = clipPos(this.doc, start) } - else { pos = start ? range.from() : range.to() } - return cursorCoords(this, pos, mode || "page") - }, - - charCoords: function(pos, mode) { - return charCoords(this, clipPos(this.doc, pos), mode || "page") - }, - - coordsChar: function(coords, mode) { - coords = fromCoordSystem(this, coords, mode || "page") - return coordsChar(this, coords.left, coords.top) - }, - - lineAtHeight: function(height, mode) { - height = fromCoordSystem(this, {top: height, left: 0}, mode || "page").top - return lineAtHeight(this.doc, height + this.display.viewOffset) - }, - heightAtLine: function(line, mode, includeWidgets) { - var end = false, lineObj - if (typeof line == "number") { - var last = this.doc.first + this.doc.size - 1 - if (line < this.doc.first) { line = this.doc.first } - else if (line > last) { line = last; end = true } - lineObj = getLine(this.doc, line) - } else { - lineObj = line - } - return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || "page", includeWidgets || end).top + - (end ? this.doc.height - heightAtLine(lineObj) : 0) - }, - - defaultTextHeight: function() { return textHeight(this.display) }, - defaultCharWidth: function() { return charWidth(this.display) }, - - getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}}, - - addWidget: function(pos, node, scroll, vert, horiz) { - var display = this.display - pos = cursorCoords(this, clipPos(this.doc, pos)) - var top = pos.bottom, left = pos.left - node.style.position = "absolute" - node.setAttribute("cm-ignore-events", "true") - this.display.input.setUneditable(node) - display.sizer.appendChild(node) - if (vert == "over") { - top = pos.top - } else if (vert == "above" || vert == "near") { - var vspace = Math.max(display.wrapper.clientHeight, this.doc.height), - hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth) - // Default to positioning above (if specified and possible); otherwise default to positioning below - if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) - { top = pos.top - node.offsetHeight } - else if (pos.bottom + node.offsetHeight <= vspace) - { top = pos.bottom } - if (left + node.offsetWidth > hspace) - { left = hspace - node.offsetWidth } - } - node.style.top = top + "px" - node.style.left = node.style.right = "" - if (horiz == "right") { - left = display.sizer.clientWidth - node.offsetWidth - node.style.right = "0px" - } else { - if (horiz == "left") { left = 0 } - else if (horiz == "middle") { left = (display.sizer.clientWidth - node.offsetWidth) / 2 } - node.style.left = left + "px" - } - if (scroll) - { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}) } - }, - - triggerOnKeyDown: methodOp(onKeyDown), - triggerOnKeyPress: methodOp(onKeyPress), - triggerOnKeyUp: onKeyUp, - triggerOnMouseDown: methodOp(onMouseDown), - - execCommand: function(cmd) { - if (commands.hasOwnProperty(cmd)) - { return commands[cmd].call(null, this) } - }, - - triggerElectric: methodOp(function(text) { triggerElectric(this, text) }), - - findPosH: function(from, amount, unit, visually) { - var this$1 = this; - - var dir = 1 - if (amount < 0) { dir = -1; amount = -amount } - var cur = clipPos(this.doc, from) - for (var i = 0; i < amount; ++i) { - cur = findPosH(this$1.doc, cur, dir, unit, visually) - if (cur.hitSide) { break } - } - return cur - }, - - moveH: methodOp(function(dir, unit) { - var this$1 = this; - - this.extendSelectionsBy(function (range) { - if (this$1.display.shift || this$1.doc.extend || range.empty()) - { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) } - else - { return dir < 0 ? range.from() : range.to() } - }, sel_move) - }), - - deleteH: methodOp(function(dir, unit) { - var sel = this.doc.sel, doc = this.doc - if (sel.somethingSelected()) - { doc.replaceSelection("", null, "+delete") } - else - { deleteNearSelection(this, function (range) { - var other = findPosH(doc, range.head, dir, unit, false) - return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other} - }) } - }), - - findPosV: function(from, amount, unit, goalColumn) { - var this$1 = this; - - var dir = 1, x = goalColumn - if (amount < 0) { dir = -1; amount = -amount } - var cur = clipPos(this.doc, from) - for (var i = 0; i < amount; ++i) { - var coords = cursorCoords(this$1, cur, "div") - if (x == null) { x = coords.left } - else { coords.left = x } - cur = findPosV(this$1, coords, dir, unit) - if (cur.hitSide) { break } - } - return cur - }, - - moveV: methodOp(function(dir, unit) { - var this$1 = this; - - var doc = this.doc, goals = [] - var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected() - doc.extendSelectionsBy(function (range) { - if (collapse) - { return dir < 0 ? range.from() : range.to() } - var headPos = cursorCoords(this$1, range.head, "div") - if (range.goalColumn != null) { headPos.left = range.goalColumn } - goals.push(headPos.left) - var pos = findPosV(this$1, headPos, dir, unit) - if (unit == "page" && range == doc.sel.primary()) - { addToScrollTop(this$1, charCoords(this$1, pos, "div").top - headPos.top) } - return pos - }, sel_move) - if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++) - { doc.sel.ranges[i].goalColumn = goals[i] } } - }), - - // Find the word at the given position (as returned by coordsChar). - findWordAt: function(pos) { - var doc = this.doc, line = getLine(doc, pos.line).text - var start = pos.ch, end = pos.ch - if (line) { - var helper = this.getHelper(pos, "wordChars") - if ((pos.sticky == "before" || end == line.length) && start) { --start; } else { ++end } - var startChar = line.charAt(start) - var check = isWordChar(startChar, helper) - ? function (ch) { return isWordChar(ch, helper); } - : /\s/.test(startChar) ? function (ch) { return /\s/.test(ch); } - : function (ch) { return (!/\s/.test(ch) && !isWordChar(ch)); } - while (start > 0 && check(line.charAt(start - 1))) { --start } - while (end < line.length && check(line.charAt(end))) { ++end } - } - return new Range(Pos(pos.line, start), Pos(pos.line, end)) - }, - - toggleOverwrite: function(value) { - if (value != null && value == this.state.overwrite) { return } - if (this.state.overwrite = !this.state.overwrite) - { addClass(this.display.cursorDiv, "CodeMirror-overwrite") } - else - { rmClass(this.display.cursorDiv, "CodeMirror-overwrite") } - - signal(this, "overwriteToggle", this, this.state.overwrite) - }, - hasFocus: function() { return this.display.input.getField() == activeElt() }, - isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) }, - - scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y) }), - getScrollInfo: function() { - var scroller = this.display.scroller - return {left: scroller.scrollLeft, top: scroller.scrollTop, - height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight, - width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth, - clientHeight: displayHeight(this), clientWidth: displayWidth(this)} - }, - - scrollIntoView: methodOp(function(range, margin) { - if (range == null) { - range = {from: this.doc.sel.primary().head, to: null} - if (margin == null) { margin = this.options.cursorScrollMargin } - } else if (typeof range == "number") { - range = {from: Pos(range, 0), to: null} - } else if (range.from == null) { - range = {from: range, to: null} - } - if (!range.to) { range.to = range.from } - range.margin = margin || 0 - - if (range.from.line != null) { - scrollToRange(this, range) - } else { - scrollToCoordsRange(this, range.from, range.to, range.margin) - } - }), - - setSize: methodOp(function(width, height) { - var this$1 = this; - - var interpret = function (val) { return typeof val == "number" || /^\d+$/.test(String(val)) ? val + "px" : val; } - if (width != null) { this.display.wrapper.style.width = interpret(width) } - if (height != null) { this.display.wrapper.style.height = interpret(height) } - if (this.options.lineWrapping) { clearLineMeasurementCache(this) } - var lineNo = this.display.viewFrom - this.doc.iter(lineNo, this.display.viewTo, function (line) { - if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) - { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, "widget"); break } } } - ++lineNo - }) - this.curOp.forceUpdate = true - signal(this, "refresh", this) - }), - - operation: function(f){return runInOp(this, f)}, - startOperation: function(){return startOperation(this)}, - endOperation: function(){return endOperation(this)}, - - refresh: methodOp(function() { - var oldHeight = this.display.cachedTextHeight - regChange(this) - this.curOp.forceUpdate = true - clearCaches(this) - scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop) - updateGutterSpace(this) - if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5) - { estimateLineHeights(this) } - signal(this, "refresh", this) - }), - - swapDoc: methodOp(function(doc) { - var old = this.doc - old.cm = null - attachDoc(this, doc) - clearCaches(this) - this.display.input.reset() - scrollToCoords(this, doc.scrollLeft, doc.scrollTop) - this.curOp.forceScroll = true - signalLater(this, "swapDoc", this, old) - return old - }), - - phrase: function(phraseText) { - var phrases = this.options.phrases - return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText - }, - - getInputField: function(){return this.display.input.getField()}, - getWrapperElement: function(){return this.display.wrapper}, - getScrollerElement: function(){return this.display.scroller}, - getGutterElement: function(){return this.display.gutters} - } - eventMixin(CodeMirror) - - CodeMirror.registerHelper = function(type, name, value) { - if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []} } - helpers[type][name] = value - } - CodeMirror.registerGlobalHelper = function(type, name, predicate, value) { - CodeMirror.registerHelper(type, name, value) - helpers[type]._global.push({pred: predicate, val: value}) - } -} - -// Used for horizontal relative motion. Dir is -1 or 1 (left or -// right), unit can be "char", "column" (like char, but doesn't -// cross line boundaries), "word" (across next word), or "group" (to -// the start of next group of word or non-word-non-whitespace -// chars). The visually param controls whether, in right-to-left -// text, direction 1 means to move towards the next index in the -// string, or towards the character to the right of the current -// position. The resulting position will have a hitSide=true -// property if it reached the end of the document. -function findPosH(doc, pos, dir, unit, visually) { - var oldPos = pos - var origDir = dir - var lineObj = getLine(doc, pos.line) - function findNextLine() { - var l = pos.line + dir - if (l < doc.first || l >= doc.first + doc.size) { return false } - pos = new Pos(l, pos.ch, pos.sticky) - return lineObj = getLine(doc, l) - } - function moveOnce(boundToLine) { - var next - if (visually) { - next = moveVisually(doc.cm, lineObj, pos, dir) - } else { - next = moveLogically(lineObj, pos, dir) - } - if (next == null) { - if (!boundToLine && findNextLine()) - { pos = endOfLine(visually, doc.cm, lineObj, pos.line, dir) } - else - { return false } - } else { - pos = next - } - return true - } - - if (unit == "char") { - moveOnce() - } else if (unit == "column") { - moveOnce(true) - } else if (unit == "word" || unit == "group") { - var sawType = null, group = unit == "group" - var helper = doc.cm && doc.cm.getHelper(pos, "wordChars") - for (var first = true;; first = false) { - if (dir < 0 && !moveOnce(!first)) { break } - var cur = lineObj.text.charAt(pos.ch) || "\n" - var type = isWordChar(cur, helper) ? "w" - : group && cur == "\n" ? "n" - : !group || /\s/.test(cur) ? null - : "p" - if (group && !first && !type) { type = "s" } - if (sawType && sawType != type) { - if (dir < 0) {dir = 1; moveOnce(); pos.sticky = "after"} - break - } - - if (type) { sawType = type } - if (dir > 0 && !moveOnce(!first)) { break } - } - } - var result = skipAtomic(doc, pos, oldPos, origDir, true) - if (equalCursorPos(oldPos, result)) { result.hitSide = true } - return result -} - -// For relative vertical movement. Dir may be -1 or 1. Unit can be -// "page" or "line". The resulting position will have a hitSide=true -// property if it reached the end of the document. -function findPosV(cm, pos, dir, unit) { - var doc = cm.doc, x = pos.left, y - if (unit == "page") { - var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight) - var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3) - y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount - - } else if (unit == "line") { - y = dir > 0 ? pos.bottom + 3 : pos.top - 3 - } - var target - for (;;) { - target = coordsChar(cm, x, y) - if (!target.outside) { break } - if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break } - y += dir * 5 - } - return target -} - -// CONTENTEDITABLE INPUT STYLE - -var ContentEditableInput = function(cm) { - this.cm = cm - this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null - this.polling = new Delayed() - this.composing = null - this.gracePeriod = false - this.readDOMTimeout = null -}; - -ContentEditableInput.prototype.init = function (display) { - var this$1 = this; - - var input = this, cm = input.cm - var div = input.div = display.lineDiv - disableBrowserMagic(div, cm.options.spellcheck) - - on(div, "paste", function (e) { - if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return } - // IE doesn't fire input events, so we schedule a read for the pasted content in this way - if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20) } - }) - - on(div, "compositionstart", function (e) { - this$1.composing = {data: e.data, done: false} - }) - on(div, "compositionupdate", function (e) { - if (!this$1.composing) { this$1.composing = {data: e.data, done: false} } - }) - on(div, "compositionend", function (e) { - if (this$1.composing) { - if (e.data != this$1.composing.data) { this$1.readFromDOMSoon() } - this$1.composing.done = true - } - }) - - on(div, "touchstart", function () { return input.forceCompositionEnd(); }) - - on(div, "input", function () { - if (!this$1.composing) { this$1.readFromDOMSoon() } - }) - - function onCopyCut(e) { - if (signalDOMEvent(cm, e)) { return } - if (cm.somethingSelected()) { - setLastCopied({lineWise: false, text: cm.getSelections()}) - if (e.type == "cut") { cm.replaceSelection("", null, "cut") } - } else if (!cm.options.lineWiseCopyCut) { - return - } else { - var ranges = copyableRanges(cm) - setLastCopied({lineWise: true, text: ranges.text}) - if (e.type == "cut") { - cm.operation(function () { - cm.setSelections(ranges.ranges, 0, sel_dontScroll) - cm.replaceSelection("", null, "cut") - }) - } - } - if (e.clipboardData) { - e.clipboardData.clearData() - var content = lastCopied.text.join("\n") - // iOS exposes the clipboard API, but seems to discard content inserted into it - e.clipboardData.setData("Text", content) - if (e.clipboardData.getData("Text") == content) { - e.preventDefault() - return - } - } - // Old-fashioned briefly-focus-a-textarea hack - var kludge = hiddenTextarea(), te = kludge.firstChild - cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild) - te.value = lastCopied.text.join("\n") - var hadFocus = document.activeElement - selectInput(te) - setTimeout(function () { - cm.display.lineSpace.removeChild(kludge) - hadFocus.focus() - if (hadFocus == div) { input.showPrimarySelection() } - }, 50) - } - on(div, "copy", onCopyCut) - on(div, "cut", onCopyCut) -}; - -ContentEditableInput.prototype.prepareSelection = function () { - var result = prepareSelection(this.cm, false) - result.focus = this.cm.state.focused - return result -}; - -ContentEditableInput.prototype.showSelection = function (info, takeFocus) { - if (!info || !this.cm.display.view.length) { return } - if (info.focus || takeFocus) { this.showPrimarySelection() } - this.showMultipleSelections(info) -}; - -ContentEditableInput.prototype.getSelection = function () { - return this.cm.display.wrapper.ownerDocument.getSelection() -}; - -ContentEditableInput.prototype.showPrimarySelection = function () { - var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary() - var from = prim.from(), to = prim.to() - - if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) { - sel.removeAllRanges() - return - } - - var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset) - var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset) - if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && - cmp(minPos(curAnchor, curFocus), from) == 0 && - cmp(maxPos(curAnchor, curFocus), to) == 0) - { return } - - var view = cm.display.view - var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) || - {node: view[0].measure.map[2], offset: 0} - var end = to.line < cm.display.viewTo && posToDOM(cm, to) - if (!end) { - var measure = view[view.length - 1].measure - var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map - end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]} - } - - if (!start || !end) { - sel.removeAllRanges() - return - } - - var old = sel.rangeCount && sel.getRangeAt(0), rng - try { rng = range(start.node, start.offset, end.offset, end.node) } - catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible - if (rng) { - if (!gecko && cm.state.focused) { - sel.collapse(start.node, start.offset) - if (!rng.collapsed) { - sel.removeAllRanges() - sel.addRange(rng) - } - } else { - sel.removeAllRanges() - sel.addRange(rng) - } - if (old && sel.anchorNode == null) { sel.addRange(old) } - else if (gecko) { this.startGracePeriod() } - } - this.rememberSelection() -}; - -ContentEditableInput.prototype.startGracePeriod = function () { - var this$1 = this; - - clearTimeout(this.gracePeriod) - this.gracePeriod = setTimeout(function () { - this$1.gracePeriod = false - if (this$1.selectionChanged()) - { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }) } - }, 20) -}; - -ContentEditableInput.prototype.showMultipleSelections = function (info) { - removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors) - removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection) -}; - -ContentEditableInput.prototype.rememberSelection = function () { - var sel = this.getSelection() - this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset - this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset -}; - -ContentEditableInput.prototype.selectionInEditor = function () { - var sel = this.getSelection() - if (!sel.rangeCount) { return false } - var node = sel.getRangeAt(0).commonAncestorContainer - return contains(this.div, node) -}; - -ContentEditableInput.prototype.focus = function () { - if (this.cm.options.readOnly != "nocursor") { - if (!this.selectionInEditor()) - { this.showSelection(this.prepareSelection(), true) } - this.div.focus() - } -}; -ContentEditableInput.prototype.blur = function () { this.div.blur() }; -ContentEditableInput.prototype.getField = function () { return this.div }; - -ContentEditableInput.prototype.supportsTouch = function () { return true }; - -ContentEditableInput.prototype.receivedFocus = function () { - var input = this - if (this.selectionInEditor()) - { this.pollSelection() } - else - { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }) } - - function poll() { - if (input.cm.state.focused) { - input.pollSelection() - input.polling.set(input.cm.options.pollInterval, poll) - } - } - this.polling.set(this.cm.options.pollInterval, poll) -}; - -ContentEditableInput.prototype.selectionChanged = function () { - var sel = this.getSelection() - return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || - sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset -}; - -ContentEditableInput.prototype.pollSelection = function () { - if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return } - var sel = this.getSelection(), cm = this.cm - // On Android Chrome (version 56, at least), backspacing into an - // uneditable block element will put the cursor in that element, - // and then, because it's not editable, hide the virtual keyboard. - // Because Android doesn't allow us to actually detect backspace - // presses in a sane way, this code checks for when that happens - // and simulates a backspace press in this case. - if (android && chrome && this.cm.options.gutters.length && isInGutter(sel.anchorNode)) { - this.cm.triggerOnKeyDown({type: "keydown", keyCode: 8, preventDefault: Math.abs}) - this.blur() - this.focus() - return - } - if (this.composing) { return } - this.rememberSelection() - var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset) - var head = domToPos(cm, sel.focusNode, sel.focusOffset) - if (anchor && head) { runInOp(cm, function () { - setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll) - if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true } - }) } -}; - -ContentEditableInput.prototype.pollContent = function () { - if (this.readDOMTimeout != null) { - clearTimeout(this.readDOMTimeout) - this.readDOMTimeout = null - } - - var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary() - var from = sel.from(), to = sel.to() - if (from.ch == 0 && from.line > cm.firstLine()) - { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length) } - if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine()) - { to = Pos(to.line + 1, 0) } - if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false } - - var fromIndex, fromLine, fromNode - if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) { - fromLine = lineNo(display.view[0].line) - fromNode = display.view[0].node - } else { - fromLine = lineNo(display.view[fromIndex].line) - fromNode = display.view[fromIndex - 1].node.nextSibling - } - var toIndex = findViewIndex(cm, to.line) - var toLine, toNode - if (toIndex == display.view.length - 1) { - toLine = display.viewTo - 1 - toNode = display.lineDiv.lastChild - } else { - toLine = lineNo(display.view[toIndex + 1].line) - 1 - toNode = display.view[toIndex + 1].node.previousSibling - } - - if (!fromNode) { return false } - var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine)) - var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length)) - while (newText.length > 1 && oldText.length > 1) { - if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine-- } - else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++ } - else { break } - } - - var cutFront = 0, cutEnd = 0 - var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length) - while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) - { ++cutFront } - var newBot = lst(newText), oldBot = lst(oldText) - var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), - oldBot.length - (oldText.length == 1 ? cutFront : 0)) - while (cutEnd < maxCutEnd && - newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) - { ++cutEnd } - // Try to move start of change to start of selection if ambiguous - if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) { - while (cutFront && cutFront > from.ch && - newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) { - cutFront-- - cutEnd++ - } - } - - newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\u200b+/, "") - newText[0] = newText[0].slice(cutFront).replace(/\u200b+$/, "") - - var chFrom = Pos(fromLine, cutFront) - var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0) - if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) { - replaceRange(cm.doc, newText, chFrom, chTo, "+input") - return true - } -}; - -ContentEditableInput.prototype.ensurePolled = function () { - this.forceCompositionEnd() -}; -ContentEditableInput.prototype.reset = function () { - this.forceCompositionEnd() -}; -ContentEditableInput.prototype.forceCompositionEnd = function () { - if (!this.composing) { return } - clearTimeout(this.readDOMTimeout) - this.composing = null - this.updateFromDOM() - this.div.blur() - this.div.focus() -}; -ContentEditableInput.prototype.readFromDOMSoon = function () { - var this$1 = this; - - if (this.readDOMTimeout != null) { return } - this.readDOMTimeout = setTimeout(function () { - this$1.readDOMTimeout = null - if (this$1.composing) { - if (this$1.composing.done) { this$1.composing = null } - else { return } - } - this$1.updateFromDOM() - }, 80) -}; - -ContentEditableInput.prototype.updateFromDOM = function () { - var this$1 = this; - - if (this.cm.isReadOnly() || !this.pollContent()) - { runInOp(this.cm, function () { return regChange(this$1.cm); }) } -}; - -ContentEditableInput.prototype.setUneditable = function (node) { - node.contentEditable = "false" -}; - -ContentEditableInput.prototype.onKeyPress = function (e) { - if (e.charCode == 0 || this.composing) { return } - e.preventDefault() - if (!this.cm.isReadOnly()) - { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0) } -}; - -ContentEditableInput.prototype.readOnlyChanged = function (val) { - this.div.contentEditable = String(val != "nocursor") -}; - -ContentEditableInput.prototype.onContextMenu = function () {}; -ContentEditableInput.prototype.resetPosition = function () {}; - -ContentEditableInput.prototype.needsContentAttribute = true - -function posToDOM(cm, pos) { - var view = findViewForLine(cm, pos.line) - if (!view || view.hidden) { return null } - var line = getLine(cm.doc, pos.line) - var info = mapFromLineView(view, line, pos.line) - - var order = getOrder(line, cm.doc.direction), side = "left" - if (order) { - var partPos = getBidiPartAt(order, pos.ch) - side = partPos % 2 ? "right" : "left" - } - var result = nodeAndOffsetInLineMap(info.map, pos.ch, side) - result.offset = result.collapse == "right" ? result.end : result.start - return result -} - -function isInGutter(node) { - for (var scan = node; scan; scan = scan.parentNode) - { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } } - return false -} - -function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos } - -function domTextBetween(cm, from, to, fromLine, toLine) { - var text = "", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false - function recognizeMarker(id) { return function (marker) { return marker.id == id; } } - function close() { - if (closing) { - text += lineSep - if (extraLinebreak) { text += lineSep } - closing = extraLinebreak = false - } - } - function addText(str) { - if (str) { - close() - text += str - } - } - function walk(node) { - if (node.nodeType == 1) { - var cmText = node.getAttribute("cm-text") - if (cmText) { - addText(cmText) - return - } - var markerID = node.getAttribute("cm-marker"), range - if (markerID) { - var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID)) - if (found.length && (range = found[0].find(0))) - { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)) } - return - } - if (node.getAttribute("contenteditable") == "false") { return } - var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName) - if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return } - - if (isBlock) { close() } - for (var i = 0; i < node.childNodes.length; i++) - { walk(node.childNodes[i]) } - - if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true } - if (isBlock) { closing = true } - } else if (node.nodeType == 3) { - addText(node.nodeValue.replace(/\u200b/g, "").replace(/\u00a0/g, " ")) - } - } - for (;;) { - walk(from) - if (from == to) { break } - from = from.nextSibling - extraLinebreak = false - } - return text -} - -function domToPos(cm, node, offset) { - var lineNode - if (node == cm.display.lineDiv) { - lineNode = cm.display.lineDiv.childNodes[offset] - if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) } - node = null; offset = 0 - } else { - for (lineNode = node;; lineNode = lineNode.parentNode) { - if (!lineNode || lineNode == cm.display.lineDiv) { return null } - if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break } - } - } - for (var i = 0; i < cm.display.view.length; i++) { - var lineView = cm.display.view[i] - if (lineView.node == lineNode) - { return locateNodeInLineView(lineView, node, offset) } - } -} - -function locateNodeInLineView(lineView, node, offset) { - var wrapper = lineView.text.firstChild, bad = false - if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) } - if (node == wrapper) { - bad = true - node = wrapper.childNodes[offset] - offset = 0 - if (!node) { - var line = lineView.rest ? lst(lineView.rest) : lineView.line - return badPos(Pos(lineNo(line), line.text.length), bad) - } - } - - var textNode = node.nodeType == 3 ? node : null, topNode = node - if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) { - textNode = node.firstChild - if (offset) { offset = textNode.nodeValue.length } - } - while (topNode.parentNode != wrapper) { topNode = topNode.parentNode } - var measure = lineView.measure, maps = measure.maps - - function find(textNode, topNode, offset) { - for (var i = -1; i < (maps ? maps.length : 0); i++) { - var map = i < 0 ? measure.map : maps[i] - for (var j = 0; j < map.length; j += 3) { - var curNode = map[j + 2] - if (curNode == textNode || curNode == topNode) { - var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]) - var ch = map[j] + offset - if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)] } - return Pos(line, ch) - } - } - } - } - var found = find(textNode, topNode, offset) - if (found) { return badPos(found, bad) } - - // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems - for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) { - found = find(after, after.firstChild, 0) - if (found) - { return badPos(Pos(found.line, found.ch - dist), bad) } - else - { dist += after.textContent.length } - } - for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) { - found = find(before, before.firstChild, -1) - if (found) - { return badPos(Pos(found.line, found.ch + dist$1), bad) } - else - { dist$1 += before.textContent.length } - } -} - -// TEXTAREA INPUT STYLE - -var TextareaInput = function(cm) { - this.cm = cm - // See input.poll and input.reset - this.prevInput = "" - - // Flag that indicates whether we expect input to appear real soon - // now (after some event like 'keypress' or 'input') and are - // polling intensively. - this.pollingFast = false - // Self-resetting timeout for the poller - this.polling = new Delayed() - // Used to work around IE issue with selection being forgotten when focus moves away from textarea - this.hasSelection = false - this.composing = null -}; - -TextareaInput.prototype.init = function (display) { - var this$1 = this; - - var input = this, cm = this.cm - this.createField(display) - var te = this.textarea - - display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild) - - // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore) - if (ios) { te.style.width = "0px" } - - on(te, "input", function () { - if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null } - input.poll() - }) - - on(te, "paste", function (e) { - if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return } - - cm.state.pasteIncoming = true - input.fastPoll() - }) - - function prepareCopyCut(e) { - if (signalDOMEvent(cm, e)) { return } - if (cm.somethingSelected()) { - setLastCopied({lineWise: false, text: cm.getSelections()}) - } else if (!cm.options.lineWiseCopyCut) { - return - } else { - var ranges = copyableRanges(cm) - setLastCopied({lineWise: true, text: ranges.text}) - if (e.type == "cut") { - cm.setSelections(ranges.ranges, null, sel_dontScroll) - } else { - input.prevInput = "" - te.value = ranges.text.join("\n") - selectInput(te) - } - } - if (e.type == "cut") { cm.state.cutIncoming = true } - } - on(te, "cut", prepareCopyCut) - on(te, "copy", prepareCopyCut) - - on(display.scroller, "paste", function (e) { - if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return } - cm.state.pasteIncoming = true - input.focus() - }) - - // Prevent normal selection in the editor (we handle our own) - on(display.lineSpace, "selectstart", function (e) { - if (!eventInWidget(display, e)) { e_preventDefault(e) } - }) - - on(te, "compositionstart", function () { - var start = cm.getCursor("from") - if (input.composing) { input.composing.range.clear() } - input.composing = { - start: start, - range: cm.markText(start, cm.getCursor("to"), {className: "CodeMirror-composing"}) - } - }) - on(te, "compositionend", function () { - if (input.composing) { - input.poll() - input.composing.range.clear() - input.composing = null - } - }) -}; - -TextareaInput.prototype.createField = function (_display) { - // Wraps and hides input textarea - this.wrapper = hiddenTextarea() - // The semihidden textarea that is focused when the editor is - // focused, and receives input. - this.textarea = this.wrapper.firstChild -}; - -TextareaInput.prototype.prepareSelection = function () { - // Redraw the selection and/or cursor - var cm = this.cm, display = cm.display, doc = cm.doc - var result = prepareSelection(cm) - - // Move the hidden textarea near the cursor to prevent scrolling artifacts - if (cm.options.moveInputWithCursor) { - var headPos = cursorCoords(cm, doc.sel.primary().head, "div") - var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect() - result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, - headPos.top + lineOff.top - wrapOff.top)) - result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, - headPos.left + lineOff.left - wrapOff.left)) - } - - return result -}; - -TextareaInput.prototype.showSelection = function (drawn) { - var cm = this.cm, display = cm.display - removeChildrenAndAdd(display.cursorDiv, drawn.cursors) - removeChildrenAndAdd(display.selectionDiv, drawn.selection) - if (drawn.teTop != null) { - this.wrapper.style.top = drawn.teTop + "px" - this.wrapper.style.left = drawn.teLeft + "px" - } -}; - -// Reset the input to correspond to the selection (or to be empty, -// when not typing and nothing is selected) -TextareaInput.prototype.reset = function (typing) { - if (this.contextMenuPending || this.composing) { return } - var cm = this.cm - if (cm.somethingSelected()) { - this.prevInput = "" - var content = cm.getSelection() - this.textarea.value = content - if (cm.state.focused) { selectInput(this.textarea) } - if (ie && ie_version >= 9) { this.hasSelection = content } - } else if (!typing) { - this.prevInput = this.textarea.value = "" - if (ie && ie_version >= 9) { this.hasSelection = null } - } -}; - -TextareaInput.prototype.getField = function () { return this.textarea }; - -TextareaInput.prototype.supportsTouch = function () { return false }; - -TextareaInput.prototype.focus = function () { - if (this.cm.options.readOnly != "nocursor" && (!mobile || activeElt() != this.textarea)) { - try { this.textarea.focus() } - catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM - } -}; - -TextareaInput.prototype.blur = function () { this.textarea.blur() }; - -TextareaInput.prototype.resetPosition = function () { - this.wrapper.style.top = this.wrapper.style.left = 0 -}; - -TextareaInput.prototype.receivedFocus = function () { this.slowPoll() }; - -// Poll for input changes, using the normal rate of polling. This -// runs as long as the editor is focused. -TextareaInput.prototype.slowPoll = function () { - var this$1 = this; - - if (this.pollingFast) { return } - this.polling.set(this.cm.options.pollInterval, function () { - this$1.poll() - if (this$1.cm.state.focused) { this$1.slowPoll() } - }) -}; - -// When an event has just come in that is likely to add or change -// something in the input textarea, we poll faster, to ensure that -// the change appears on the screen quickly. -TextareaInput.prototype.fastPoll = function () { - var missed = false, input = this - input.pollingFast = true - function p() { - var changed = input.poll() - if (!changed && !missed) {missed = true; input.polling.set(60, p)} - else {input.pollingFast = false; input.slowPoll()} - } - input.polling.set(20, p) -}; - -// Read input from the textarea, and update the document to match. -// When something is selected, it is present in the textarea, and -// selected (unless it is huge, in which case a placeholder is -// used). When nothing is selected, the cursor sits after previously -// seen text (can be empty), which is stored in prevInput (we must -// not reset the textarea when typing, because that breaks IME). -TextareaInput.prototype.poll = function () { - var this$1 = this; - - var cm = this.cm, input = this.textarea, prevInput = this.prevInput - // Since this is called a *lot*, try to bail out as cheaply as - // possible when it is clear that nothing happened. hasSelection - // will be the case when there is a lot of text in the textarea, - // in which case reading its value would be expensive. - if (this.contextMenuPending || !cm.state.focused || - (hasSelection(input) && !prevInput && !this.composing) || - cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) - { return false } - - var text = input.value - // If nothing changed, bail. - if (text == prevInput && !cm.somethingSelected()) { return false } - // Work around nonsensical selection resetting in IE9/10, and - // inexplicable appearance of private area unicode characters on - // some key combos in Mac (#2689). - if (ie && ie_version >= 9 && this.hasSelection === text || - mac && /[\uf700-\uf7ff]/.test(text)) { - cm.display.input.reset() - return false - } - - if (cm.doc.sel == cm.display.selForContextMenu) { - var first = text.charCodeAt(0) - if (first == 0x200b && !prevInput) { prevInput = "\u200b" } - if (first == 0x21da) { this.reset(); return this.cm.execCommand("undo") } - } - // Find the part of the input that is actually new - var same = 0, l = Math.min(prevInput.length, text.length) - while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same } - - runInOp(cm, function () { - applyTextInput(cm, text.slice(same), prevInput.length - same, - null, this$1.composing ? "*compose" : null) - - // Don't leave long text in the textarea, since it makes further polling slow - if (text.length > 1000 || text.indexOf("\n") > -1) { input.value = this$1.prevInput = "" } - else { this$1.prevInput = text } - - if (this$1.composing) { - this$1.composing.range.clear() - this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor("to"), - {className: "CodeMirror-composing"}) - } - }) - return true -}; - -TextareaInput.prototype.ensurePolled = function () { - if (this.pollingFast && this.poll()) { this.pollingFast = false } -}; - -TextareaInput.prototype.onKeyPress = function () { - if (ie && ie_version >= 9) { this.hasSelection = null } - this.fastPoll() -}; - -TextareaInput.prototype.onContextMenu = function (e) { - var input = this, cm = input.cm, display = cm.display, te = input.textarea - var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop - if (!pos || presto) { return } // Opera is difficult. - - // Reset the current text selection only if the click is done outside of the selection - // and 'resetSelectionOnContextMenu' option is true. - var reset = cm.options.resetSelectionOnContextMenu - if (reset && cm.doc.sel.contains(pos) == -1) - { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll) } - - var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText - input.wrapper.style.cssText = "position: absolute" - var wrapperBox = input.wrapper.getBoundingClientRect() - te.style.cssText = "position: absolute; width: 30px; height: 30px;\n top: " + (e.clientY - wrapperBox.top - 5) + "px; left: " + (e.clientX - wrapperBox.left - 5) + "px;\n z-index: 1000; background: " + (ie ? "rgba(255, 255, 255, .05)" : "transparent") + ";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);" - var oldScrollY - if (webkit) { oldScrollY = window.scrollY } // Work around Chrome issue (#2712) - display.input.focus() - if (webkit) { window.scrollTo(null, oldScrollY) } - display.input.reset() - // Adds "Select all" to context menu in FF - if (!cm.somethingSelected()) { te.value = input.prevInput = " " } - input.contextMenuPending = true - display.selForContextMenu = cm.doc.sel - clearTimeout(display.detectingSelectAll) - - // Select-all will be greyed out if there's nothing to select, so - // this adds a zero-width space so that we can later check whether - // it got selected. - function prepareSelectAllHack() { - if (te.selectionStart != null) { - var selected = cm.somethingSelected() - var extval = "\u200b" + (selected ? te.value : "") - te.value = "\u21da" // Used to catch context-menu undo - te.value = extval - input.prevInput = selected ? "" : "\u200b" - te.selectionStart = 1; te.selectionEnd = extval.length - // Re-set this, in case some other handler touched the - // selection in the meantime. - display.selForContextMenu = cm.doc.sel - } - } - function rehide() { - input.contextMenuPending = false - input.wrapper.style.cssText = oldWrapperCSS - te.style.cssText = oldCSS - if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos) } - - // Try to detect the user choosing select-all - if (te.selectionStart != null) { - if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack() } - var i = 0, poll = function () { - if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && - te.selectionEnd > 0 && input.prevInput == "\u200b") { - operation(cm, selectAll)(cm) - } else if (i++ < 10) { - display.detectingSelectAll = setTimeout(poll, 500) - } else { - display.selForContextMenu = null - display.input.reset() - } - } - display.detectingSelectAll = setTimeout(poll, 200) - } - } - - if (ie && ie_version >= 9) { prepareSelectAllHack() } - if (captureRightClick) { - e_stop(e) - var mouseup = function () { - off(window, "mouseup", mouseup) - setTimeout(rehide, 20) - } - on(window, "mouseup", mouseup) - } else { - setTimeout(rehide, 50) - } -}; - -TextareaInput.prototype.readOnlyChanged = function (val) { - if (!val) { this.reset() } - this.textarea.disabled = val == "nocursor" -}; - -TextareaInput.prototype.setUneditable = function () {}; - -TextareaInput.prototype.needsContentAttribute = false - -function fromTextArea(textarea, options) { - options = options ? copyObj(options) : {} - options.value = textarea.value - if (!options.tabindex && textarea.tabIndex) - { options.tabindex = textarea.tabIndex } - if (!options.placeholder && textarea.placeholder) - { options.placeholder = textarea.placeholder } - // Set autofocus to true if this textarea is focused, or if it has - // autofocus and no other element is focused. - if (options.autofocus == null) { - var hasFocus = activeElt() - options.autofocus = hasFocus == textarea || - textarea.getAttribute("autofocus") != null && hasFocus == document.body - } - - function save() {textarea.value = cm.getValue()} - - var realSubmit - if (textarea.form) { - on(textarea.form, "submit", save) - // Deplorable hack to make the submit method do the right thing. - if (!options.leaveSubmitMethodAlone) { - var form = textarea.form - realSubmit = form.submit - try { - var wrappedSubmit = form.submit = function () { - save() - form.submit = realSubmit - form.submit() - form.submit = wrappedSubmit - } - } catch(e) {} - } - } - - options.finishInit = function (cm) { - cm.save = save - cm.getTextArea = function () { return textarea; } - cm.toTextArea = function () { - cm.toTextArea = isNaN // Prevent this from being ran twice - save() - textarea.parentNode.removeChild(cm.getWrapperElement()) - textarea.style.display = "" - if (textarea.form) { - off(textarea.form, "submit", save) - if (typeof textarea.form.submit == "function") - { textarea.form.submit = realSubmit } - } - } - } - - textarea.style.display = "none" - var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); }, - options) - return cm -} - -function addLegacyProps(CodeMirror) { - CodeMirror.off = off - CodeMirror.on = on - CodeMirror.wheelEventPixels = wheelEventPixels - CodeMirror.Doc = Doc - CodeMirror.splitLines = splitLinesAuto - CodeMirror.countColumn = countColumn - CodeMirror.findColumn = findColumn - CodeMirror.isWordChar = isWordCharBasic - CodeMirror.Pass = Pass - CodeMirror.signal = signal - CodeMirror.Line = Line - CodeMirror.changeEnd = changeEnd - CodeMirror.scrollbarModel = scrollbarModel - CodeMirror.Pos = Pos - CodeMirror.cmpPos = cmp - CodeMirror.modes = modes - CodeMirror.mimeModes = mimeModes - CodeMirror.resolveMode = resolveMode - CodeMirror.getMode = getMode - CodeMirror.modeExtensions = modeExtensions - CodeMirror.extendMode = extendMode - CodeMirror.copyState = copyState - CodeMirror.startState = startState - CodeMirror.innerMode = innerMode - CodeMirror.commands = commands - CodeMirror.keyMap = keyMap - CodeMirror.keyName = keyName - CodeMirror.isModifierKey = isModifierKey - CodeMirror.lookupKey = lookupKey - CodeMirror.normalizeKeyMap = normalizeKeyMap - CodeMirror.StringStream = StringStream - CodeMirror.SharedTextMarker = SharedTextMarker - CodeMirror.TextMarker = TextMarker - CodeMirror.LineWidget = LineWidget - CodeMirror.e_preventDefault = e_preventDefault - CodeMirror.e_stopPropagation = e_stopPropagation - CodeMirror.e_stop = e_stop - CodeMirror.addClass = addClass - CodeMirror.contains = contains - CodeMirror.rmClass = rmClass - CodeMirror.keyNames = keyNames -} - -// EDITOR CONSTRUCTOR - -defineOptions(CodeMirror) - -addEditorMethods(CodeMirror) - -// Set up methods on CodeMirror's prototype to redirect to the editor's document. -var dontDelegate = "iter insert remove copy getEditor constructor".split(" ") -for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) - { CodeMirror.prototype[prop] = (function(method) { - return function() {return method.apply(this.doc, arguments)} - })(Doc.prototype[prop]) } } - -eventMixin(Doc) - -// INPUT HANDLING - -CodeMirror.inputStyles = {"textarea": TextareaInput, "contenteditable": ContentEditableInput} - -// MODE DEFINITION AND QUERYING - -// Extra arguments are stored as the mode's dependencies, which is -// used by (legacy) mechanisms like loadmode.js to automatically -// load a mode. (Preferred mechanism is the require/define calls.) -CodeMirror.defineMode = function(name/*, mode, …*/) { - if (!CodeMirror.defaults.mode && name != "null") { CodeMirror.defaults.mode = name } - defineMode.apply(this, arguments) -} - -CodeMirror.defineMIME = defineMIME - -// Minimal default mode. -CodeMirror.defineMode("null", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); }) -CodeMirror.defineMIME("text/plain", "null") - -// EXTENSIONS - -CodeMirror.defineExtension = function (name, func) { - CodeMirror.prototype[name] = func -} -CodeMirror.defineDocExtension = function (name, func) { - Doc.prototype[name] = func -} - -CodeMirror.fromTextArea = fromTextArea - -addLegacyProps(CodeMirror) - -CodeMirror.version = "5.40.2" - -return CodeMirror; - -}))); \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/diff/README.md b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/diff/README.md deleted file mode 100644 index e1a90b0..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/diff/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# diff - -implementation of myers diff algorithm - -[![Build Status](https://travis-ci.org/Swatinem/diff.png?branch=master)](https://travis-ci.org/Swatinem/diff) -[![Coverage Status](https://coveralls.io/repos/Swatinem/diff/badge.png?branch=master)](https://coveralls.io/r/Swatinem/diff) -[![Dependency Status](https://gemnasium.com/Swatinem/diff.png)](https://gemnasium.com/Swatinem/diff) - - -This uses the [*An O(ND) Difference Algorithm and Its Variations*](http://www.xmailserver.org/diff2.pdf) -Also see http://simplygenius.net/Article/DiffTutorial2 and -http://www.mathertel.de/Diff/ViewSrc.aspx for more inspiration - -## Installation - - $ npm install diff - $ component install Swatinem/diff - -## Usage - -### diff(a, b, [eql(a, b)]) - -Given two arrays (or array-likes, such as strings) `a` and `b` and an optional -equal function `eql`, this will return an array with the following operations: -* *nop* the element is in both arrays -* *ins* the element is only in array `b` and will be inserted -* *del* the element in only in array `a` and will be removed -* *rep* the element from `a` will be replaced by the element from `b`. -This is essentially the same as a del+ins - -## License - - LGPLv3 - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/diff/swatinem_diff.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/diff/swatinem_diff.js deleted file mode 100644 index d21b57d..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/diff/swatinem_diff.js +++ /dev/null @@ -1,207 +0,0 @@ -/******************************************************************************* - - Key portions of code below was borrowed from: - https://github.com/Swatinem/diff - - License is LGPL3 (thanks!) as per: - https://github.com/Swatinem/diff/blob/b58391504759/README.md - - I chose to pick this implementation over - https://github.com/google/diff-match-patch as suggested by CodeMirror - because: - - - Code is clean and simple to read -- useful when unfamiliar with the diff - algorithm, this makes changing the code easier if/when needed. - - - Smaller -- diff_match_patch comes with an extended API most of which is - of no use to the current project. - - diff_match_patch uncompressed: 74.7 KB - - Swatinem's diff uncompressed: 3.66 KB - - - I can easily adapt Swatinem's diff to deal with arrays of strings, which - is best suited for the current project -- it natively work with arrays. - - I removed portions of code which are of no use for the current project. - - I modified the diff script generator (Diff.prototype.editscript) since I - need to generate a script which is compatible with the output of the - diff_match_patch, as expected by CodeMirror. - -**/ - -'use strict'; - -(function(context) { - - // CodeMirror expect these globals: - context.DIFF_INSERT = 1; - context.DIFF_DELETE = -1; - context.DIFF_EQUAL = 0; - context.diff_match_patch = function(){}; - - context.diff_match_patch.prototype.diff_main = function(a, b) { - if ( a === b ) { return [ [ 0, a ] ]; } - var aa = a.match(/\n|[^\n]+\n?/g) || []; - var bb = b.match(/\n|[^\n]+\n?/g) || []; - var d = new Diff(aa, bb, eqlDefault); - return d.editscript(); - }; - - function eqlDefault(a, b) { return a === b; } - - function Diff(a, b, eql) { - this.a = a; - this.b = b; - this.eql = eql; - - this.moda = Array.apply(null, new Array(a.length)).map(true.valueOf, false); - this.modb = Array.apply(null, new Array(b.length)).map(true.valueOf, false); - - // just to save some allocations: - this.down = {}; - this.up = {}; - - this.lcs(0, a.length, 0, b.length); - } - - Diff.prototype.editscript = function Diff_editscript() { - var moda = this.moda, modb = this.modb; - var astart = 0, aend = moda.length; - var bstart = 0, bend = modb.length; - var result = []; - while (astart < aend || bstart < bend) { - if (astart < aend && bstart < bend) { - if (!moda[astart] && !modb[bstart]) { - result.push([ 0, this.a[astart] ]); - astart++; bstart++; - continue; - } else if (moda[astart] && modb[bstart]) { - result.push([ -1, this.a[astart] ]); - result.push([ 1, this.b[bstart] ]); - astart++; bstart++; - continue; - } - } - if (astart < aend && (bstart >= bend || moda[astart])) { - result.push([ -1, this.a[astart] ]); - astart++; - } - if (bstart < bend && (astart >= aend || modb[bstart])) { - result.push([ 1, this.b[bstart] ]); - bstart++; - } - } - return result; - }; - - Diff.prototype.lcs = function Diff_lcs(astart, aend, bstart, bend) { - var a = this.a, b = this.b, eql = this.eql; - // separate common head - while (astart < aend && bstart < bend && eql(a[astart], b[bstart])) { - astart++; bstart++; - } - // separate common tail - while (astart < aend && bstart < bend && eql(a[aend - 1], b[bend - 1])) { - aend--; bend--; - } - - if (astart === aend) { - // only insertions - while (bstart < bend) { - this.modb[bstart] = true; - bstart++; - } - } else if (bend === bstart) { - // only deletions - while (astart < aend) { - this.moda[astart] = true; - astart++; - } - } else { - var snake = this.snake(astart, aend, bstart, bend); - - this.lcs(astart, snake.x, bstart, snake.y); - this.lcs(snake.u, aend, snake.v, bend); - } - }; - - Diff.prototype.snake = function Diff_snake(astart, aend, bstart, bend) { - var a = this.a, b = this.b, eql = this.eql; - - var N = aend - astart, - M = bend - bstart; - - var kdown = astart - bstart; - var kup = aend - bend; - - var delta = N - M; - var deltaOdd = delta & 1; - - var down = this.down; - down[kdown + 1] = astart; - var up = this.up; - up[kup - 1] = aend; - - var Dmax = (N + M + 1) / 2; - for (var D = 0; D <= Dmax; D++) { - var k, x, y; - // forward path - for (k = kdown - D; k <= kdown + D; k += 2) { - if (k === kdown - D) { - x = down[k + 1]; // down - } else { - x = down[k - 1] + 1; // right - if ((k < kdown + D) && (down[k + 1] >= x)) { - x = down[k + 1]; // down - } - } - y = x - k; - - while (x < aend && y < bend && eql(a[x], b[y])) { - x++; y++; // diagonal - } - down[k] = x; - - if (deltaOdd && (kup - D < k) && (k < kup + D) && - up[k] <= down[k]) { - return { - x: down[k], - y: down[k] - k, - u: up[k], - v: up[k] - k, - }; - } - } - - // reverse path - for (k = kup - D; k <= kup + D; k += 2) { - if (k === kup + D) { - x = up[k - 1]; // up - } else { - x = up[k + 1] - 1; // left - if ((k > kup - D) && (up[k - 1] < x)) { - x = up[k - 1]; // up - } - } - y = x - k; - - while (x > astart && y > bstart && eql(a[x - 1], b[y - 1])) { - x--; y--; // diagonal - } - up[k] = x; - - if (!deltaOdd && (kdown - D <= k) && (k <= kdown + D) && - up[k] <= down[k]) { - return { - x: down[k], - y: down[k] - k, - u: up[k], - v: up[k] - k, - }; - } - } - } - }; - - return Diff; -})(self); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/publicsuffixlist.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/publicsuffixlist.js deleted file mode 100644 index 530f224..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/publicsuffixlist.js +++ /dev/null @@ -1,343 +0,0 @@ -/******************************************************************************* - - publicsuffixlist.js - an efficient javascript implementation to deal with - Mozilla Foundation's Public Suffix List - Copyright (C) 2013 Raymond Hill - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see {http://www.gnu.org/licenses/}. - -*/ - -/*! Home: https://github.com/gorhill/publicsuffixlist.js */ - -'use strict'; - -/* - This code is mostly dumb: I consider this to be lower-level code, thus - in order to ensure efficiency, the caller is responsible for sanitizing - the inputs. -*/ - -/******************************************************************************/ - -// A single instance of PublicSuffixList is enough. - -;(function(root) { - -/******************************************************************************/ - -var exceptions = new Map(); -var rules = new Map(); - -// This value dictate how the search will be performed: -// < this.cutoffLength = indexOf() -// >= this.cutoffLength = binary search -var cutoffLength = 256; -var mustPunycode = /[^\w.*-]/; - -/******************************************************************************/ - -// In the context of this code, a domain is defined as: -// "{label}.{public suffix}". -// A single standalone label is a public suffix as per -// http://publicsuffix.org/list/: -// "If no rules match, the prevailing rule is '*' " -// This means 'localhost' is not deemed a domain by this -// code, since according to the definition above, it would be -// evaluated as a public suffix. The caller is therefore responsible to -// decide how to further interpret such public suffix. -// -// `hostname` must be a valid ascii-based hostname. - -function getDomain(hostname) { - // A hostname starting with a dot is not a valid hostname. - if ( !hostname || hostname.charAt(0) === '.' ) { - return ''; - } - hostname = hostname.toLowerCase(); - var suffix = getPublicSuffix(hostname); - if ( suffix === hostname ) { - return ''; - } - var pos = hostname.lastIndexOf('.', hostname.lastIndexOf('.', hostname.length - suffix.length) - 1); - if ( pos <= 0 ) { - return hostname; - } - return hostname.slice(pos + 1); -} - -/******************************************************************************/ - -// Return longest public suffix. -// -// `hostname` must be a valid ascii-based string which respect hostname naming. - -function getPublicSuffix(hostname) { - if ( !hostname ) { - return ''; - } - // Since we slice down the hostname with each pass, the first match - // is the longest, so no need to find all the matching rules. - while ( true ) { - let pos = hostname.indexOf('.'); - if ( pos < 0 ) { - return hostname; - } - if ( search(exceptions, hostname) ) { - return hostname.slice(pos + 1); - } - if ( search(rules, hostname) ) { - return hostname; - } - if ( search(rules, '*' + hostname.slice(pos)) ) { - return hostname; - } - hostname = hostname.slice(pos + 1); - } - // unreachable -} - -/******************************************************************************/ - -// Look up a specific hostname. - -function search(store, hostname) { - // Extract TLD - let tld, remainder; - let pos = hostname.lastIndexOf('.'); - if ( pos === -1 ) { - tld = hostname; - remainder = hostname; - } else { - tld = hostname.slice(pos + 1); - remainder = hostname.slice(0, pos); - } - let substore = store.get(tld); - if ( substore === undefined ) { - return false; - } - // If substore is a string, use indexOf() - if ( typeof substore === 'string' ) { - return substore.indexOf(' ' + remainder + ' ') >= 0; - } - // It is an array: use binary search. - let l = remainder.length; - if ( l >= substore.length ) { - return false; - } - let haystack = substore[l]; - if ( haystack === null ) { - return false; - } - let left = 0; - let right = Math.floor(haystack.length / l + 0.5); - while ( left < right ) { - let i = left + right >> 1; - let needle = haystack.substr(l*i, l); - if ( remainder < needle ) { - right = i; - } else if ( remainder > needle ) { - left = i + 1; - } else { - return true; - } - } - return false; -} - -/******************************************************************************/ - -// Parse and set a UTF-8 text-based suffix list. Format is same as found at: -// http://publicsuffix.org/list/ -// -// `toAscii` is a converter from unicode to punycode. Required since the -// Public Suffix List contains unicode characters. -// Suggestion: use it's quite good. - -function parse(text, toAscii) { - exceptions = new Map(); - rules = new Map(); - - let lineBeg = 0; - let textEnd = text.length; - - while ( lineBeg < textEnd ) { - let lineEnd = text.indexOf('\n', lineBeg); - if ( lineEnd < 0 ) { - lineEnd = text.indexOf('\r', lineBeg); - if ( lineEnd < 0 ) { - lineEnd = textEnd; - } - } - let line = text.slice(lineBeg, lineEnd).trim(); - lineBeg = lineEnd + 1; - - if ( line.length === 0 ) { - continue; - } - - // Ignore comments - let pos = line.indexOf('//'); - if ( pos !== -1 ) { - line = line.slice(0, pos); - } - - // Ignore surrounding whitespaces - line = line.trim(); - if ( line.length === 0 ) { - continue; - } - - // Is this an exception rule? - let store; - if ( line.charAt(0) === '!' ) { - store = exceptions; - line = line.slice(1); - } else { - store = rules; - } - - if ( mustPunycode.test(line) ) { - line = toAscii(line); - } - - // http://publicsuffix.org/list/: - // "... all rules must be canonicalized in the normal way - // for hostnames - lower-case, Punycode ..." - line = line.toLowerCase(); - - // Extract TLD - let tld; - pos = line.lastIndexOf('.'); - if ( pos === -1 ) { - tld = line; - } else { - tld = line.slice(pos + 1); - line = line.slice(0, pos); - } - - // Store suffix using tld as key - let substore = store.get(tld); - if ( substore === undefined ) { - store.set(tld, substore = []); - } - if ( line ) { - substore.push(line); - } - } - - crystallize(exceptions); - crystallize(rules); - - window.dispatchEvent(new CustomEvent('publicSuffixList')); -} - -/******************************************************************************/ - -// Cristallize the storage of suffixes using optimal internal representation -// for future look up. - -function crystallize(store) { - for ( let entry of store ) { - let tld = entry[0]; - let suffixes = entry[1]; - - // No suffix - if ( suffixes.length === 0 ) { - store.set(tld, ''); - continue; - } - - // Concatenated list of suffixes less than cutoff length: - // Store as string, lookup using indexOf() - let s = suffixes.join(' '); - if ( s.length < cutoffLength ) { - store.set(tld, ' ' + s + ' '); - continue; - } - - // Concatenated list of suffixes greater or equal to cutoff length - // Store as array keyed on suffix length, lookup using binary search. - // I borrowed the idea to key on string length here: - // http://ejohn.org/blog/dictionary-lookups-in-javascript/#comment-392072 - let buckets = []; - for ( let suffix of suffixes ) { - let l = suffix.length; - if ( buckets.length <= l ) { - extendArray(buckets, l); - } - if ( buckets[l] === null ) { - buckets[l] = []; - } - buckets[l].push(suffix); - } - for ( let i = 0; i < buckets.length; i++ ) { - let bucket = buckets[i]; - if ( bucket !== null ) { - buckets[i] = bucket.sort().join(''); - } - } - store.set(tld, buckets); - } - - return store; -} - -let extendArray = function(aa, rb) { - for ( let i = aa.length; i <= rb; i++ ) { - aa.push(null); - } -}; - -/******************************************************************************/ - -let selfieMagic = 3; - -let toSelfie = function() { - return { - magic: selfieMagic, - rules: Array.from(rules), - exceptions: Array.from(exceptions) - }; -}; - -let fromSelfie = function(selfie) { - if ( selfie instanceof Object === false || selfie.magic !== selfieMagic ) { - return false; - } - rules = new Map(selfie.rules); - exceptions = new Map(selfie.exceptions); - window.dispatchEvent(new CustomEvent('publicSuffixList')); - return true; -}; - -/******************************************************************************/ - -// Public API - -root = root || window; - -root.publicSuffixList = { - 'version': '1.0', - 'parse': parse, - 'getDomain': getDomain, - 'getPublicSuffix': getPublicSuffix, - 'toSelfie': toSelfie, - 'fromSelfie': fromSelfie -}; - -/******************************************************************************/ - -})(this); - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/punycode.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/punycode.js deleted file mode 100644 index ac68597..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/lib/punycode.js +++ /dev/null @@ -1,530 +0,0 @@ -/*! https://mths.be/punycode v1.3.2 by @mathias */ -;(function(root) { - - /** Detect free variables */ - var freeExports = typeof exports == 'object' && exports && - !exports.nodeType && exports; - var freeModule = typeof module == 'object' && module && - !module.nodeType && module; - var freeGlobal = typeof global == 'object' && global; - if ( - freeGlobal.global === freeGlobal || - freeGlobal.window === freeGlobal || - freeGlobal.self === freeGlobal - ) { - root = freeGlobal; - } - - /** - * The `punycode` object. - * @name punycode - * @type Object - */ - var punycode, - - /** Highest positive signed 32-bit float value */ - maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 - - /** Bootstring parameters */ - base = 36, - tMin = 1, - tMax = 26, - skew = 38, - damp = 700, - initialBias = 72, - initialN = 128, // 0x80 - delimiter = '-', // '\x2D' - - /** Regular expressions */ - regexPunycode = /^xn--/, - regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars - regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators - - /** Error messages */ - errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' - }, - - /** Convenience shortcuts */ - baseMinusTMin = base - tMin, - floor = Math.floor, - stringFromCharCode = String.fromCharCode, - - /** Temporary variable */ - key; - - /*--------------------------------------------------------------------------*/ - - /** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ - function error(type) { - throw RangeError(errors[type]); - } - - /** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ - function map(array, fn) { - var length = array.length; - var result = []; - while (length--) { - result[length] = fn(array[length]); - } - return result; - } - - /** - * A simple `Array#map`-like wrapper to work with domain name strings or email - * addresses. - * @private - * @param {String} domain The domain name or email address. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ - function mapDomain(string, fn) { - var parts = string.split('@'); - var result = ''; - if (parts.length > 1) { - // In email addresses, only the domain name should be punycoded. Leave - // the local part (i.e. everything up to `@`) intact. - result = parts[0] + '@'; - string = parts[1]; - } - // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - var labels = string.split('.'); - var encoded = map(labels, fn).join('.'); - return result + encoded; - } - - /** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ - function ucs2decode(string) { - var output = [], - counter = 0, - length = string.length, - value, - extra; - while (counter < length) { - value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // high surrogate, and there is a next character - extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // low surrogate - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // unmatched surrogate; only append this code unit, in case the next - // code unit is the high surrogate of a surrogate pair - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; - } - - /** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ - function ucs2encode(array) { - return map(array, function(value) { - var output = ''; - if (value > 0xFFFF) { - value -= 0x10000; - output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); - value = 0xDC00 | value & 0x3FF; - } - output += stringFromCharCode(value); - return output; - }).join(''); - } - - /** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ - function basicToDigit(codePoint) { - if (codePoint - 48 < 10) { - return codePoint - 22; - } - if (codePoint - 65 < 26) { - return codePoint - 65; - } - if (codePoint - 97 < 26) { - return codePoint - 97; - } - return base; - } - - /** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ - function digitToBasic(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); - } - - /** - * Bias adaptation function as per section 3.4 of RFC 3492. - * http://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ - function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); - } - - /** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ - function decode(input) { - // Don't use UCS-2 - var output = [], - inputLength = input.length, - out, - i = 0, - n = initialN, - bias = initialBias, - basic, - j, - index, - oldi, - w, - k, - digit, - t, - /** Cached calculation results */ - baseMinusT; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - for (oldi = i, w = 1, k = base; /* no condition */; k += base) { - - if (index >= inputLength) { - error('invalid-input'); - } - - digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error('overflow'); - } - - i += digit * w; - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - - if (digit < t) { - break; - } - - baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error('overflow'); - } - - w *= baseMinusT; - - } - - out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output - output.splice(i++, 0, n); - - } - - return ucs2encode(output); - } - - /** - * Converts a string of Unicode symbols (e.g. a domain name label) to a - * Punycode string of ASCII-only symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ - function encode(input) { - var n, - delta, - handledCPCount, - basicLength, - bias, - j, - m, - q, - k, - t, - currentValue, - output = [], - /** `inputLength` will hold the number of code points in `input`. */ - inputLength, - /** Cached calculation results */ - handledCPCountPlusOne, - baseMinusT, - qMinusT; - - // Convert the input in UCS-2 to Unicode - input = ucs2decode(input); - - // Cache the length - inputLength = input.length; - - // Initialize the state - n = initialN; - delta = 0; - bias = initialBias; - - // Handle the basic code points - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } - - handledCPCount = basicLength = output.length; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string - if it is not empty - with a delimiter - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - for (m = maxInt, j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's state to , - // but guard against overflow - handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - - if (currentValue < n && ++delta > maxInt) { - error('overflow'); - } - - if (currentValue == n) { - // Represent delta as a generalized variable-length integer - for (q = delta, k = base; /* no condition */; k += base) { - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - qMinusT = q - t; - baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - - ++delta; - ++n; - - } - return output.join(''); - } - - /** - * Converts a Punycode string representing a domain name or an email address - * to Unicode. Only the Punycoded parts of the input will be converted, i.e. - * it doesn't matter if you call it on a string that has already been - * converted to Unicode. - * @memberOf punycode - * @param {String} input The Punycoded domain name or email address to - * convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ - function toUnicode(input) { - return mapDomain(input, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); - } - - /** - * Converts a Unicode string representing a domain name or an email address to - * Punycode. Only the non-ASCII parts of the domain name will be converted, - * i.e. it doesn't matter if you call it with a domain that's already in - * ASCII. - * @memberOf punycode - * @param {String} input The domain name or email address to convert, as a - * Unicode string. - * @returns {String} The Punycode representation of the given domain name or - * email address. - */ - function toASCII(input) { - return mapDomain(input, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); - } - - /*--------------------------------------------------------------------------*/ - - /** Define the public API */ - punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '1.3.2', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode - }; - - /** Expose `punycode` */ - // Some AMD build optimizers, like r.js, check for specific condition patterns - // like the following: - if ( - typeof define == 'function' && - typeof define.amd == 'object' && - define.amd - ) { - define('punycode', function() { - return punycode; - }); - } else if (freeExports && freeModule) { - if (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+ - freeModule.exports = punycode; - } else { // in Narwhal or RingoJS v0.7.0- - for (key in punycode) { - punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); - } - } - } else { // in Rhino or a web browser - root.punycode = punycode; - } - -}(this)); diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/logger-ui.html b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/logger-ui.html deleted file mode 100644 index cf4f3dc..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/logger-ui.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - -

-
- - refresh - th -
-
- double-angle-up - times - eraser - filter - - -
-
- -
- -
- - - - -
-
- -
-
-
-
-
-
-   -
- refresh -
-
-
-
-
- reply - lock -
- -
-
- -
-
- - - - - - - - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/main-blocked.html b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/main-blocked.html deleted file mode 100644 index cd3fc2f..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/main-blocked.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - -
exclamation-triangle
-
-

- -
- - - -
-

-

-
- - - - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/manifest.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/manifest.json deleted file mode 100644 index 47b995c..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/manifest.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "author": "Raymond Hill", - "background": { - "page": "background.html" - }, - "browser_action": { - "default_icon": { - "19": "img/browsericons/icon19-19.png" - }, - "default_popup": "popup.html", - "default_title": "uMatrix" - }, - "content_scripts": [ { - "all_frames": true, - "js": [ "/js/vapi-client.js", "/js/contentscript-start.js" ], - "matches": [ "http://*/*", "https://*/*" ], - "run_at": "document_start" - }, { - "all_frames": true, - "js": [ "/js/contentscript.js" ], - "matches": [ "http://*/*", "https://*/*" ], - "run_at": "document_end" - } ], - "default_locale": "en", - "description": "__MSG_extShortDesc__", - "homepage_url": "https://github.com/gorhill/uMatrix/wiki", - "icons": { - "128": "img/icon_128.png", - "16": "img/icon_16.png" - }, - "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA63zAZ0qqFYE9IDsUkNMQQNXlrgTRUsvVPGSRX8VyISj9wPUpqnGNrXy+2aCvI3mIJjI3sCAnnIBnELD5jFz9zi4gZXr6582P/Bsuo0L9+Xp8RGuPhh3yFr0cmP80I7/NjH7DhR6a60apWSmElpn7TylH8qQiZE69rYhIeOpwFK69GXo26xLB/rhUmRV2XvJtYqumOangnG8Qr9OnHr3RFMBT6uLJpwcoRwqnOY9cWvs1Oks6X3+09/koqywCwy9CQZv+IFd3eMJ+7W4qWsejDixa/BExbSt7i6eXT7iekZqQF34l1H4jPSRsTyqBPzgsLyL3cxE/C0WIo8BTKnyU+QIDAQAB", - "manifest_version": 2, - "minimum_chrome_version": "45.0", - "name": "uMatrix", - "options_ui": { - "open_in_tab": true, - "page": "dashboard.html" - }, - "permissions": [ "browsingData", "cookies", "privacy", "storage", "tabs", "unlimitedStorage", "webNavigation", "webRequest", "webRequestBlocking", "\u003Call_urls>" ], - "short_name": "uMatrix", - "update_url": "https://clients2.google.com/service/update2/crx", - "version": "1.4.4" -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/popup.html b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/popup.html deleted file mode 100644 index 94368f6..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/popup.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - - -uMatrix panel - - - - -
- uMatrix -
-
-   - power-off - ellipsis-v - puzzle-piece - lock - reply -
-
- refresh -
-
- reply-all - list-alt -
-
-
- -
-
- -
- - -
- - - - - -
- - -
- - -
- -
- - - - - - - - - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/raw-settings.html b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/raw-settings.html deleted file mode 100644 index bfa7948..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/raw-settings.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - -
- -

info-circle -

-

  -

- - - -
- - - - - - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/settings.html b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/settings.html deleted file mode 100644 index b7f583c..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/settings.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - -uMatrix — Settings - - - - - - - -
- -

-
    -
  • - -
  • - -
      -
    • - -
    -
  • - -
  • - -
  • - - -
-

-
    -
  •  −+ -
  • -
  • - -
  • -
  • - - -
-

-
    -
  • - - question-circle -
    -
  • - - - question-circle -
    - -
  • - -
  • - - - question-circle -
    -
  • - - question-circle -
    -
  • - - question-circle -
    -
  • - - question-circle -
    -
- -
- - - - - - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/user-rules.html b/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/user-rules.html deleted file mode 100644 index 9e5528d..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/ogfcmafjalglgifnmanfmnieipoejdcf/1.4.4_0/user-rules.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - -uMatrix — Your rules - - - - - - - - - - - - -
- -
- -
- - -
-
-
-

-
- - -
-
-
-

-
- - - -
-
-
filter
-
-
-
- -
- - -
- - - - - - - - - - - - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ar/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ar/messages.json deleted file mode 100644 index fa88a1e..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ar/messages.json +++ /dev/null @@ -1,161 +0,0 @@ -{ - "about": { - "message": "عن" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "أضِف نُسخك المُفضلة" - }, - "auto": { - "description": "used in the settings page", - "message": "تلقائي" - }, - "autoPickInstance": { - "message": "اختر النُسخ تلقائيًا" - }, - "block": { - "message": "احجب" - }, - "bookmarksMenu": { - "message": "قائمة العلامات" - }, - "both": { - "description": "used in the settings page", - "message": "الإثنين" - }, - "bypass": { - "message": "تجاوز" - }, - "copied": { - "description": "used in the popup", - "message": "نُسِخ" - }, - "copyOriginal": { - "message": "انسخ الأصل" - }, - "dark": { - "description": "used in the settings page", - "message": "داكن" - }, - "disable": { - "message": "عطِّل" - }, - "embedFrontend": { - "message": "واجهة التضمين (Embed)" - }, - "enable": { - "description": "used in the settings page", - "message": "تفعيل" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "استبعاد من التوجيه" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "تصدير الإعدادات" - }, - "exportSettingsToSync": { - "message": "صدّر الإعدادات للمزامنة" - }, - "extensionDescription": { - "description": "extension description", - "message": "إضافة متصفح تعيد توجيه مواقع مشهورة إلى واجهات أمامية تحترم الخصوصية" - }, - "extensionName": { - "description": "extension name", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "اجلب النُسخ العامة" - }, - "frontend": { - "description": "used in the settings page", - "message": "الواجهة الأمامية" - }, - "general": { - "description": "used in the settings page", - "message": "العامة" - }, - "importSettings": { - "description": "used in the settings page", - "message": "استيراد الإعدادات" - }, - "importSettingsFromSync": { - "message": "استورد الإعدادات من المزامنة" - }, - "light": { - "description": "used in the settings page", - "message": "فاتح" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "فقط المضمنة" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "فقط الغير مضمنة" - }, - "pingInstances": { - "message": "بينج النُسخ" - }, - "redirect": { - "message": "أعد التوجيه" - }, - "redirectGoogle": { - "message": "إعادة توجيه جوجل" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "محاولة إعادة توجيه" - }, - "redirectOnlyInIncognito": { - "message": "أعد التوجيه في وضع التصفح المتخفي فقط" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "إعادة التوجيه إلى الأصلي" - }, - "redirectType": { - "description": "used in the settings page", - "message": "نوع التوجيه" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "إعادة تعيين الإعدادات" - }, - "searchHint": { - "message": "اجعل LibRedirect محرك البحث الافتراضي. لمعرفة كيفية القيام بذلك في متصفحات كروميوم، انقر \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>هنا\u003C/a>." - }, - "searchService": { - "message": "خدمة البحث" - }, - "search_frontend": { - "message": "واجهة البحث" - }, - "service": { - "message": "الخدمة" - }, - "services": { - "message": "الخدمات" - }, - "settings": { - "description": "used in the popup", - "message": "الإعدادات" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "الإظهار في المنبثقة" - }, - "switchInstance": { - "description": "used in the popup", - "message": "بدّل النُسخة" - }, - "theme": { - "description": "used in the settings page", - "message": "السمة" - }, - "unsupportedIframesHandling": { - "message": "معالجة التضمينات غير مدعومة" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/bn/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/bn/messages.json deleted file mode 100644 index 71a216d..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/bn/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "আমাদের সম্পর্কে" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "পছন্দের ইন্সট্যান্স যোগ করো" - }, - "auto": { - "description": "used in the settings page", - "message": "স্বয়ংক্রিয়" - }, - "autoPickInstance": { - "message": "স্বয়ংক্রিয়ভাবে নির্বাচন করো" - }, - "block": { - "message": "Block" - }, - "bookmarksMenu": { - "message": "বুকমার্ক তালিকা" - }, - "both": { - "description": "used in the settings page", - "message": "উভয়" - }, - "bypass": { - "message": "উপেক্ষা করো" - }, - "copied": { - "message": "অনুলিপিত" - }, - "copyOriginal": { - "message": "মূলটা অনুলিপি করো" - }, - "dark": { - "description": "used in the settings page", - "message": "অন্ধকার" - }, - "disable": { - "message": "নিষ্করিয়" - }, - "embedFrontend": { - "message": "সম্মূখাংশ স্থাপন করো" - }, - "enable": { - "description": "used in the settings page", - "message": "সক্রিয়" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "পুনঃনির্দেশ থেকে বাদ দেওয়া" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "পছন্দসমূহ রপ্তানি করো" - }, - "exportSettingsToSync": { - "message": "পছন্দসমূহ সিঙ্কে রপ্তানি করো" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "একটি ওয়েব এক্সটেনশন যা জনপ্রিয় সাইটগুলোকে বিকল্প গোপনীয়তা-বান্ধব ফ্রন্টএন্ড এবং ব্যাকএন্ডে পুনর্নির্দেশ করে" - }, - "extensionName": { - "description": "name of the extension", - "message": "লিবরিডাইরেক্ট" - }, - "fetchPublicInstances": { - "message": "প্রকাশিত সম্মুখাংশ আনো" - }, - "frontend": { - "description": "used in the settings page", - "message": "সামনের অংশ" - }, - "general": { - "description": "used in the settings page", - "message": "সাধারণ" - }, - "importSettings": { - "description": "used in the settings page", - "message": "পছন্দসমূহ আমদানি করো" - }, - "importSettingsFromSync": { - "message": "পছন্দসমূহ সিঙ্ক থেকে আমদানি করো" - }, - "light": { - "description": "used in the settings page", - "message": "সাদা" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "শুধু এমবেডকৃত" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "এমবেডকৃত নয়" - }, - "pingInstances": { - "message": "সার্ভার পিং করো" - }, - "redirect": { - "message": "পুনর্নির্দেশ" - }, - "redirectGoogle": { - "message": "গুগল পুনর্নির্দেশ করো" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "পুনঃনির্দেশ করার চেষ্টা করো" - }, - "redirectOnlyInIncognito": { - "message": "শুধু ইনকগনিটোতে পুনর্নির্দেশ করো" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "আসলটায় পুনঃনির্দেশ করো" - }, - "redirectType": { - "description": "used in the settings page", - "message": "পুনঃনির্দেশ ধরণ" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "পছন্দসমূহ সহজাত অবস্থায় ফিরত নাও" - }, - "searchHint": { - "message": "লিবরিডাইরেক্টকে সহজাত অনুসন্ধান যন্ত্র হিসেবে রাখো। ক্রোমিয়াম ব্রাউজারে এটা করার জন্য \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>এখানে টিপ দাও\u003C/a>।" - }, - "searchService": { - "message": "অনুসন্ধান সেবা" - }, - "search_frontend": { - "message": "অনুসন্ধান সম্মূখাংশ" - }, - "service": { - "message": "Service" - }, - "services": { - "message": "সেবাসমূহ" - }, - "settings": { - "description": "used in the popup", - "message": "পছন্দসমূহ" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "পপআপে দেখাও" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "ইন্সট্যান্স পাল্টাও" - }, - "theme": { - "description": "used in the settings page", - "message": "রঙ" - }, - "unsupportedIframesHandling": { - "message": "এমবেড স্থাপন অসমর্থিত" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/bs/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/bs/messages.json deleted file mode 100644 index d684146..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/bs/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "O" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Dodajte vaše omiljene instance" - }, - "auto": { - "description": "used in the settings page", - "message": "Auto" - }, - "autoPickInstance": { - "message": "Odaberite automatski instancu" - }, - "block": { - "message": "Blokirajte" - }, - "bookmarksMenu": { - "message": "Izbornik obilježaka" - }, - "both": { - "description": "used in the settings page", - "message": "oba" - }, - "bypass": { - "message": "Zaobiđite" - }, - "copied": { - "message": "Kopirano" - }, - "copyOriginal": { - "message": "Kopirajte original" - }, - "dark": { - "description": "used in the settings page", - "message": "Mračna" - }, - "disable": { - "message": "Isključite" - }, - "embedFrontend": { - "message": "Ugradite sučelje" - }, - "enable": { - "description": "used in the settings page", - "message": "Omogući" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Isključeno iz preusmjeravanja" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "Izvozne Postavke" - }, - "exportSettingsToSync": { - "message": "Izvezite postavke za sinkronizaciju" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "Web proširnica koja preusmjerava poznate web stranice na prema alternativnim sučeljima i pozadinama prilagođenim privatnosti" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Dohvatite javne instance" - }, - "frontend": { - "description": "used in the settings page", - "message": "Sučelje" - }, - "general": { - "description": "used in the settings page", - "message": "Općenito" - }, - "importSettings": { - "description": "used in the settings page", - "message": "Uvozne Postavke" - }, - "importSettingsFromSync": { - "message": "Uvezite postavke iz sinkronizacije" - }, - "light": { - "description": "used in the settings page", - "message": "Svjetla" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "samo ugrađeno" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "samo neugrađeno" - }, - "pingInstances": { - "message": "Testirajte instance" - }, - "redirect": { - "message": "Preusmjerite" - }, - "redirectGoogle": { - "message": "Preusmjerite Google" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Pokušajte preusmjeriti" - }, - "redirectOnlyInIncognito": { - "message": "Preusmjerite samo u inkognito" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Preusmjerite prema originalnoj" - }, - "redirectType": { - "description": "used in the settings page", - "message": "Vrsta Preusmjeravanja" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "Obnovite Postavke" - }, - "searchHint": { - "message": "Postavite LibRedirect kao standardni tražionik. \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>Ovdje\u003C/a> pogledajte kako se to radi u Kromijum mrežnom pregledniku." - }, - "searchService": { - "message": "Tražite uslužnik" - }, - "search_frontend": { - "message": "Tražite sučelje" - }, - "service": { - "message": "Service" - }, - "services": { - "message": "Usluge" - }, - "settings": { - "description": "used in the popup", - "message": "Podešavanja" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Prikaži u skočnom prozoru" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "Prebaci instancu" - }, - "theme": { - "description": "used in the settings page", - "message": "Tema" - }, - "unsupportedIframesHandling": { - "message": "Nepodržano rukovanje iframeovima" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/cs/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/cs/messages.json deleted file mode 100644 index 28e5ee2..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/cs/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "O rozšíření" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Přidejte své oblíbené instance" - }, - "auto": { - "description": "used in the settings page", - "message": "Auto" - }, - "autoPickInstance": { - "message": "Automaticky zvolit instanci" - }, - "block": { - "message": "Blokovat" - }, - "bookmarksMenu": { - "message": "Nabídka záložek" - }, - "both": { - "description": "used in the settings page", - "message": "oba" - }, - "bypass": { - "message": "Obejít" - }, - "copied": { - "message": "Zkopírováno" - }, - "copyOriginal": { - "message": "Kopírovat originál" - }, - "dark": { - "description": "used in the settings page", - "message": "Tmavé" - }, - "disable": { - "message": "Zakázat" - }, - "embedFrontend": { - "message": "Vložený frontend" - }, - "enable": { - "description": "used in the settings page", - "message": "Povolit" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Vyloučeno z přesměrování" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "Exportovat nastavení" - }, - "exportSettingsToSync": { - "message": "Exportovat nastavení do synchronizace" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "Webové rozšíření, které přesměrovává oblíbené weby na alternativní ‘frontends‘ a ‘backends‘ respektující soukromí" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Načíst veřejné instance" - }, - "frontend": { - "description": "used in the settings page", - "message": "Frontend" - }, - "general": { - "description": "used in the settings page", - "message": "Obecné" - }, - "importSettings": { - "description": "used in the settings page", - "message": "Importovat nastavení" - }, - "importSettingsFromSync": { - "message": "Importovat nastavení ze synchronizace" - }, - "light": { - "description": "used in the settings page", - "message": "Světlé" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "pouze vložené" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "pouze nevložené" - }, - "pingInstances": { - "message": "Otestovat odezvu instancí" - }, - "redirect": { - "message": "Přesměrovat" - }, - "redirectGoogle": { - "message": "Přesměrovat Google" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Pokusit se přesměrovat" - }, - "redirectOnlyInIncognito": { - "message": "Přesměrovat pouze v anonymním okně" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Přesměrovat na originál" - }, - "redirectType": { - "description": "used in the settings page", - "message": "Typ přesměrování" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "Obnovit nastavení" - }, - "searchHint": { - "message": "Nastavte LibRedirect jako výchozí vyhledávač. Návod pro Chromium prohlížeče naleznete \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>zde\u003C/a>." - }, - "searchService": { - "message": "Služba vyhledávání" - }, - "search_frontend": { - "message": "Hledat frontend" - }, - "service": { - "message": "Služba" - }, - "services": { - "message": "Služby" - }, - "settings": { - "description": "used in the popup", - "message": "Nastavení" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Zobrazit ve vyskakovacím okně" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "Přepnout instanci" - }, - "theme": { - "description": "used in the settings page", - "message": "Téma" - }, - "unsupportedIframesHandling": { - "message": "Nepodporovaná manipulace s iframe" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/de/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/de/messages.json deleted file mode 100644 index 8247e30..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/de/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "Über" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Eigene Instanz hinzufügen" - }, - "auto": { - "description": "used in the settings page", - "message": "System" - }, - "autoPickInstance": { - "message": "Automatisch auswählen Instanz" - }, - "block": { - "message": "Block" - }, - "bookmarksMenu": { - "message": "Lesezeichen-Menü" - }, - "both": { - "description": "used in the settings page", - "message": "beides" - }, - "bypass": { - "message": "Umgehen" - }, - "copied": { - "message": "Kopiert" - }, - "copyOriginal": { - "message": "Original kopieren" - }, - "dark": { - "description": "used in the settings page", - "message": "Dunkel" - }, - "disable": { - "message": "Deaktivieren" - }, - "embedFrontend": { - "message": "Frontend einbetten" - }, - "enable": { - "description": "used in the settings page", - "message": "Aktivieren" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Vom Umleiten ausschließen" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "Einstellungen exportieren" - }, - "exportSettingsToSync": { - "message": "Einstellungen zur Synchronisierung exportieren" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "Eine Erweiterung, die beliebte Websites auf alternative, datenschutzfreundliche Frontends und Backends umleitet" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Abrufen öffentlicher Instanzen" - }, - "frontend": { - "description": "used in the settings page", - "message": "Frontend" - }, - "general": { - "description": "used in the settings page", - "message": "Allgemein" - }, - "importSettings": { - "description": "used in the settings page", - "message": "Einstellungen importieren" - }, - "importSettingsFromSync": { - "message": "Einstellungen aus Sync importieren" - }, - "light": { - "description": "used in the settings page", - "message": "Hell" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "nur eingebettet" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "nur nicht eingebettet" - }, - "pingInstances": { - "message": "Instanzen anpingen" - }, - "redirect": { - "message": "Umleiten" - }, - "redirectGoogle": { - "message": "Google umleiten" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Versuchen umzuleiten" - }, - "redirectOnlyInIncognito": { - "message": "Nur in Inkognito umleiten" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Zur Originalseite umleiten" - }, - "redirectType": { - "description": "used in the settings page", - "message": "Art der Umleitung" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "Einstellungen zurücksetzen" - }, - "searchHint": { - "message": "Legen Sie LibRedirect als Standard-Suchmaschine fest. Wie man das in Chromium-Browsern macht, erfahren Sie \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>hier\u003C/a>." - }, - "searchService": { - "message": "Suche Dienst" - }, - "search_frontend": { - "message": "Suche Frontend" - }, - "service": { - "message": "Service" - }, - "services": { - "message": "Dienstleistungen" - }, - "settings": { - "description": "used in the popup", - "message": "Einstellungen" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Im Pop-up-Fenster anzeigen" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "Instanz wechseln" - }, - "theme": { - "description": "used in the settings page", - "message": "Farbschema" - }, - "unsupportedIframesHandling": { - "message": "Nicht unterstützte Einbettungenbehandlung" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/delete.py b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/delete.py deleted file mode 100644 index d5360c9..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/delete.py +++ /dev/null @@ -1,75 +0,0 @@ -import json - - -# langs = ['bs', 'cs', 'de', 'es', 'fr', 'gl', 'hr', 'id', 'it', 'ja', 'ko', -# 'nb_NO', 'nl', 'pl', 'pt', 'pt_BR', 'ro', 'ru', 'sr', 'tr', 'uk', 'vi', 'zh_Hans'] -en_json = {} - -with open('./en/messages.json') as data: - en_json = json.load(data) - -keys = ['extensionName', - 'extensionDescription', - 'general', - 'services', - 'service', - 'theme', - 'auto', - 'light', - 'dark', - 'excludeFromRedirecting', - 'fetchPublicInstances', - 'importSettings', - 'exportSettings', - 'exportSettingsToSync', - 'importSettingsFromSync', - 'resetSettings', - 'enable', - 'disable', - 'showInPopup', - 'frontend', - 'redirectType', - 'both', - 'onlyEmbedded', - 'onlyNotEmbedded', - 'addYourFavoriteInstances', - 'switchInstance', - 'copyOriginal', - 'copied', - 'settings', - 'about', - 'redirectToOriginal', - 'redirectLink', - 'redirectOnlyInIncognito', - 'bookmarksMenu', - 'showInPopup', - 'unsupportedIframesHandling', - 'bypass', - 'block', - 'searchHint', - 'excludeFromRedirecting', - 'pingInstances', - 'redirect', - 'autoPickInstance', - 'redirectGoogle', - 'search_frontend', - 'searchService', - 'embedFrontend', - ] - -tmp = {} - -for key in en_json: - if key in keys: - tmp[key] = en_json[key] - -en_json = tmp - -with open('en/messages.json', 'w') as outfile: - outfile.write( - json.dumps( - en_json, - ensure_ascii=False, - indent=4 - ) - ) diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/en/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/en/messages.json deleted file mode 100644 index 4c4d6fe..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/en/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "About" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Add your favorite instances" - }, - "auto": { - "description": "used in the settings page", - "message": "Auto" - }, - "autoPickInstance": { - "message": "Auto-pick Instance" - }, - "block": { - "message": "Block" - }, - "bookmarksMenu": { - "message": "Bookmarks menu" - }, - "both": { - "description": "used in the settings page", - "message": "both" - }, - "bypass": { - "message": "Bypass" - }, - "copied": { - "message": "Copied" - }, - "copyOriginal": { - "message": "Copy Original" - }, - "dark": { - "description": "used in the settings page", - "message": "Dark" - }, - "disable": { - "message": "Disable" - }, - "embedFrontend": { - "message": "Embed Frontend" - }, - "enable": { - "description": "used in the settings page", - "message": "Enable" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Excluded from redirecting" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "Export Settings" - }, - "exportSettingsToSync": { - "message": "Export Settings to Sync" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "A web extension that redirects popular sites to alternative privacy-friendly frontends and backends" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Fetch public instances" - }, - "frontend": { - "description": "used in the settings page", - "message": "Frontend" - }, - "general": { - "description": "used in the settings page", - "message": "General" - }, - "importSettings": { - "description": "used in the settings page", - "message": "Import Settings" - }, - "importSettingsFromSync": { - "message": "Import Settings from Sync" - }, - "light": { - "description": "used in the settings page", - "message": "Light" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "only embedded" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "only not embedded" - }, - "pingInstances": { - "message": "Ping Instances" - }, - "redirect": { - "message": "Redirect" - }, - "redirectGoogle": { - "message": "Redirect Google" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Attempt to redirect" - }, - "redirectOnlyInIncognito": { - "message": "Redirect Only in Incognito" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Redirect to original" - }, - "redirectType": { - "description": "used in the settings page", - "message": "Redirect Type" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "Reset Settings" - }, - "searchHint": { - "message": "Set LibRedirect as Default Search Engine. For how to do in chromium browsers, click \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>here\u003C/a>." - }, - "searchService": { - "message": "Search Service" - }, - "search_frontend": { - "message": "Search Frontend" - }, - "service": { - "message": "Service" - }, - "services": { - "message": "Services" - }, - "settings": { - "description": "used in the popup", - "message": "Settings" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Show in popup" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "Switch Instance" - }, - "theme": { - "description": "used in the settings page", - "message": "Theme" - }, - "unsupportedIframesHandling": { - "message": "Unsupported embeds handling" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/eo/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/eo/messages.json deleted file mode 100644 index 885c780..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/eo/messages.json +++ /dev/null @@ -1,145 +0,0 @@ -{ - "extensionName": { - "message": "LibRedirect", - "description": "name of the extension" - }, - "extensionDescription": { - "message": "A web extension that redirects popular sites to alternative privacy-friendly frontends and backends", - "description": "description of the extension" - }, - "switchInstance": { - "message": "Switch Instance", - "description": "used in manifest.json as shortcut description" - }, - "settings": { - "message": "Settings", - "description": "used in the popup" - }, - "general": { - "message": "General", - "description": "used in the settings page" - }, - "theme": { - "message": "Theme", - "description": "used in the settings page" - }, - "light": { - "message": "Light", - "description": "used in the settings page" - }, - "dark": { - "message": "Dark", - "description": "used in the settings page" - }, - "auto": { - "message": "Auto", - "description": "used in the settings page" - }, - "excludeFromRedirecting": { - "message": "Excluded from redirecting", - "description": "used in the settings page" - }, - "importSettings": { - "message": "Import Settings", - "description": "used in the settings page" - }, - "exportSettings": { - "message": "Export Settings", - "description": "used in the settings page" - }, - "resetSettings": { - "message": "Reset Settings", - "description": "used in the settings page" - }, - "enable": { - "message": "Enable", - "description": "used in the settings page" - }, - "showInPopup": { - "message": "Show in popup", - "description": "used in the settings page" - }, - "frontend": { - "message": "Frontend", - "description": "used in the settings page" - }, - "redirectType": { - "message": "Redirect Type", - "description": "used in the settings page" - }, - "both": { - "message": "both", - "description": "used in the settings page" - }, - "onlyEmbedded": { - "message": "only embedded", - "description": "used in the settings page" - }, - "onlyNotEmbedded": { - "message": "only not embedded", - "description": "used in the settings page" - }, - "addYourFavoriteInstances": { - "message": "Add your favorite instances", - "description": "used in the settings page" - }, - "copyOriginal": { - "message": "Copy Original" - }, - "copied": { - "message": "Copied" - }, - "redirectToOriginal": { - "message": "Redirect to original", - "description": "Used in context menus when right clicking on a page/tab" - }, - "redirectLink": { - "message": "Attempt to redirect", - "description": "Used in context menus when right clicking on a hyperlink" - }, - "about": { - "message": "About" - }, - "unsupportedIframesHandling": { - "message": "Unsupported embeds handling" - }, - "fetchPublicInstances": { - "message": "Fetch public instances" - }, - "disable": { - "message": "Disable" - }, - "pingInstances": { - "message": "Ping Instances" - }, - "exportSettingsToSync": { - "message": "Export Settings to Sync" - }, - "importSettingsFromSync": { - "message": "Import Settings from Sync" - }, - "services": { - "message": "Services" - }, - "service": { - "message": "Service" - }, - "bookmarksMenu": { - "message": "Bookmarks menu" - }, - "redirectOnlyInIncognito": { - "message": "Redirect Only in Incognito" - }, - "bypass": { - "message": "Bypass" - }, - "block": { - "message": "Block" - }, - "searchHint": { - "message": "Set LibRedirect as Default Search Engine. For how to do in chromium browsers, click here." - }, - "redirect": { - "message": "Redirect" - } -} \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/es/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/es/messages.json deleted file mode 100644 index 131e076..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/es/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "Acerca de" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Añade tus instancias preferidas" - }, - "auto": { - "description": "used in the settings page", - "message": "Auto" - }, - "autoPickInstance": { - "message": "Selección automática de instancias" - }, - "block": { - "message": "Bloquear" - }, - "bookmarksMenu": { - "message": "Menú de marcadores" - }, - "both": { - "description": "used in the settings page", - "message": "ambos" - }, - "bypass": { - "message": "Bypass" - }, - "copied": { - "message": "Copiado" - }, - "copyOriginal": { - "message": "Copiar original" - }, - "dark": { - "description": "used in the settings page", - "message": "Oscuro" - }, - "disable": { - "message": "Desactivar" - }, - "embedFrontend": { - "message": "Integrar Frontend" - }, - "enable": { - "description": "used in the settings page", - "message": "Activar" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Excluidos del redireccionamiento" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "Exportar Ajustes" - }, - "exportSettingsToSync": { - "message": "Exportar configuraciones para sincronizar" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "Una extensión web que redirige sitios populares a frontends y backends alternativos que respetan la privacidad" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Recuperar las instancias públicas" - }, - "frontend": { - "description": "used in the settings page", - "message": "Interfaz" - }, - "general": { - "description": "used in the settings page", - "message": "General" - }, - "importSettings": { - "description": "used in the settings page", - "message": "Importar Ajustes" - }, - "importSettingsFromSync": { - "message": "Importar configuraciones para sincronizar" - }, - "light": { - "description": "used in the settings page", - "message": "Claro" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "solo incrustados" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "solo los no incrustados" - }, - "pingInstances": { - "message": "Prueba de velocidad de las instancias" - }, - "redirect": { - "message": "Redirigir" - }, - "redirectGoogle": { - "message": "Redirigir a Google" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Intento de redirección" - }, - "redirectOnlyInIncognito": { - "message": "Redirigir solo en modo incógnito" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Redirigir al original" - }, - "redirectType": { - "description": "used in the settings page", - "message": "Tipo de Redirección" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "Restablecer Ajustes" - }, - "searchHint": { - "message": "Establece LibRedirect como motor de búsqueda predeterminado. Para saber cómo hacerlo en los navegadores Chromium, haz clic \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>aquí\u003C/a>." - }, - "searchService": { - "message": "Servicio de búsqueda" - }, - "search_frontend": { - "message": "Interfaz de búsqueda" - }, - "service": { - "message": "Service" - }, - "services": { - "message": "Servicios" - }, - "settings": { - "description": "used in the popup", - "message": "Ajustes" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Mostrar en ventanas emergentes" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "Cambiar instancia" - }, - "theme": { - "description": "used in the settings page", - "message": "Tema" - }, - "unsupportedIframesHandling": { - "message": "Manejo de incrustaciones de código no soportado" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/fa/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/fa/messages.json deleted file mode 100644 index 253f7d7..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/fa/messages.json +++ /dev/null @@ -1,137 +0,0 @@ -{ - "about": { - "message": "درباره" - }, - "addYourFavoriteInstances": { - "message": "افزودن نمونه‌های مورد پسند شما" - }, - "auto": { - "message": "خودکار" - }, - "autoPickInstance": { - "message": "گزینش خودکار نمونه" - }, - "block": { - "message": "مسدود کردن" - }, - "bookmarksMenu": { - "message": "فهرست نشان شده‌ها" - }, - "both": { - "message": "هر دو" - }, - "bypass": { - "message": "دور زدن" - }, - "copied": { - "message": "رونویسی شد" - }, - "copyOriginal": { - "message": "رونویسی اصلی" - }, - "dark": { - "message": "تیره" - }, - "disable": { - "message": "غیر‌فعال کردن" - }, - "embedFrontend": { - "message": "پیشگاه جاسازی‌شده" - }, - "enable": { - "message": "فعال‌کردن" - }, - "excludeFromRedirecting": { - "message": "چشم‌پوشی از هدایت کردن" - }, - "exportSettings": { - "message": "خروجی گرفتن از تنظیمات" - }, - "exportSettingsToSync": { - "message": "خروجی گرفتن از تنظیمات برای همگام‌سازی" - }, - "extensionDescription": { - "message": "یک افزونه مرورگر که وبگاه های محبوب را به نمونه‌های دوست‌دار حریم خصوصی هدایت میکند" - }, - "extensionName": { - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "دریافت نمونه‌های عمومی" - }, - "frontend": { - "message": "پیشگاه" - }, - "general": { - "message": "عمومی" - }, - "importSettings": { - "message": "واردکردن تنظیمات" - }, - "importSettingsFromSync": { - "message": "واردکردن تنظیمات برای همگام‌سازی" - }, - "light": { - "message": "روشن" - }, - "onlyEmbedded": { - "message": "تنها جاسازی شده" - }, - "onlyNotEmbedded": { - "message": "تنها جاسازی نشده" - }, - "pingInstances": { - "message": "پینگ گرفتن از نمونه‌ها" - }, - "redirect": { - "message": "هدایت کردن" - }, - "redirectGoogle": { - "message": "هدایت کردن گوگل" - }, - "redirectLink": { - "message": "تلاش برای هدایت" - }, - "redirectOnlyInIncognito": { - "message": "تنها هدایت کردن در حالت خصوصی" - }, - "redirectToOriginal": { - "message": "هدایت به اصلی" - }, - "redirectType": { - "message": "نوع هدایت" - }, - "resetSettings": { - "message": "بازنشانی تنظیمات" - }, - "searchHint": { - "message": "LIBREDIRECT را به عنوان موتور جستجوی پیش‌فرض تنظیم کنید. برای نحوه انجام در مرورگرهای کروم ، روی \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>اینجا\u003C/a> ضربه بزنید." - }, - "searchService": { - "message": "جستجو سامانه" - }, - "search_frontend": { - "message": "جستجو پیشگاه" - }, - "service": { - "message": "سامانه" - }, - "services": { - "message": "سامانه‌ها" - }, - "settings": { - "message": "تنظیمات" - }, - "showInPopup": { - "message": "نمایش در بازشونده" - }, - "switchInstance": { - "message": "جایگزینی نمونه" - }, - "theme": { - "message": "پوسته" - }, - "unsupportedIframesHandling": { - "message": "مدیریت جاسازی‌های پشتیبانی نشده" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/fi/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/fi/messages.json deleted file mode 100644 index c647c9e..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/fi/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "Tietoja" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Lisää suosikki-instanssisi" - }, - "auto": { - "description": "used in the settings page", - "message": "Automaattinen" - }, - "autoPickInstance": { - "message": "Automaattisesti valitse instanssi" - }, - "block": { - "message": "Estä" - }, - "bookmarksMenu": { - "message": "Kirjanmerkkipalkki" - }, - "both": { - "description": "used in the settings page", - "message": "molemmat" - }, - "bypass": { - "message": "Ohita" - }, - "copied": { - "message": "Kopioitu" - }, - "copyOriginal": { - "message": "Kopioi alkuperäinen" - }, - "dark": { - "description": "used in the settings page", - "message": "Tumma" - }, - "disable": { - "message": "Poista käytöstä" - }, - "embedFrontend": { - "message": "Upota käyttöliittymä" - }, - "enable": { - "description": "used in the settings page", - "message": "Ota käyttöön" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Poissuljettu uudelleenohjaukselta" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "Vie asetukset" - }, - "exportSettingsToSync": { - "message": "Vie asetukset Sync:iin" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "Selainlaajennus, joka uudelleenohjaa suositut sivustot vaihtoehtoisiin yksityisyysystävällisiin käyttöliittymiin" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Hae julkiset instanssit" - }, - "frontend": { - "description": "used in the settings page", - "message": "Käyttöliittymä" - }, - "general": { - "description": "used in the settings page", - "message": "Yleiset" - }, - "importSettings": { - "description": "used in the settings page", - "message": "Tuo asetukset" - }, - "importSettingsFromSync": { - "message": "Tuo asetukset Sync:istä" - }, - "light": { - "description": "used in the settings page", - "message": "Vaalea" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "vain upotetut" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "vain muut kuin upotetut" - }, - "pingInstances": { - "message": "Kokeile yhteyttä instansseihin" - }, - "redirect": { - "message": "Uudelleenohjaa" - }, - "redirectGoogle": { - "message": "Uudelleenohjaa Googleen" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Yritä uudelleenohjata" - }, - "redirectOnlyInIncognito": { - "message": "Uudelleenohjaa vain yksityisikkunassa" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Uudelleenohjaa alkuperäiseen" - }, - "redirectType": { - "description": "used in the settings page", - "message": "Uudelleenohjauksen tyyppi" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "Nollaa asetukset" - }, - "searchHint": { - "message": "Aseta LibRedirect oletushakukoneeksi. Ohjeita varten chromium-selaimissa, paina \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>tästä\u003C/a>." - }, - "searchService": { - "message": "Hae palveluja" - }, - "search_frontend": { - "message": "Hae käyttöliittymää" - }, - "service": { - "message": "Palvelu" - }, - "services": { - "message": "Palvelut" - }, - "settings": { - "description": "used in the popup", - "message": "Asetukset" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Näytä ponnahdusvalikossa" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "Vaihda instanssi" - }, - "theme": { - "description": "used in the settings page", - "message": "Teema" - }, - "unsupportedIframesHandling": { - "message": "Tukemattomien upotusten käsittely" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/fil/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/fil/messages.json deleted file mode 100644 index a2d2457..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/fil/messages.json +++ /dev/null @@ -1,137 +0,0 @@ -{ - "about": { - "message": "Tungkol sa" - }, - "addYourFavoriteInstances": { - "message": "Idagdag ang iyong mga paboritong instansya" - }, - "auto": { - "message": "Awto" - }, - "autoPickInstance": { - "message": "Awtomatikong piliin ang Instansya" - }, - "block": { - "message": "I-block" - }, - "bookmarksMenu": { - "message": "Menu ng mga bookmark" - }, - "both": { - "message": "pareho" - }, - "bypass": { - "message": "I-bypass" - }, - "copied": { - "message": "Kinopya" - }, - "copyOriginal": { - "message": "Kopyahin ang Orihinal" - }, - "dark": { - "message": "Madilim" - }, - "disable": { - "message": "I-disable" - }, - "embedFrontend": { - "message": "Frontend ng Embed" - }, - "enable": { - "message": "I-enable" - }, - "excludeFromRedirecting": { - "message": "Hindi kasama mula sa pag-redirect" - }, - "exportSettings": { - "message": "I-export ang mga setting" - }, - "exportSettingsToSync": { - "message": "I-export ang Mga Setting para Mag-sync" - }, - "extensionDescription": { - "message": "Isang web extension na nagre-redirect ng mga popular na site sa mga alternatibong privacy-friendly na frontend at backend" - }, - "extensionName": { - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Kunin ang mga publikong instansya" - }, - "frontend": { - "message": "Frontend" - }, - "general": { - "message": "General" - }, - "importSettings": { - "message": "I-import ang mga setting" - }, - "importSettingsFromSync": { - "message": "I-import ang Mga Setting mula sa Sync" - }, - "light": { - "message": "Maliwanag" - }, - "onlyEmbedded": { - "message": "embedded lamang" - }, - "onlyNotEmbedded": { - "message": "mga hindi embedded lamang" - }, - "pingInstances": { - "message": "I-ping ang Mga Instansya" - }, - "redirect": { - "message": "I-redirect" - }, - "redirectGoogle": { - "message": "I-redirect ang Google" - }, - "redirectLink": { - "message": "Subukang mag-redirect" - }, - "redirectOnlyInIncognito": { - "message": "Mag-redirect lamang sa Incognito" - }, - "redirectToOriginal": { - "message": "Mag-redirect sa orihinal" - }, - "redirectType": { - "message": "Uri ng Redirect" - }, - "resetSettings": { - "message": "I-reset ang mga setting" - }, - "searchHint": { - "message": "Itakda ang LibRedirect bilang Default na Search Engine. Para sa kung paano gawin sa mga Chromium browser, mag-click \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>dito\u003C/a>." - }, - "searchService": { - "message": "Serbisyo ng Paghahanap" - }, - "search_frontend": { - "message": "Frontend ng Paghahanap" - }, - "service": { - "message": "Serbisyo" - }, - "services": { - "message": "Mga Serbisyo" - }, - "settings": { - "message": "Mga Setting" - }, - "showInPopup": { - "message": "Ipakita sa popup" - }, - "switchInstance": { - "message": "Palitan ang Instansya" - }, - "theme": { - "message": "Tema" - }, - "unsupportedIframesHandling": { - "message": "Pag-handle sa mga hindi sinusuportahang embed" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/filter.py b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/filter.py deleted file mode 100644 index b6a30f0..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/filter.py +++ /dev/null @@ -1,60 +0,0 @@ -import json - - -langs = [ - 'ar', - 'bn', - 'bs', - 'cs', - 'de', - 'eo', - 'es', - 'fi', - 'fr', - 'gl', - 'hi', - 'hr', - 'id', - 'it', - 'ja', - 'jv', - 'ko', - 'nb_NO', - 'nl', - 'pl', - 'pt', - 'pt_BR', - 'ro', - 'ru', - 'sr', - 'tr', - 'uk', - 'vi', - 'zh_Hans', - 'zh_Hant', -] -en_json = {} - -with open('src/_locales/en/messages.json') as data: - en_json = json.load(data) - - - -for lang in langs: - lang_json = {} - with open('src/_locales/'+lang+'/messages.json') as data: - lang_json = json.load(data) - lang_json_new = {} - for key in en_json: - if key in lang_json: - lang_json_new[key] = lang_json[key] - else: - lang_json_new[key] = en_json[key] - with open('src/_locales/'+lang+'/messages.json', 'w') as outfile: - outfile.write( - json.dumps( - lang_json_new, - ensure_ascii=False, - indent=4 - ) - ) diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/fr/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/fr/messages.json deleted file mode 100644 index aefdab4..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/fr/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "À propos" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Ajoutez vos instances favorites" - }, - "auto": { - "description": "used in the settings page", - "message": "Auto" - }, - "autoPickInstance": { - "message": "Choix d'instance automatique" - }, - "block": { - "message": "Bloquer" - }, - "bookmarksMenu": { - "message": "Menu des marque-pages" - }, - "both": { - "description": "used in the settings page", - "message": "les deux" - }, - "bypass": { - "message": "Laisser tel quel" - }, - "copied": { - "message": "Copié" - }, - "copyOriginal": { - "message": "Copier l'original" - }, - "dark": { - "description": "used in the settings page", - "message": "Sombre" - }, - "disable": { - "message": "Désactiver" - }, - "embedFrontend": { - "message": "Interface des éléments embarqués" - }, - "enable": { - "description": "used in the settings page", - "message": "Activer" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Exclus de la redirection" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "Exporter les paramètres" - }, - "exportSettingsToSync": { - "message": "Exporter les paramètres vers Sync" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "Une extension web qui redirige les sites populaires vers des interfaces et des serveurs alternatifs respectueux de la vie privée" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Récupérer des instances publiques" - }, - "frontend": { - "description": "used in the settings page", - "message": "Interface" - }, - "general": { - "description": "used in the settings page", - "message": "Général" - }, - "importSettings": { - "description": "used in the settings page", - "message": "Importer les paramètres" - }, - "importSettingsFromSync": { - "message": "Importer les paramètres depuis Sync" - }, - "light": { - "description": "used in the settings page", - "message": "Clair" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "éléments embarqués seulement" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "tout sauf éléments embarqués" - }, - "pingInstances": { - "message": "Envoyer un ping aux instances" - }, - "redirect": { - "message": "Rediriger" - }, - "redirectGoogle": { - "message": "Rediriger Google" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Essayer de rediriger" - }, - "redirectOnlyInIncognito": { - "message": "Rediriger seulement en Mode Incognito" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Rediriger vers l'original" - }, - "redirectType": { - "description": "used in the settings page", - "message": "Type de redirection" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "Réinitialiser les paramètres" - }, - "searchHint": { - "message": "Paramétrez LibRedirect pour être votre moteur de recherche par défaut. Pour savoir comment faire sur un navigateur chromium, cliquez \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>ici\u003C/a>." - }, - "searchService": { - "message": "Chercher un service" - }, - "search_frontend": { - "message": "Chercher une interface" - }, - "service": { - "message": "Service" - }, - "services": { - "message": "Services" - }, - "settings": { - "description": "used in the popup", - "message": "Paramètres" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Afficher dans la fenêtre contextuelle de l'extension" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "Changer d'instance" - }, - "theme": { - "description": "used in the settings page", - "message": "Thème" - }, - "unsupportedIframesHandling": { - "message": "Gestion des éléments embarqués non-pris-en-charge" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/gl/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/gl/messages.json deleted file mode 100644 index 7f44b2b..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/gl/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "extensionName": { - "message": "LibRedirect", - "description": "name of the extension" - }, - "extensionDescription": { - "message": "Un complemento do navegador que redirixe o tráfico cara alternativas amigables e respetuosas", - "description": "description of the extension" - }, - "switchInstance": { - "message": "Cambiar de Instancia", - "description": "used in manifest.json as shortcut description" - }, - "settings": { - "message": "Axustes", - "description": "used in the popup" - }, - "general": { - "message": "Xeral", - "description": "used in the settings page" - }, - "theme": { - "message": "Decorado", - "description": "used in the settings page" - }, - "light": { - "message": "Claro", - "description": "used in the settings page" - }, - "dark": { - "message": "Escuro", - "description": "used in the settings page" - }, - "auto": { - "message": "Auto", - "description": "used in the settings page" - }, - "excludeFromRedirecting": { - "message": "Excluído da redirección", - "description": "used in the settings page" - }, - "importSettings": { - "message": "Importar Axustes", - "description": "used in the settings page" - }, - "exportSettings": { - "message": "Exportar Axustes", - "description": "used in the settings page" - }, - "resetSettings": { - "message": "Restablecer Axustes", - "description": "used in the settings page" - }, - "enable": { - "message": "Activar", - "description": "used in the settings page" - }, - "showInPopup": { - "message": "Mostrar nunha xanela emerxente", - "description": "used in the settings page" - }, - "frontend": { - "message": "Interface", - "description": "used in the settings page" - }, - "redirectType": { - "message": "Tipo de Redirección", - "description": "used in the settings page" - }, - "both": { - "message": "ambos", - "description": "used in the settings page" - }, - "onlyEmbedded": { - "message": "só incrustados", - "description": "used in the settings page" - }, - "onlyNotEmbedded": { - "message": "só non incrustados", - "description": "used in the settings page" - }, - "addYourFavoriteInstances": { - "message": "Engade as túas instancias favoritas", - "description": "used in the settings page" - }, - "copyOriginal": { - "message": "Copiar Orixinal" - }, - "copied": { - "message": "Copiouse" - }, - "redirectToOriginal": { - "message": "Ir ao orixinal", - "description": "Used in context menus when right clicking on a page/tab" - }, - "redirectLink": { - "message": "Tenta redirixir", - "description": "Used in context menus when right clicking on a hyperlink" - }, - "about": { - "message": "Sobre" - }, - "unsupportedIframesHandling": { - "message": "Xestión de incrustacións sen soporte" - }, - "fetchPublicInstances": { - "message": "Obter instancias públicas" - }, - "disable": { - "message": "Desactivar" - }, - "pingInstances": { - "message": "Comprobar Instancias" - }, - "exportSettingsToSync": { - "message": "Exportar Axustes a Sincr." - }, - "importSettingsFromSync": { - "message": "Importar Axustes de Sincr" - }, - "services": { - "message": "Servizos" - }, - "service": { - "message": "Service" - }, - "bookmarksMenu": { - "message": "Menú dos marcadores" - }, - "redirectOnlyInIncognito": { - "message": "Redirect só en Incógnito" - }, - "bypass": { - "message": "Omitir" - }, - "block": { - "message": "Block" - }, - "searchHint": { - "message": "Establece a LibRedirect como Motor de Busca predeterminado. Para facelo nos navegadores chromium, preme aquí." - }, - "redirect": { - "message": "Redirect" - }, - "autoPickInstance": { - "message": "Selecc. automática instancia" - }, - "redirectGoogle": { - "message": "Redirect a Google" - }, - "search_frontend": { - "message": "Buscar Interface Alt." - }, - "searchService": { - "message": "Buscar Servizo" - }, - "embedFrontend": { - "message": "Incrustar Interface" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/hi/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/hi/messages.json deleted file mode 100644 index 2c63c08..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/hi/messages.json +++ /dev/null @@ -1,2 +0,0 @@ -{ -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/hr/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/hr/messages.json deleted file mode 100644 index 346e030..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/hr/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "O" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Dodaj svoje omiljene instance" - }, - "auto": { - "description": "used in the settings page", - "message": "Automatski" - }, - "autoPickInstance": { - "message": "Odaberi instancu automatski" - }, - "block": { - "message": "Blokiraj" - }, - "bookmarksMenu": { - "message": "Izbornik zabilješki" - }, - "both": { - "description": "used in the settings page", - "message": "oboje" - }, - "bypass": { - "message": "Zaobiđi" - }, - "copied": { - "message": "Kopirano" - }, - "copyOriginal": { - "message": "Kopiraj original" - }, - "dark": { - "description": "used in the settings page", - "message": "Tamna" - }, - "disable": { - "message": "Deaktiviraj" - }, - "embedFrontend": { - "message": "Ugradi sučelje" - }, - "enable": { - "description": "used in the settings page", - "message": "Aktiviraj" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Isključeno iz preusmjeravanja" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "Izvezi postavke" - }, - "exportSettingsToSync": { - "message": "Izvezi postavke za sinkronizaciju" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "Web proširenje koje preusmjerava popularne web stranice na alternativna sučelja i pozadinske sustave prilagođene privatnosti" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Dohvati javne instance" - }, - "frontend": { - "description": "used in the settings page", - "message": "Sučelje" - }, - "general": { - "description": "used in the settings page", - "message": "Opće" - }, - "importSettings": { - "description": "used in the settings page", - "message": "Uvezi postavke" - }, - "importSettingsFromSync": { - "message": "Uvezi postavke iz sinkronizacije" - }, - "light": { - "description": "used in the settings page", - "message": "Svijetla" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "samo ugrađena" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "samo neugrađena" - }, - "pingInstances": { - "message": "Testiraj instance" - }, - "redirect": { - "message": "Preusmjeri" - }, - "redirectGoogle": { - "message": "Preusmjeri na Google" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Pokušaj preusmjeriti" - }, - "redirectOnlyInIncognito": { - "message": "Preusmjeri samo u inkognito modusu" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Preusmjeri na original" - }, - "redirectType": { - "description": "used in the settings page", - "message": "Vrsta preusmjeravanja" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "Obnovi postavke" - }, - "searchHint": { - "message": "Postavi LibRedirect kao standardnu tražilicu. \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>Ovdje\u003C/a> pogledaj kako se to radi u Chromium web pregledniku." - }, - "searchService": { - "message": "Traži uslugu" - }, - "search_frontend": { - "message": "Traži sučelje" - }, - "service": { - "message": "Usluga" - }, - "services": { - "message": "Usluge" - }, - "settings": { - "description": "used in the popup", - "message": "Postavke" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Pokaži u skočnom prozoru" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "Zamijeni instancu" - }, - "theme": { - "description": "used in the settings page", - "message": "Tema" - }, - "unsupportedIframesHandling": { - "message": "Nepodržano rukovanje iframeovima" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/hu/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/hu/messages.json deleted file mode 100644 index edf6f6e..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/hu/messages.json +++ /dev/null @@ -1,137 +0,0 @@ -{ - "about": { - "message": "Névjegy" - }, - "addYourFavoriteInstances": { - "message": "Adja hozzá kedvenc példányait" - }, - "auto": { - "message": "Automatikus" - }, - "autoPickInstance": { - "message": "Példány automatikus kiválasztása" - }, - "block": { - "message": "Letiltás" - }, - "bookmarksMenu": { - "message": "Könyvjelzők menü" - }, - "both": { - "message": "mindkettő" - }, - "bypass": { - "message": "Megkerülés" - }, - "copied": { - "message": "Másolva" - }, - "copyOriginal": { - "message": "Eredeti másolása" - }, - "dark": { - "message": "Sötét" - }, - "disable": { - "message": "Tiltás" - }, - "embedFrontend": { - "message": "Beágyazott előtétprogram" - }, - "enable": { - "message": "Engedélyezés" - }, - "excludeFromRedirecting": { - "message": "Átirányításból kizárt" - }, - "exportSettings": { - "message": "Beállítások exportálása" - }, - "exportSettingsToSync": { - "message": "Beállítások exportálása a szinkronizáláshoz" - }, - "extensionDescription": { - "message": "Egy webes kiterjesztés, amely népszerű webhelyeket irányít át alternatív, adatvédelemet tiszteletben tartó elő- és háttérprogramokra" - }, - "extensionName": { - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Nyilvános példányok lekérése" - }, - "frontend": { - "message": "Előtétprogram" - }, - "general": { - "message": "Általános" - }, - "importSettings": { - "message": "Beállítások importálása" - }, - "importSettingsFromSync": { - "message": "Beállítások importálása a szinkronizációból" - }, - "light": { - "message": "Világos" - }, - "onlyEmbedded": { - "message": "csak beágyazott" - }, - "onlyNotEmbedded": { - "message": "csak nem beágyazott" - }, - "pingInstances": { - "message": "Példányok pingelése" - }, - "redirect": { - "message": "Átirányítás" - }, - "redirectGoogle": { - "message": "Google átirányítása" - }, - "redirectLink": { - "message": "Kísérlet az átirányításra" - }, - "redirectOnlyInIncognito": { - "message": "Átirányítás csak inkognitóban" - }, - "redirectToOriginal": { - "message": "Átirányítás az eredetire" - }, - "redirectType": { - "message": "Átirányítás típusa" - }, - "resetSettings": { - "message": "Beállítások visszaállítása" - }, - "searchHint": { - "message": "LibRedirect beállítása alapértelmezett keresőmotornak. A Chromium böngészőkben történő művelethez kattintson \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>ide\u003C/a>." - }, - "searchService": { - "message": "Szolgáltatás keresése" - }, - "search_frontend": { - "message": "Előtétprogram keresése" - }, - "service": { - "message": "Szolgáltatás" - }, - "services": { - "message": "Szolgáltatások" - }, - "settings": { - "message": "Beállítások" - }, - "showInPopup": { - "message": "Megjelenítés felugró ablakban" - }, - "switchInstance": { - "message": "Példány váltása" - }, - "theme": { - "message": "Téma" - }, - "unsupportedIframesHandling": { - "message": "Nem támogatott beágyazások kezelése" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/id/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/id/messages.json deleted file mode 100644 index 323df46..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/id/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "Tentang" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Tambahkan server favorit Anda" - }, - "auto": { - "description": "used in the settings page", - "message": "Auto" - }, - "autoPickInstance": { - "message": "Pilih Server Otomatis" - }, - "block": { - "message": "Block" - }, - "bookmarksMenu": { - "message": "Menu penanda" - }, - "both": { - "description": "used in the settings page", - "message": "keduanya" - }, - "bypass": { - "message": "Mengakali" - }, - "copied": { - "message": "Disalin" - }, - "copyOriginal": { - "message": "Salin Asli" - }, - "dark": { - "description": "used in the settings page", - "message": "Gelap" - }, - "disable": { - "message": "Nonaktifkan" - }, - "embedFrontend": { - "message": "Frontend Sematan" - }, - "enable": { - "description": "used in the settings page", - "message": "Aktifkan" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Tidak disertakan dari pengalihan" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "Ekspor Pengaturan" - }, - "exportSettingsToSync": { - "message": "Pengaturan Ekspor ke Sinkronisasi" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "Ekstensi web yang mengalihkan situs-situs terkenal ke frontend dan backend alternatif yang menghargai privasi" - }, - "extensionName": { - "description": "name of the extension", - "message": "Libredirect" - }, - "fetchPublicInstances": { - "message": "Dapatkan server publik" - }, - "frontend": { - "description": "used in the settings page", - "message": "Frontend" - }, - "general": { - "description": "used in the settings page", - "message": "Umum" - }, - "importSettings": { - "description": "used in the settings page", - "message": "Impor Pengaturan" - }, - "importSettingsFromSync": { - "message": "Mengimpor Pengaturan dari Sinkronisasi" - }, - "light": { - "description": "used in the settings page", - "message": "Terang" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "hanya tersemat" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "hanya tidak tersemat" - }, - "pingInstances": { - "message": "Ping Server" - }, - "redirect": { - "message": "Pengalihan" - }, - "redirectGoogle": { - "message": "Alihkan Google" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Coba alihkan" - }, - "redirectOnlyInIncognito": { - "message": "Alihkan Hanya dalam Penyamaran" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Alihkan ke asli" - }, - "redirectType": { - "description": "used in the settings page", - "message": "Jenis Pengalihan" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "Atur Ulang Pengaturan" - }, - "searchHint": { - "message": "Tetapkan LibRedirect sebagai Mesin Pencari Default. Untuk cara melakukannya di browser kromium, klik\u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>here\u003C/a>." - }, - "searchService": { - "message": "Layanan Pencarian" - }, - "search_frontend": { - "message": "Frontend Pencarian" - }, - "service": { - "message": "Service" - }, - "services": { - "message": "Layanan" - }, - "settings": { - "description": "used in the popup", - "message": "Setelan" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Tampilkan di sembulan" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "Ganti Server" - }, - "theme": { - "description": "used in the settings page", - "message": "Tema" - }, - "unsupportedIframesHandling": { - "message": "Penanganan sematan tidak didukung" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/it/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/it/messages.json deleted file mode 100644 index 61f9513..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/it/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "Informazioni" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Aggiungi le tue istanze preferite" - }, - "auto": { - "description": "used in the settings page", - "message": "Auto" - }, - "autoPickInstance": { - "message": "Scegli istanza automaticamente" - }, - "block": { - "message": "Block" - }, - "bookmarksMenu": { - "message": "Menu Segnalibri" - }, - "both": { - "description": "used in the settings page", - "message": "entrambi" - }, - "bypass": { - "message": "Ignora" - }, - "copied": { - "message": "Copiato" - }, - "copyOriginal": { - "message": "Copia originale" - }, - "dark": { - "description": "used in the settings page", - "message": "Scuro" - }, - "disable": { - "message": "Disattiva" - }, - "embedFrontend": { - "message": "Incorpora frontend" - }, - "enable": { - "description": "used in the settings page", - "message": "Attiva" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Escluso dal reindirizzamento" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "Esporta impostazioni" - }, - "exportSettingsToSync": { - "message": "Esporta impostazioni in Sync" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "Un'estensione per il browser che reindirizza i siti più popolari verso frontend e backend alternativi rispettosi della privacy" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Recupera istanze pubbliche" - }, - "frontend": { - "description": "used in the settings page", - "message": "Interfaccia" - }, - "general": { - "description": "used in the settings page", - "message": "Generali" - }, - "importSettings": { - "description": "used in the settings page", - "message": "Importa impostazioni" - }, - "importSettingsFromSync": { - "message": "Importa impostazioni da Sync" - }, - "light": { - "description": "used in the settings page", - "message": "Chiaro" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "solo incorporati" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "solo non incorporati" - }, - "pingInstances": { - "message": "Ping istanze" - }, - "redirect": { - "message": "Reindirizza" - }, - "redirectGoogle": { - "message": "Reindirizza Google" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Prova a reindirizzare" - }, - "redirectOnlyInIncognito": { - "message": "Reindirizza solo in Incognito" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Reindirizza all'originale" - }, - "redirectType": { - "description": "used in the settings page", - "message": "Tipo di reindirizzamento" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "Ripristina impostazioni" - }, - "searchHint": { - "message": "Impostare LibRedirect come motore di ricerca predefinito. Per i browser Chromium, premere \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>qui\u003C/a>." - }, - "searchService": { - "message": "Cerca servizio" - }, - "search_frontend": { - "message": "Cerca frontend" - }, - "service": { - "message": "Service" - }, - "services": { - "message": "Servizi" - }, - "settings": { - "description": "used in the popup", - "message": "Impostazioni" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Mostra nel popup" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "Cambia istanza" - }, - "theme": { - "description": "used in the settings page", - "message": "Tema" - }, - "unsupportedIframesHandling": { - "message": "Gestione degli elementi incorporati non supportata" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ja/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ja/messages.json deleted file mode 100644 index 016c3ce..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ja/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "公式サイト" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "独自のインスタンスを追加" - }, - "auto": { - "description": "used in the settings page", - "message": "自動" - }, - "autoPickInstance": { - "message": "インスタンスを自動で取得" - }, - "block": { - "message": "表示しない" - }, - "bookmarksMenu": { - "message": "ブークマークのメニューに追加" - }, - "both": { - "description": "used in the settings page", - "message": "両方" - }, - "bypass": { - "message": "転送なし" - }, - "copied": { - "message": "コピーしました" - }, - "copyOriginal": { - "message": "元のサービスのURIをコピー" - }, - "dark": { - "description": "used in the settings page", - "message": "ダーク" - }, - "disable": { - "message": "無効" - }, - "embedFrontend": { - "message": "埋め込みフロントエンド" - }, - "enable": { - "description": "used in the settings page", - "message": "有効化" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "転送から除外" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "設定のエクスポート" - }, - "exportSettingsToSync": { - "message": "設定を同期にエクスポート" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "人気サイトを個人情報に配慮した代替のフロントエンド/バックエンドに転送するウェブ拡張機能" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "公開インスタンスの一覧を取得" - }, - "frontend": { - "description": "used in the settings page", - "message": "フロントエンド" - }, - "general": { - "description": "used in the settings page", - "message": "一般" - }, - "importSettings": { - "description": "used in the settings page", - "message": "設定のインポート" - }, - "importSettingsFromSync": { - "message": "設定を同期からインポート" - }, - "light": { - "description": "used in the settings page", - "message": "ライト" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "埋め込み型のみ" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "非埋め込み型のみ" - }, - "pingInstances": { - "message": "インスタンスの応答時間を確認" - }, - "redirect": { - "message": "転送する" - }, - "redirectGoogle": { - "message": "Googleを転送する" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "転送する" - }, - "redirectOnlyInIncognito": { - "message": "シークレットモードでのみ転送" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "元のサービスに転送" - }, - "redirectType": { - "description": "used in the settings page", - "message": "転送の種類" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "設定を初期化" - }, - "searchHint": { - "message": "LibRedirect を標準の検索エンジンに設定します。chromium ブラウザーでのやり方は、\u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>こちらをクリック\u003C/a>。" - }, - "searchService": { - "message": "検索サービス" - }, - "search_frontend": { - "message": "検索フロントエンド" - }, - "service": { - "message": "サービス" - }, - "services": { - "message": "サービス" - }, - "settings": { - "description": "used in the popup", - "message": "設定" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "ポップアップ内に表示" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "インスタンスを変更" - }, - "theme": { - "description": "used in the settings page", - "message": "テーマ" - }, - "unsupportedIframesHandling": { - "message": "未対応の埋め込み動画の処理" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/jv/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/jv/messages.json deleted file mode 100644 index 90a2fc4..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/jv/messages.json +++ /dev/null @@ -1,145 +0,0 @@ -{ - "extensionName": { - "message": "LibRedirect", - "description": "name of the extension" - }, - "extensionDescription": { - "message": "A web extension that redirects popular sites to alternative privacy-friendly frontends and backends", - "description": "description of the extension" - }, - "switchInstance": { - "message": "Switch Instance", - "description": "used in manifest.json as shortcut description" - }, - "settings": { - "message": "Settings", - "description": "used in the popup" - }, - "general": { - "message": "General", - "description": "used in the settings page" - }, - "theme": { - "message": "Téma", - "description": "used in the settings page" - }, - "light": { - "message": "Terang", - "description": "used in the settings page" - }, - "dark": { - "message": "Peteng", - "description": "used in the settings page" - }, - "auto": { - "message": "Auto", - "description": "used in the settings page" - }, - "excludeFromRedirecting": { - "message": "Excluded from redirecting", - "description": "used in the settings page" - }, - "importSettings": { - "message": "Import Settings", - "description": "used in the settings page" - }, - "exportSettings": { - "message": "Export Settings", - "description": "used in the settings page" - }, - "resetSettings": { - "message": "Reset Settings", - "description": "used in the settings page" - }, - "enable": { - "message": "Enable", - "description": "used in the settings page" - }, - "showInPopup": { - "message": "Show in popup", - "description": "used in the settings page" - }, - "frontend": { - "message": "Frontend", - "description": "used in the settings page" - }, - "redirectType": { - "message": "Redirect Type", - "description": "used in the settings page" - }, - "both": { - "message": "both", - "description": "used in the settings page" - }, - "onlyEmbedded": { - "message": "only embedded", - "description": "used in the settings page" - }, - "onlyNotEmbedded": { - "message": "only not embedded", - "description": "used in the settings page" - }, - "addYourFavoriteInstances": { - "message": "Add your favorite instances", - "description": "used in the settings page" - }, - "copyOriginal": { - "message": "Copy Original" - }, - "copied": { - "message": "Copied" - }, - "redirectToOriginal": { - "message": "Redirect to original", - "description": "Used in context menus when right clicking on a page/tab" - }, - "redirectLink": { - "message": "Attempt to redirect", - "description": "Used in context menus when right clicking on a hyperlink" - }, - "about": { - "message": "About" - }, - "unsupportedIframesHandling": { - "message": "Unsupported embeds handling" - }, - "fetchPublicInstances": { - "message": "Fetch public instances" - }, - "disable": { - "message": "Disable" - }, - "pingInstances": { - "message": "Ping Instances" - }, - "exportSettingsToSync": { - "message": "Export Settings to Sync" - }, - "importSettingsFromSync": { - "message": "Import Settings from Sync" - }, - "services": { - "message": "Services" - }, - "service": { - "message": "Service" - }, - "bookmarksMenu": { - "message": "Bookmarks menu" - }, - "redirectOnlyInIncognito": { - "message": "Redirect Only in Incognito" - }, - "bypass": { - "message": "Bypass" - }, - "block": { - "message": "Block" - }, - "searchHint": { - "message": "Set LibRedirect as Default Search Engine. For how to do in chromium browsers, click here." - }, - "redirect": { - "message": "Redirect" - } -} \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ko/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ko/messages.json deleted file mode 100644 index f77c522..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ko/messages.json +++ /dev/null @@ -1,145 +0,0 @@ -{ - "about": { - "message": "About" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Add your favorite instances" - }, - "auto": { - "description": "used in the settings page", - "message": "Auto" - }, - "block": { - "message": "Block" - }, - "bookmarksMenu": { - "message": "Bookmarks menu" - }, - "both": { - "description": "used in the settings page", - "message": "둘 다" - }, - "bypass": { - "message": "Bypass" - }, - "copied": { - "message": "복사됨" - }, - "copyOriginal": { - "message": "Copy Original" - }, - "dark": { - "description": "used in the settings page", - "message": "어두움" - }, - "disable": { - "message": "Disable" - }, - "enable": { - "description": "used in the settings page", - "message": "활성화" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Excluded from redirecting" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "설정 내보내기" - }, - "exportSettingsToSync": { - "message": "Export Settings to Sync" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "A web extension that redirects popular sites to alternative privacy-friendly frontends and backends" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Fetch public instances" - }, - "frontend": { - "description": "used in the settings page", - "message": "프론트엔드" - }, - "general": { - "description": "used in the settings page", - "message": "일반" - }, - "importSettings": { - "description": "used in the settings page", - "message": "설정 불러오기" - }, - "importSettingsFromSync": { - "message": "Import Settings from Sync" - }, - "light": { - "description": "used in the settings page", - "message": "밝음" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "임베디드 된 것만" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "임베디드 안된 것만" - }, - "pingInstances": { - "message": "Ping Instances" - }, - "redirect": { - "message": "Redirect" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Attempt to redirect this hyperlink" - }, - "redirectOnlyInIncognito": { - "message": "Redirect Only in Incognito" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Redirect to original" - }, - "redirectType": { - "description": "used in the settings page", - "message": "리다이렉트 종류" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "설정 초기화" - }, - "searchHint": { - "message": "Set LibRedirect as Default Search Engine. For how to do in chromium browsers, click \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>here\u003C/a>." - }, - "service": { - "message": "Service" - }, - "services": { - "message": "Services" - }, - "settings": { - "description": "used in the popup", - "message": "설정" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Show in popup" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "인스턴스 바꾸기" - }, - "theme": { - "description": "used in the settings page", - "message": "테마" - }, - "unsupportedIframesHandling": { - "message": "Unsupported iframes handling" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/lv/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/lv/messages.json deleted file mode 100644 index d94ee29..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/lv/messages.json +++ /dev/null @@ -1,95 +0,0 @@ -{ - "about": { - "message": "Par paplašinājumu" - }, - "addYourFavoriteInstances": { - "message": "Pievienojiet savus iecienītākos serverus (instances)" - }, - "autoPickInstance": { - "message": "Automātiski atlasīt serveri (instanci)" - }, - "bookmarksMenu": { - "message": "Grāmatzīmju izvēlne" - }, - "both": { - "message": "abus" - }, - "bypass": { - "message": "Apiet" - }, - "copied": { - "message": "Nokopēts" - }, - "copyOriginal": { - "message": "Kopēt oriģinālu" - }, - "dark": { - "message": "Tumšs" - }, - "disable": { - "message": "Atspējot" - }, - "enable": { - "message": "Iespējot" - }, - "excludeFromRedirecting": { - "message": "Novirzīšanas izņēmumi (Izslēgt no novirzīšanas)" - }, - "exportSettings": { - "message": "Izgūt iestatījumus" - }, - "extensionDescription": { - "message": "Pārlūka paplašinājums, kas novirza populāras vietnes uz konfidencialitātes drošām saskarnes un servera programmatūras alternatīvām" - }, - "extensionName": { - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Iegūt publiskos serverus (instances)" - }, - "frontend": { - "message": "Saskarne" - }, - "general": { - "message": "Vispārīgie" - }, - "importSettings": { - "message": "Ievietot iestatījumus" - }, - "light": { - "message": "Gaišs" - }, - "onlyEmbedded": { - "message": "tikai iebūvēto" - }, - "onlyNotEmbedded": { - "message": "tikai neiebūvēto" - }, - "redirectToOriginal": { - "message": "Novirzīt uz oriģinālo vietni" - }, - "redirectType": { - "message": "Novirzīšanas veids" - }, - "resetSettings": { - "message": "Atiestatīt iestatījumus" - }, - "service": { - "message": "Pakalpojums" - }, - "services": { - "message": "Pakalpojumi" - }, - "settings": { - "message": "Iestatījumi" - }, - "showInPopup": { - "message": "Rādīt uznirstošajā logā" - }, - "switchInstance": { - "message": "Mainīt serveri (instanci)" - }, - "theme": { - "message": "Motīvs" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/nb_NO/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/nb_NO/messages.json deleted file mode 100644 index 40d8a53..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/nb_NO/messages.json +++ /dev/null @@ -1,145 +0,0 @@ -{ - "about": { - "message": "About" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Add your favorite instances" - }, - "auto": { - "description": "used in the settings page", - "message": "Auto" - }, - "block": { - "message": "Block" - }, - "bookmarksMenu": { - "message": "Bookmarks menu" - }, - "both": { - "description": "used in the settings page", - "message": "begge" - }, - "bypass": { - "message": "Bypass" - }, - "copied": { - "message": "Kopiert" - }, - "copyOriginal": { - "message": "Copy Original" - }, - "dark": { - "description": "used in the settings page", - "message": "Mørk" - }, - "disable": { - "message": "Disable" - }, - "enable": { - "description": "used in the settings page", - "message": "Skru på" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Excluded from redirecting" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "Eksporter innstillinger" - }, - "exportSettingsToSync": { - "message": "Export Settings to Sync" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "En vev-utvidelse som videresender populære sider til alternative personvernsrespekterende grenseflater og bakender" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Fetch public instances" - }, - "frontend": { - "description": "used in the settings page", - "message": "Grenseflate" - }, - "general": { - "description": "used in the settings page", - "message": "Generelt" - }, - "importSettings": { - "description": "used in the settings page", - "message": "Importer innstillinger" - }, - "importSettingsFromSync": { - "message": "Import Settings from Sync" - }, - "light": { - "description": "used in the settings page", - "message": "Lys" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "kun innebygde" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "kun ikke-innebygde" - }, - "pingInstances": { - "message": "Ping Instances" - }, - "redirect": { - "message": "Redirect" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Attempt to redirect this hyperlink" - }, - "redirectOnlyInIncognito": { - "message": "Redirect Only in Incognito" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Redirect to original" - }, - "redirectType": { - "description": "used in the settings page", - "message": "Videresendingstype" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "Tilbakestill innstillinger" - }, - "searchHint": { - "message": "Set LibRedirect as Default Search Engine. For how to do in chromium browsers, click \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>here\u003C/a>." - }, - "service": { - "message": "Service" - }, - "services": { - "message": "Services" - }, - "settings": { - "description": "used in the popup", - "message": "Innstillinger" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Show in popup" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "Bytt instans" - }, - "theme": { - "description": "used in the settings page", - "message": "Drakt" - }, - "unsupportedIframesHandling": { - "message": "Unsupported iframes handling" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/nl/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/nl/messages.json deleted file mode 100644 index 2c7cea4..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/nl/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "Over" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Toevoegen aan favoriete instanties" - }, - "auto": { - "description": "used in the settings page", - "message": "Auto" - }, - "autoPickInstance": { - "message": "Automatisch instantie kiezen" - }, - "block": { - "message": "Blokkeren" - }, - "bookmarksMenu": { - "message": "Bladwijzermenu" - }, - "both": { - "description": "used in the settings page", - "message": "beide" - }, - "bypass": { - "message": "Omzeilen" - }, - "copied": { - "message": "Gekopieerd" - }, - "copyOriginal": { - "message": "Origineel kopiëren" - }, - "dark": { - "description": "used in the settings page", - "message": "Donker" - }, - "disable": { - "message": "Uitschakelen" - }, - "embedFrontend": { - "message": "Front-end insluiten" - }, - "enable": { - "description": "used in the settings page", - "message": "Inschakelen" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Uitgesloten van doorverwijzen" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "Instellingen exporteren" - }, - "exportSettingsToSync": { - "message": "Instellingen synchroniseren" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "Een webextensie die populaire sites doorverwijst naar alternatieve privacy-vriendelijke frontends en backends" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Openbare instanties ophalen" - }, - "frontend": { - "description": "used in the settings page", - "message": "Front-end" - }, - "general": { - "description": "used in the settings page", - "message": "Algemeen" - }, - "importSettings": { - "description": "used in the settings page", - "message": "Instellingen importeren" - }, - "importSettingsFromSync": { - "message": "Instellingen ophalen uit synchronisatie" - }, - "light": { - "description": "used in the settings page", - "message": "Licht" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "alleen ingesloten" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "alleen niet-ingesloten" - }, - "pingInstances": { - "message": "Instanties pingen" - }, - "redirect": { - "message": "Doorverwijzen" - }, - "redirectGoogle": { - "message": "Google doorverwijzen" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Doorverwijzing proberen" - }, - "redirectOnlyInIncognito": { - "message": "Alleen doorverwijzen in privévensters" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Doorverwijzen naar origineel" - }, - "redirectType": { - "description": "used in the settings page", - "message": "Omleidingstype" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "Standaardwaarden" - }, - "searchHint": { - "message": "Stel LibRedirect in als de standaard zoekmachine. Hoe je dit doet in op Chromium gebaseerde browsers, lees je \u003Ca href='' target='_blank' rel='noopener noreferrer'>hier\u003C/a>." - }, - "searchService": { - "message": "Zoeken naar dienst" - }, - "search_frontend": { - "message": "Zoeken naar front-end" - }, - "service": { - "message": "Dienst" - }, - "services": { - "message": "Diensten" - }, - "settings": { - "description": "used in the popup", - "message": "Instellingen" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Tonen in uitrolmenu" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "Schakelen tussen instanties" - }, - "theme": { - "description": "used in the settings page", - "message": "Thema" - }, - "unsupportedIframesHandling": { - "message": "Niet-ondersteunde insluitafhandeling" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/pl/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/pl/messages.json deleted file mode 100644 index 0e60f6c..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/pl/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "Informacje" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Dodaj ulubione instancje" - }, - "auto": { - "description": "used in the settings page", - "message": "Automatyczny" - }, - "autoPickInstance": { - "message": "Automatyczny wybór instancji" - }, - "block": { - "message": "Zablokuj" - }, - "bookmarksMenu": { - "message": "Menu zakładek" - }, - "both": { - "description": "used in the settings page", - "message": "oba" - }, - "bypass": { - "message": "Omiń" - }, - "copied": { - "message": "Skopiowano" - }, - "copyOriginal": { - "message": "Kopiuj oryginał" - }, - "dark": { - "description": "used in the settings page", - "message": "Ciemny" - }, - "disable": { - "message": "Wyłącz" - }, - "embedFrontend": { - "message": "Frontend osadzania" - }, - "enable": { - "description": "used in the settings page", - "message": "Włącz" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Wykluczone z przekierowania" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "Eksportuj ustawienia" - }, - "exportSettingsToSync": { - "message": "Eksportuj ustawienia do synchronizacji" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "Rozszerzenie, które przekierowuje popularne witryny do alternatywnych, szanujących prywatność frontendów i backendów" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Pobierz instancje publiczne" - }, - "frontend": { - "description": "used in the settings page", - "message": "Frontend" - }, - "general": { - "description": "used in the settings page", - "message": "Ogólne" - }, - "importSettings": { - "description": "used in the settings page", - "message": "Importuj ustawienia" - }, - "importSettingsFromSync": { - "message": "Importuj ustawienia do synchronizacji" - }, - "light": { - "description": "used in the settings page", - "message": "Jasny" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "tylko osadzone" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "tylko nieosadzone" - }, - "pingInstances": { - "message": "Pinguj instancje" - }, - "redirect": { - "message": "Przekieruj" - }, - "redirectGoogle": { - "message": "Przekieruj Google" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Spróbuj przekierować" - }, - "redirectOnlyInIncognito": { - "message": "Przekieruj tylko w trybie incognito" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Przekieruj do oryginału" - }, - "redirectType": { - "description": "used in the settings page", - "message": "Typ przekierowania" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "Zresetuj ustawienia" - }, - "searchHint": { - "message": "Ustaw LibRedirect jako domyślną wyszukiwarkę. Aby dowiedzieć się, jak to zrobić w przeglądarkach Chromium, kliknij \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>tutaj\u003C/a>." - }, - "searchService": { - "message": "Usługa wyszukiwania" - }, - "search_frontend": { - "message": "Frontend wyszukiwania" - }, - "service": { - "message": "Usługa" - }, - "services": { - "message": "Usługi" - }, - "settings": { - "description": "used in the popup", - "message": "Ustawienia" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Pokaż w wyskakującym okienku" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "Przełącz instancję" - }, - "theme": { - "description": "used in the settings page", - "message": "Motyw" - }, - "unsupportedIframesHandling": { - "message": "Brak obsługi osadzania" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/pt/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/pt/messages.json deleted file mode 100644 index 4320b20..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/pt/messages.json +++ /dev/null @@ -1,145 +0,0 @@ -{ - "about": { - "message": "Sobre" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Adicionar a sua instância favorita" - }, - "auto": { - "description": "used in the settings page", - "message": "Auto" - }, - "block": { - "message": "Block" - }, - "bookmarksMenu": { - "message": "Bookmarks menu" - }, - "both": { - "description": "used in the settings page", - "message": "ambos" - }, - "bypass": { - "message": "Bypass" - }, - "copied": { - "message": "Copiado" - }, - "copyOriginal": { - "message": "Copy Original" - }, - "dark": { - "description": "used in the settings page", - "message": "Escuro" - }, - "disable": { - "message": "Disable" - }, - "enable": { - "description": "used in the settings page", - "message": "Ativar" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Excluído do redirecionamento" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "Exportar configurações" - }, - "exportSettingsToSync": { - "message": "Export Settings to Sync" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "Uma extensão para os navegadores de Internet que redireciona sites populares para interfaces gráficas e interfaces de textos alternativas e amigáveis que respeitam a privacidade" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Fetch public instances" - }, - "frontend": { - "description": "used in the settings page", - "message": "Interface" - }, - "general": { - "description": "used in the settings page", - "message": "Geral" - }, - "importSettings": { - "description": "used in the settings page", - "message": "Importar configurações" - }, - "importSettingsFromSync": { - "message": "Import Settings from Sync" - }, - "light": { - "description": "used in the settings page", - "message": "Claro" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "só embutidos" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "apenas os não embutidos" - }, - "pingInstances": { - "message": "Ping Instances" - }, - "redirect": { - "message": "Redirect" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Tentar redirecionar" - }, - "redirectOnlyInIncognito": { - "message": "Redirect Only in Incognito" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Redirecionar para o original" - }, - "redirectType": { - "description": "used in the settings page", - "message": "Tipo de redirecionamento" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "Repor configurações" - }, - "searchHint": { - "message": "Set LibRedirect as Default Search Engine. For how to do in chromium browsers, click \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>here\u003C/a>." - }, - "service": { - "message": "Service" - }, - "services": { - "message": "Services" - }, - "settings": { - "description": "used in the popup", - "message": "Configurações" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Mostrar no pop-up" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "Trocar de instância" - }, - "theme": { - "description": "used in the settings page", - "message": "Tema" - }, - "unsupportedIframesHandling": { - "message": "Unsupported iframes handling" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/pt_BR/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/pt_BR/messages.json deleted file mode 100644 index 17274d9..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/pt_BR/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "Sobre" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Adicione sua instância favorita" - }, - "auto": { - "description": "used in the settings page", - "message": "Automático" - }, - "autoPickInstance": { - "message": "Instância automática" - }, - "block": { - "message": "Block" - }, - "bookmarksMenu": { - "message": "Menu de favoritos" - }, - "both": { - "description": "Utilizado na página de configurações", - "message": "ambos" - }, - "bypass": { - "message": "Ultrapassar" - }, - "copied": { - "message": "Copiado" - }, - "copyOriginal": { - "message": "Copiar Original" - }, - "dark": { - "description": "Utilizado na página de configurações", - "message": "Escuro" - }, - "disable": { - "message": "Desativar" - }, - "embedFrontend": { - "message": "Incorporar front -end" - }, - "enable": { - "description": "Utilizado na página de configurações", - "message": "Ativar" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Excluído do redirecionamento" - }, - "exportSettings": { - "description": "Utilizado na página de configurações", - "message": "Exportar as configurações" - }, - "exportSettingsToSync": { - "message": "Exportar Configurações para a Sincronização" - }, - "extensionDescription": { - "description": "Descrição da Extensão", - "message": "Uma extensão para os navegadores de internet que redireciona os sítios/sites populares para interfaces gráficas e interfaces de textos alternativas e amigáveis que respeitam sua privacidade" - }, - "extensionName": { - "description": "Nome da Extensão", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Buscando instâncias públicas" - }, - "frontend": { - "description": "Utilizado na página de configurações", - "message": "Interface gráfica" - }, - "general": { - "description": "Utilizado na página de configurações", - "message": "Geral" - }, - "importSettings": { - "description": "Utilizado na página de configurações", - "message": "Importar as configurações" - }, - "importSettingsFromSync": { - "message": "Importar Configurações da Sincronização" - }, - "light": { - "description": "Utilizado na página de configurações", - "message": "Claro" - }, - "onlyEmbedded": { - "description": "Utilizado na página de configurações", - "message": "apenas os incorporados" - }, - "onlyNotEmbedded": { - "description": "Utilizado na página de configurações", - "message": "apenas os não incorporados" - }, - "pingInstances": { - "message": "Fazer Ping nas Instâncias" - }, - "redirect": { - "message": "Redirecionar" - }, - "redirectGoogle": { - "message": "Redirecionar o Google" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Tentar redirecionar" - }, - "redirectOnlyInIncognito": { - "message": "Redirecionar Somente em Anônimo" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Redirecionar para original" - }, - "redirectType": { - "description": "Utilizado na página de configurações", - "message": "Tipo de redirecionamento" - }, - "resetSettings": { - "description": "Utilizado na página de configurações", - "message": "Redefinir as configurações" - }, - "searchHint": { - "message": "Configure LibRedirect como Motor de Pesquisa Padrão. Para como fazer em navegadores Chromium, clique \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>aqui\u003C/a>." - }, - "searchService": { - "message": "Serviço de pesquisa" - }, - "search_frontend": { - "message": "Pesquise front -end" - }, - "service": { - "message": "Service" - }, - "services": { - "message": "Serviços" - }, - "settings": { - "description": "Utilizado na janela da caixa de diálogo", - "message": "Configurações" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Mostrar em pop-up" - }, - "switchInstance": { - "description": "Utilizado no arquivo manifest.json como descrição do atalho", - "message": "Trocar a instância" - }, - "theme": { - "description": "Utilizado na página de configurações", - "message": "Tema" - }, - "unsupportedIframesHandling": { - "message": "Unsupported iframes handling" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ro/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ro/messages.json deleted file mode 100644 index ca02507..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ro/messages.json +++ /dev/null @@ -1,157 +0,0 @@ -{ - "about": { - "message": "About" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Add your favorite instances" - }, - "auto": { - "description": "used in the settings page", - "message": "Auto" - }, - "block": { - "message": "Block" - }, - "bookmarksMenu": { - "message": "Bookmarks menu" - }, - "both": { - "description": "used in the settings page", - "message": "ambele" - }, - "bypass": { - "message": "Bypass" - }, - "copied": { - "message": "Copiat" - }, - "copyOriginal": { - "message": "Copy Original" - }, - "dark": { - "description": "used in the settings page", - "message": "Întunecat" - }, - "disable": { - "message": "Dezactivează" - }, - "embedFrontend": { - "message": "Embed Frontend" - }, - "enable": { - "description": "used in the settings page", - "message": "Activează" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Excluded from redirecting" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "Exportul setărilor" - }, - "exportSettingsToSync": { - "message": "Export Settings to Sync" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "O extensie web care redirecționează site-urile populare către frontend-uri și backend-uri alternative prietenoase cu confidențialitatea" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Obține instanțe publice" - }, - "frontend": { - "description": "used in the settings page", - "message": "Frontend" - }, - "general": { - "description": "used in the settings page", - "message": "General" - }, - "importSettings": { - "description": "used in the settings page", - "message": "Import setări" - }, - "importSettingsFromSync": { - "message": "Import Settings from Sync" - }, - "light": { - "description": "used in the settings page", - "message": "Luminat" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "numai încorporat" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "numai încorporat" - }, - "pingInstances": { - "message": "Ping Instances" - }, - "redirect": { - "message": "Redirect" - }, - "redirectGoogle": { - "message": "Redirectare Google" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Încercați să redirecționați" - }, - "redirectOnlyInIncognito": { - "message": "Redirect Only in Incognito" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Redirect to original" - }, - "redirectType": { - "description": "used in the settings page", - "message": "Tip redirecționare" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "Resetează setarile" - }, - "searchHint": { - "message": "Set LibRedirect as Default Search Engine. For how to do in chromium browsers, click \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>here\u003C/a>." - }, - "searchService": { - "message": "Servicii Căutare" - }, - "search_frontend": { - "message": "Căutare Frontend" - }, - "service": { - "message": "Service" - }, - "services": { - "message": "Services" - }, - "settings": { - "description": "used in the popup", - "message": "Setări" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Show in popup" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "Comutare Instanță" - }, - "theme": { - "description": "used in the settings page", - "message": "Temă" - }, - "unsupportedIframesHandling": { - "message": "Manipulare embeds neacceptată" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ru/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ru/messages.json deleted file mode 100644 index 8d1622b..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ru/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "О расширении" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Добавить в избранное" - }, - "auto": { - "description": "used in the settings page", - "message": "Автоопределение" - }, - "autoPickInstance": { - "message": "Выбрать сервер автоматически" - }, - "block": { - "message": "Block" - }, - "bookmarksMenu": { - "message": "Меню закладок" - }, - "both": { - "description": "used in the settings page", - "message": "оба" - }, - "bypass": { - "message": "Обход" - }, - "copied": { - "message": "Скопировано" - }, - "copyOriginal": { - "message": "Копировать исходную" - }, - "dark": { - "description": "used in the settings page", - "message": "Тёмная" - }, - "disable": { - "message": "Выключить" - }, - "embedFrontend": { - "message": "Встроить интерфейс" - }, - "enable": { - "description": "used in the settings page", - "message": "Включить" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Исключения" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "Экспортировать настройки" - }, - "exportSettingsToSync": { - "message": "Экспортировать настройки в службу синхронизации" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "Расширение для браузера, перенаправляющее популярные сайты на обеспечивающие конфиденциальность альтернативны" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Получить общедоступные серверы" - }, - "frontend": { - "description": "used in the settings page", - "message": "Интерфейс" - }, - "general": { - "description": "used in the settings page", - "message": "Общее" - }, - "importSettings": { - "description": "used in the settings page", - "message": "Импортировать настройки" - }, - "importSettingsFromSync": { - "message": "Импортировать настройки из службы синхронизации" - }, - "light": { - "description": "used in the settings page", - "message": "Светлая" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "только встроенные" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "только не встроенные" - }, - "pingInstances": { - "message": "Опросить серверы" - }, - "redirect": { - "message": "Перенаправить" - }, - "redirectGoogle": { - "message": "Перенаправление Google" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Попытаться перенаправить" - }, - "redirectOnlyInIncognito": { - "message": "Перенаправлять только в приватных окнах" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Обратно на исходный сайт" - }, - "redirectType": { - "description": "used in the settings page", - "message": "Тип перенаправления" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "Сброс настроек" - }, - "searchHint": { - "message": "Установить LibRedirect в качестве поисковой системы по умолчанию. Подробности о том, как это сделать в браузерах на Chromium, доступны \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>здесь\u003C/a>." - }, - "searchService": { - "message": "Служба поиска" - }, - "search_frontend": { - "message": "Поисковый интерфейс" - }, - "service": { - "message": "Служба" - }, - "services": { - "message": "Службы" - }, - "settings": { - "description": "used in the popup", - "message": "Настройки" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Показывать во всплывающем окне" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "Сменить сервер" - }, - "theme": { - "description": "used in the settings page", - "message": "Тема" - }, - "unsupportedIframesHandling": { - "message": "Обработка неподдерживаемых встроенных сайтов" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/sr/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/sr/messages.json deleted file mode 100644 index 7a080d0..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/sr/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "О" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Додајте своје омиљене инстанце" - }, - "auto": { - "description": "used in the settings page", - "message": "Auto" - }, - "autoPickInstance": { - "message": "Одаберите аутоматски инстанцу" - }, - "block": { - "message": "Блокирајте" - }, - "bookmarksMenu": { - "message": "Изборник обиљежака" - }, - "both": { - "description": "used in the settings page", - "message": "оба" - }, - "bypass": { - "message": "Заобиђите" - }, - "copied": { - "message": "Копирано" - }, - "copyOriginal": { - "message": "Копирајте оригинал" - }, - "dark": { - "description": "used in the settings page", - "message": "Мрачна" - }, - "disable": { - "message": "Искључите" - }, - "embedFrontend": { - "message": "Уградите сучеље" - }, - "enable": { - "description": "used in the settings page", - "message": "Омогући" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Искључено из преусмеравања" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "Извозна Подешавања" - }, - "exportSettingsToSync": { - "message": "Извезите подешавања за синкронизацију" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "Веб проширница која преусмерава познате сајтове на према алтернативним сучељима и позадинским страницама прилагођенима приватности" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Дохватите јавне инстанце" - }, - "frontend": { - "description": "used in the settings page", - "message": "Сучеље" - }, - "general": { - "description": "used in the settings page", - "message": "Општенито" - }, - "importSettings": { - "description": "used in the settings page", - "message": "Увозна Подешавања" - }, - "importSettingsFromSync": { - "message": "Увезите подешавања из синкронизације" - }, - "light": { - "description": "used in the settings page", - "message": "Светла" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "само уграђено" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "само неуграђено" - }, - "pingInstances": { - "message": "Тестирајте инстанце" - }, - "redirect": { - "message": "Преусмерите" - }, - "redirectGoogle": { - "message": "Преусмерите Google" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Покушајте да преусмерите" - }, - "redirectOnlyInIncognito": { - "message": "Преусмерите само у инкогнитоа" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Преусмерите према оригиналној" - }, - "redirectType": { - "description": "used in the settings page", - "message": "Тип Преусмеравања" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "Обновите Подешавања" - }, - "searchHint": { - "message": "Поставите ЛибРедирецт као стандардни тражионик. \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>Овде\u003C/a> погледајте како се то ради у Кромијум мрежном прегледнику." - }, - "searchService": { - "message": "Тражите услужник" - }, - "search_frontend": { - "message": "Тражите сучеље" - }, - "service": { - "message": "Услуга" - }, - "services": { - "message": "Услуге" - }, - "settings": { - "description": "used in the popup", - "message": "Подешавања" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Прикажи у искачућем прозору" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "Пребаци инстанцу" - }, - "theme": { - "description": "used in the settings page", - "message": "Тема" - }, - "unsupportedIframesHandling": { - "message": "Неподржано руковање и-фрамеовима" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ta/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ta/messages.json deleted file mode 100644 index 5972d81..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/ta/messages.json +++ /dev/null @@ -1,137 +0,0 @@ -{ - "about": { - "message": "பற்றி" - }, - "addYourFavoriteInstances": { - "message": "உங்களுக்கு பிடித்த நிகழ்வுகளைச் சேர்க்கவும்" - }, - "auto": { - "message": "தானி" - }, - "autoPickInstance": { - "message": "ஆட்டோ-பிக் நிகழ்வு" - }, - "block": { - "message": "தொகுதி" - }, - "bookmarksMenu": { - "message": "புக்மார்க்ச் பட்டியல்" - }, - "both": { - "message": "இரண்டும்" - }, - "bypass": { - "message": "பைபாச்" - }, - "copied": { - "message": "நகலெடுக்கப்பட்டது" - }, - "copyOriginal": { - "message": "அசல் நகலெடுக்கவும்" - }, - "dark": { - "message": "இருண்ட" - }, - "disable": { - "message": "முடக்கு" - }, - "embedFrontend": { - "message": "ஃபிரான்டெண்ட் உட்பொதிக்கவும்" - }, - "enable": { - "message": "இயக்கு" - }, - "excludeFromRedirecting": { - "message": "திருப்பிவிடுவதிலிருந்து விலக்கப்பட்டது" - }, - "exportSettings": { - "message": "ஏற்றுமதி அமைப்புகள்" - }, - "exportSettingsToSync": { - "message": "ஒத்திசைக்க அமைப்புகளை ஏற்றுமதி செய்யுங்கள்" - }, - "extensionDescription": { - "message": "பிரபலமான தளங்களை மாற்று தனியுரிமை நட்பு முன்பக்கங்கள் மற்றும் பின்தளத்தில் திருப்பி விடும் ஒரு வலை நீட்டிப்பு" - }, - "extensionName": { - "message": "லிப்ரெடிரிடர்" - }, - "fetchPublicInstances": { - "message": "பொது நிகழ்வுகளைப் பெறுங்கள்" - }, - "frontend": { - "message": "ஃபிரான்ட்" - }, - "general": { - "message": "பொது" - }, - "importSettings": { - "message": "அமைப்புகளை இறக்குமதி செய்யுங்கள்" - }, - "importSettingsFromSync": { - "message": "ஒத்திசைவிலிருந்து அமைப்புகளை இறக்குமதி செய்யுங்கள்" - }, - "light": { - "message": "ஒளி" - }, - "onlyEmbedded": { - "message": "உட்பொதிக்கப்பட்டது" - }, - "onlyNotEmbedded": { - "message": "உட்பொதிக்கப்படவில்லை" - }, - "pingInstances": { - "message": "பிங் நிகழ்வுகள்" - }, - "redirect": { - "message": "திருப்பி விடுங்கள்" - }, - "redirectGoogle": { - "message": "Google ஐ திருப்பி விடுங்கள்" - }, - "redirectLink": { - "message": "திருப்பிவிட முயற்சி" - }, - "redirectOnlyInIncognito": { - "message": "மறைமுகத்தில் மட்டுமே திருப்பி விடுங்கள்" - }, - "redirectToOriginal": { - "message": "அசலுக்கு திருப்பி விடுங்கள்" - }, - "redirectType": { - "message": "திருப்பி வகை" - }, - "resetSettings": { - "message": "அமைப்புகளை மீட்டமைக்கவும்" - }, - "searchHint": { - "message": "இயல்புநிலை தேடுபொறியாக Lirbredirect ஐ அமைக்கவும். குரோமியம் உலாவிகளில் எவ்வாறு செய்வது என்பதற்கு, \u003Ca href = 'https: //libredirect.github.io/docs.html#search_engine_chromium' target = '_ வெற்று' rel = 'noopener norferrer'> இங்கே \u003C/a>." - }, - "searchService": { - "message": "தேடல் பணி" - }, - "search_frontend": { - "message": "முன்பக்கத்தைத் தேடுங்கள்" - }, - "service": { - "message": "பணி" - }, - "services": { - "message": "சேவைகள்" - }, - "settings": { - "message": "அமைப்புகள்" - }, - "showInPopup": { - "message": "பாப்அப்பில் காட்டு" - }, - "switchInstance": { - "message": "சான்று" - }, - "theme": { - "message": "கருப்பொருள்" - }, - "unsupportedIframesHandling": { - "message": "ஆதரிக்கப்படாத உட்பொதிகள் கையாளுதல்" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/tr/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/tr/messages.json deleted file mode 100644 index 985b094..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/tr/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "Hakkında" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Sevdiğiniz örnekleri ekleyin" - }, - "auto": { - "description": "used in the settings page", - "message": "Otomatik" - }, - "autoPickInstance": { - "message": "Örneği Otomatik Seç" - }, - "block": { - "message": "Block" - }, - "bookmarksMenu": { - "message": "Yer imleri menüsü" - }, - "both": { - "description": "used in the settings page", - "message": "her ikisi de" - }, - "bypass": { - "message": "Atla" - }, - "copied": { - "message": "Kopyalandı" - }, - "copyOriginal": { - "message": "Aslını Kopyala" - }, - "dark": { - "description": "used in the settings page", - "message": "Koyu" - }, - "disable": { - "message": "Devre dışı bırak" - }, - "embedFrontend": { - "message": "Ön Ucu Göm" - }, - "enable": { - "description": "used in the settings page", - "message": "Etkinleştir" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Yönlendirme dışında bırakılanlar" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "Ayarları Dışa Aktar" - }, - "exportSettingsToSync": { - "message": "Ayarlayı Eşzamanlamaya Aktar" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "Popüler siteleri alternatif gizlilik dostu ön uçlara ve arka uçlara yönlendiren bir web uzantısı" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Herkese açık örnekleri getir" - }, - "frontend": { - "description": "used in the settings page", - "message": "Ön Uç" - }, - "general": { - "description": "used in the settings page", - "message": "Genel" - }, - "importSettings": { - "description": "used in the settings page", - "message": "Ayarları İçe Aktar" - }, - "importSettingsFromSync": { - "message": "Ayarları Eşzamanlamadan İçe Aktar" - }, - "light": { - "description": "used in the settings page", - "message": "Açık" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "yalnızca gömülü" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "yalnızca gömülü olmayan" - }, - "pingInstances": { - "message": "Örneklere Ping At" - }, - "redirect": { - "message": "Yönlendir" - }, - "redirectGoogle": { - "message": "Yönlendir (Google)" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Yeniden yönlendirmeyi dene" - }, - "redirectOnlyInIncognito": { - "message": "Yalnızca Gizli Modda Yönlendir" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Aslına yönlendir" - }, - "redirectType": { - "description": "used in the settings page", - "message": "Yönlendirme Türü" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "Ayarları Sıfırla" - }, - "searchHint": { - "message": "LibRedirect'i öntanımlı arama moturu olarak ayarlayın. Chromium tabanlı tarayıcılarda nasıl yapılacağını öğrenmek için \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>buraya\u003C/a> tıklayın." - }, - "searchService": { - "message": "Arama Hizmeti" - }, - "search_frontend": { - "message": "Arama Ön Ucu" - }, - "service": { - "message": "Service" - }, - "services": { - "message": "Hizmetler" - }, - "settings": { - "description": "used in the popup", - "message": "Ayarlar" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Açılır pencerede göster" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "Örneği Değiştir" - }, - "theme": { - "description": "used in the settings page", - "message": "Tema" - }, - "unsupportedIframesHandling": { - "message": "Desteklenmeyen gömülü kullanımı" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/uk/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/uk/messages.json deleted file mode 100644 index 65b86c8..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/uk/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "Про застосунок" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Додати свої улюблені сервери" - }, - "auto": { - "description": "used in the settings page", - "message": "Auto" - }, - "autoPickInstance": { - "message": "Автопідбір сервера" - }, - "block": { - "message": "Block" - }, - "bookmarksMenu": { - "message": "Меню закладок" - }, - "both": { - "description": "used in the settings page", - "message": "обоє" - }, - "bypass": { - "message": "Обхід" - }, - "copied": { - "message": "Скопійовано" - }, - "copyOriginal": { - "message": "Скопіювати оригінал" - }, - "dark": { - "description": "used in the settings page", - "message": "Темна" - }, - "disable": { - "message": "Вимкнути" - }, - "embedFrontend": { - "message": "Вбудований інтерфейс" - }, - "enable": { - "description": "used in the settings page", - "message": "Увімкнути" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Виключено з перенаправлення" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "Експортувати налаштування" - }, - "exportSettingsToSync": { - "message": "Експорт налаштувань до служби синхронізації" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "Веброзширення, що переспрямовує популярні сайти на альтернативні дружні до приватності фронтенди та бекенди" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Отримати загальнодоступні сервери" - }, - "frontend": { - "description": "used in the settings page", - "message": "Фронтенд" - }, - "general": { - "description": "used in the settings page", - "message": "Загальні" - }, - "importSettings": { - "description": "used in the settings page", - "message": "Імпортувати налаштування" - }, - "importSettingsFromSync": { - "message": "Імпорт налаштувань зі служби синхронізації" - }, - "light": { - "description": "used in the settings page", - "message": "Світла" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "лише вбудовані" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "лише не вбудований" - }, - "pingInstances": { - "message": "Опитати сервери" - }, - "redirect": { - "message": "Переспрямувати" - }, - "redirectGoogle": { - "message": "Переспрямування Google" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Спроба перенаправлення" - }, - "redirectOnlyInIncognito": { - "message": "Переспрямовувати лише в режимі інкогніто" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Перенаправити на оригінал" - }, - "redirectType": { - "description": "used in the settings page", - "message": "Що переспрямовувати" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "Скинути налаштування" - }, - "searchHint": { - "message": "Установити LibRedirect усталеним засобом пошуку. Як це зробити у браузерах на основі chromium, читайте \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>тут\u003C/a>." - }, - "searchService": { - "message": "Служба пошуку" - }, - "search_frontend": { - "message": "Пошуковий інтерфейс" - }, - "service": { - "message": "Служба" - }, - "services": { - "message": "Служби" - }, - "settings": { - "description": "used in the popup", - "message": "Налаштування" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Показувати у спливному вікні" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "Інший сервер" - }, - "theme": { - "description": "used in the settings page", - "message": "Тема" - }, - "unsupportedIframesHandling": { - "message": "Обробка непідтримуваних вбудовувань" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/vi/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/vi/messages.json deleted file mode 100644 index 890ea8f..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/vi/messages.json +++ /dev/null @@ -1,145 +0,0 @@ -{ - "about": { - "message": "Về tiện ích" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "Thêm những instance bạn yêu thích" - }, - "auto": { - "description": "used in the settings page", - "message": "Tự động" - }, - "block": { - "message": "Block" - }, - "bookmarksMenu": { - "message": "Bookmarks menu" - }, - "both": { - "description": "used in the settings page", - "message": "cả hai" - }, - "bypass": { - "message": "Bypass" - }, - "copied": { - "message": "Đã Sao Chép" - }, - "copyOriginal": { - "message": "Copy Original" - }, - "dark": { - "description": "used in the settings page", - "message": "Tối" - }, - "disable": { - "message": "Tắt" - }, - "enable": { - "description": "used in the settings page", - "message": "Bật" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "Không được chuyển hướng" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "Xuất ra cài đặt" - }, - "exportSettingsToSync": { - "message": "Export Settings to Sync" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "Một tiện ích mở rộng chuyển hướng một số trang web phổ biến đến các frontend và backend khác thân thiện với quyền riêng tư" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "Tìm các instance công cộng" - }, - "frontend": { - "description": "used in the settings page", - "message": "Frontend" - }, - "general": { - "description": "used in the settings page", - "message": "Cài đặt chung" - }, - "importSettings": { - "description": "used in the settings page", - "message": "Nhập vào cài đặt" - }, - "importSettingsFromSync": { - "message": "Import Settings from Sync" - }, - "light": { - "description": "used in the settings page", - "message": "Sáng" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "chỉ các mã nhúng" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "chỉ những cái không phải là mã nhúng" - }, - "pingInstances": { - "message": "Ping Instances" - }, - "redirect": { - "message": "Redirect" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "Chuyển hướng liên kết này" - }, - "redirectOnlyInIncognito": { - "message": "Redirect Only in Incognito" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "Chuyển hướng tới trang web gốc" - }, - "redirectType": { - "description": "used in the settings page", - "message": "Loại chuyển hướng" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "Đặt lại cài đặt" - }, - "searchHint": { - "message": "Set LibRedirect as Default Search Engine. For how to do in chromium browsers, click \u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>here\u003C/a>." - }, - "service": { - "message": "Service" - }, - "services": { - "message": "Services" - }, - "settings": { - "description": "used in the popup", - "message": "Cài Đặt" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "Hiển thị trong cửa sổ bật lên" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "Đổi Instance" - }, - "theme": { - "description": "used in the settings page", - "message": "Giao diện" - }, - "unsupportedIframesHandling": { - "message": "Cách xử lý các iframe không được hỗ trợ" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/zh_Hans/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/zh_Hans/messages.json deleted file mode 100644 index 2332d2d..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/zh_Hans/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "关于" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "添加您喜欢的实例" - }, - "auto": { - "description": "used in the settings page", - "message": "自动" - }, - "autoPickInstance": { - "message": "自动挑选实例" - }, - "block": { - "message": "屏蔽" - }, - "bookmarksMenu": { - "message": "书签菜单" - }, - "both": { - "description": "used in the settings page", - "message": "所有页面" - }, - "bypass": { - "message": "绕过" - }, - "copied": { - "message": "已复制" - }, - "copyOriginal": { - "message": "复制原始链接" - }, - "dark": { - "description": "used in the settings page", - "message": "深色" - }, - "disable": { - "message": "禁用" - }, - "embedFrontend": { - "message": "嵌入页面前端" - }, - "enable": { - "description": "used in the settings page", - "message": "启用" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "排除于重定向" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "导出设置" - }, - "exportSettingsToSync": { - "message": "导出设置到同步服务" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "将常用网站按需重定向到隐私友好的替代前端/后端的 Web 扩展程序" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "获取公共实例" - }, - "frontend": { - "description": "used in the settings page", - "message": "前端" - }, - "general": { - "description": "used in the settings page", - "message": "通用" - }, - "importSettings": { - "description": "used in the settings page", - "message": "导入设置" - }, - "importSettingsFromSync": { - "message": "从同步服务导入设置" - }, - "light": { - "description": "used in the settings page", - "message": "浅色" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "仅嵌入页面" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "仅常规页面" - }, - "pingInstances": { - "message": "对实例进行测速" - }, - "redirect": { - "message": "重定向" - }, - "redirectGoogle": { - "message": "重定向 Google" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "尝试重定向" - }, - "redirectOnlyInIncognito": { - "message": "仅在隐私模式下重定向" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "重定向至原网址" - }, - "redirectType": { - "description": "used in the settings page", - "message": "重定向类型" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "重置设置" - }, - "searchHint": { - "message": "请将 LibRedirect 设为默认搜索引擎。对于 Chromium 的操作方法,点击\u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>此处\u003C/a>了解。" - }, - "searchService": { - "message": "搜索服务" - }, - "search_frontend": { - "message": "搜索前端" - }, - "service": { - "message": "服务" - }, - "services": { - "message": "服务" - }, - "settings": { - "description": "used in the popup", - "message": "设置" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "显示在弹窗中" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "切换实例" - }, - "theme": { - "description": "used in the settings page", - "message": "主题" - }, - "unsupportedIframesHandling": { - "message": "未支持的嵌入页面的处理方式" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/zh_Hant/messages.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/zh_Hant/messages.json deleted file mode 100644 index 44486bd..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/_locales/zh_Hant/messages.json +++ /dev/null @@ -1,160 +0,0 @@ -{ - "about": { - "message": "關於" - }, - "addYourFavoriteInstances": { - "description": "used in the settings page", - "message": "新增你喜歡的實例" - }, - "auto": { - "description": "used in the settings page", - "message": "自動" - }, - "autoPickInstance": { - "message": "自動選擇實例" - }, - "block": { - "message": "封鎖" - }, - "bookmarksMenu": { - "message": "書籤選單" - }, - "both": { - "description": "used in the settings page", - "message": "兩者" - }, - "bypass": { - "message": "繞行" - }, - "copied": { - "message": "已複製" - }, - "copyOriginal": { - "message": "複製原始的" - }, - "dark": { - "description": "used in the settings page", - "message": "深色" - }, - "disable": { - "message": "停用" - }, - "embedFrontend": { - "message": "嵌入前端" - }, - "enable": { - "description": "used in the settings page", - "message": "啟用" - }, - "excludeFromRedirecting": { - "description": "used in the settings page", - "message": "排除重新導向" - }, - "exportSettings": { - "description": "used in the settings page", - "message": "匯出設定" - }, - "exportSettingsToSync": { - "message": "匯出設定以同步" - }, - "extensionDescription": { - "description": "description of the extension", - "message": "一個網路擴充功能可以將熱門網站重新導向至隱私友好的替代服務" - }, - "extensionName": { - "description": "name of the extension", - "message": "LibRedirect" - }, - "fetchPublicInstances": { - "message": "取得公共實例" - }, - "frontend": { - "description": "used in the settings page", - "message": "前端" - }, - "general": { - "description": "used in the settings page", - "message": "一般" - }, - "importSettings": { - "description": "used in the settings page", - "message": "匯入設定" - }, - "importSettingsFromSync": { - "message": "從同步匯入設定" - }, - "light": { - "description": "used in the settings page", - "message": "淺色" - }, - "onlyEmbedded": { - "description": "used in the settings page", - "message": "僅已內嵌" - }, - "onlyNotEmbedded": { - "description": "used in the settings page", - "message": "僅非已內嵌" - }, - "pingInstances": { - "message": "Ping 實例" - }, - "redirect": { - "message": "重新導向" - }, - "redirectGoogle": { - "message": "重新導向 Google" - }, - "redirectLink": { - "description": "Used in context menus when right clicking on a hyperlink", - "message": "嘗試重新導向" - }, - "redirectOnlyInIncognito": { - "message": "僅在隱身模式下重新導向" - }, - "redirectToOriginal": { - "description": "Used in context menus when right clicking on a page/tab", - "message": "重新導向至原始網址" - }, - "redirectType": { - "description": "used in the settings page", - "message": "重新導向類型" - }, - "resetSettings": { - "description": "used in the settings page", - "message": "重設設定" - }, - "searchHint": { - "message": "設定 LibRedirect 為預設搜尋引擎。如要了解如何在 Chromium 瀏覽器中執行操作,請點擊\u003Ca href='https://libredirect.github.io/docs.html#search_engine_chromium' target='_blank' rel='noopener noreferrer'>此處\u003C/a>。" - }, - "searchService": { - "message": "搜尋服務" - }, - "search_frontend": { - "message": "搜尋前端" - }, - "service": { - "message": "服務" - }, - "services": { - "message": "服務" - }, - "settings": { - "description": "used in the popup", - "message": "設定" - }, - "showInPopup": { - "description": "used in the settings page", - "message": "在快顯視窗顯示" - }, - "switchInstance": { - "description": "used in manifest.json as shortcut description", - "message": "切換實例" - }, - "theme": { - "description": "used in the settings page", - "message": "主題" - }, - "unsupportedIframesHandling": { - "message": "不支援的嵌入處理" - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/about-icon-light.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/about-icon-light.svg deleted file mode 100644 index acd7163..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/about-icon-light.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/about-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/about-icon.svg deleted file mode 100644 index 26fbc4b..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/about-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/baiduTieba-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/baiduTieba-icon.svg deleted file mode 100644 index 70f8c46..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/baiduTieba-icon.svg +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/bandcamp-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/bandcamp-icon.svg deleted file mode 100644 index 5c46120..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/bandcamp-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/bilibili-icon-light.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/bilibili-icon-light.svg deleted file mode 100644 index 7e24f30..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/bilibili-icon-light.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/bilibili-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/bilibili-icon.svg deleted file mode 100644 index 8cb0016..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/bilibili-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/bluesky-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/bluesky-icon.svg deleted file mode 100644 index dfdf196..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/bluesky-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/chatGpt-icon-light.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/chatGpt-icon-light.svg deleted file mode 100644 index b3df81f..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/chatGpt-icon-light.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/chatGpt-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/chatGpt-icon.svg deleted file mode 100644 index e04db75..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/chatGpt-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/chefkoch-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/chefkoch-icon.svg deleted file mode 100644 index 12e1f3b..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/chefkoch-icon.svg +++ /dev/null @@ -1,43 +0,0 @@ - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/coub-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/coub-icon.svg deleted file mode 100644 index cc08cd5..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/coub-icon.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/deviantArt-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/deviantArt-icon.svg deleted file mode 100644 index 30836c1..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/deviantArt-icon.svg +++ /dev/null @@ -1,474 +0,0 @@ - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/fandom-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/fandom-icon.svg deleted file mode 100644 index c49375b..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/fandom-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/geeksForGeeks-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/geeksForGeeks-icon.svg deleted file mode 100644 index 52e1960..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/geeksForGeeks-icon.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/general-icon-light.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/general-icon-light.svg deleted file mode 100644 index b806a4c..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/general-icon-light.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/general-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/general-icon.svg deleted file mode 100644 index a6f96ba..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/general-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/genius-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/genius-icon.svg deleted file mode 100644 index 3bd7d72..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/genius-icon.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/github-icon-light.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/github-icon-light.svg deleted file mode 100644 index e8d2b8a..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/github-icon-light.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/github-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/github-icon.svg deleted file mode 100644 index 38c6889..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/github-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/gitlab-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/gitlab-icon.svg deleted file mode 100644 index bb61f3b..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/gitlab-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/goodreads-icon-light.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/goodreads-icon-light.svg deleted file mode 100644 index 668208d..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/goodreads-icon-light.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/goodreads-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/goodreads-icon.svg deleted file mode 100644 index b41201f..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/goodreads-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/ifunny-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/ifunny-icon.svg deleted file mode 100644 index bceff0e..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/ifunny-icon.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/imdb-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/imdb-icon.svg deleted file mode 100644 index 888dafc..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/imdb-icon.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/imgur-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/imgur-icon.svg deleted file mode 100644 index 6d5296c..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/imgur-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/instagram-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/instagram-icon.svg deleted file mode 100644 index cfbab00..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/instagram-icon.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/instructables-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/instructables-icon.svg deleted file mode 100644 index 7b21ca3..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/instructables-icon.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/knowyourmeme-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/knowyourmeme-icon.svg deleted file mode 100644 index db68467..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/knowyourmeme-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-128.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-128.png deleted file mode 100644 index be041be..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-128.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-16.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-16.png deleted file mode 100644 index db4c453..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-16.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-32.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-32.png deleted file mode 100644 index d62ae4f..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-32.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-48.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-48.png deleted file mode 100644 index e56758a..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-48.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-64.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-64.png deleted file mode 100644 index 58e68ec..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-64.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-96.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-96.png deleted file mode 100644 index 3950fc2..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect-96.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect.png b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect.png deleted file mode 100644 index a8706b2..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect.png and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect.svg deleted file mode 100644 index a9d63d9..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/libredirect.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/maps-icon-light.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/maps-icon-light.svg deleted file mode 100644 index 4cb6f47..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/maps-icon-light.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/maps-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/maps-icon.svg deleted file mode 100644 index c721b60..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/maps-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/medium-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/medium-icon.svg deleted file mode 100644 index a286957..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/medium-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/meet-icon-light.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/meet-icon-light.svg deleted file mode 100644 index 8277ad7..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/meet-icon-light.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/meet-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/meet-icon.svg deleted file mode 100644 index 74af6cc..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/meet-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/mozhi-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/mozhi-icon.svg deleted file mode 100644 index b04b541..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/mozhi-icon.svg +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - - - - - - - - - - O - M - Z - H - - - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/office-icon-light.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/office-icon-light.svg deleted file mode 100644 index fffa366..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/office-icon-light.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/office-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/office-icon.svg deleted file mode 100644 index d2b79cb..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/office-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/pastebin-icon-light.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/pastebin-icon-light.svg deleted file mode 100644 index 406714d..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/pastebin-icon-light.svg +++ /dev/null @@ -1,101 +0,0 @@ - - - - - Pastebin icon - - - - - - - - - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/pastebin-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/pastebin-icon.svg deleted file mode 100644 index 341fbd8..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/pastebin-icon.svg +++ /dev/null @@ -1,2 +0,0 @@ - -Pastebin icon \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/peertube-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/peertube-icon.svg deleted file mode 100644 index 25f6491..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/peertube-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/pinterest-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/pinterest-icon.svg deleted file mode 100644 index 810da5a..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/pinterest-icon.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/pixiv-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/pixiv-icon.svg deleted file mode 100644 index 8de64da..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/pixiv-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/quora-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/quora-icon.svg deleted file mode 100644 index ed74b30..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/quora-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/reddit-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/reddit-icon.svg deleted file mode 100644 index 0dba3c4..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/reddit-icon.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/reuters-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/reuters-icon.svg deleted file mode 100644 index 15a0d22..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/reuters-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/search-icon-light.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/search-icon-light.svg deleted file mode 100644 index ecf12d8..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/search-icon-light.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/search-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/search-icon.svg deleted file mode 100644 index 4af443f..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/search-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/sendFiles-icon-light.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/sendFiles-icon-light.svg deleted file mode 100644 index 107a437..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/sendFiles-icon-light.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/sendFiles-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/sendFiles-icon.svg deleted file mode 100644 index e4a65ab..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/sendFiles-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/snopes-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/snopes-icon.svg deleted file mode 100644 index b3f6148..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/snopes-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/soundcloud-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/soundcloud-icon.svg deleted file mode 100644 index b249ac1..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/soundcloud-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/stackOverflow-icon-light.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/stackOverflow-icon-light.svg deleted file mode 100644 index 6bbf26e..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/stackOverflow-icon-light.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/stackOverflow-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/stackOverflow-icon.svg deleted file mode 100644 index de6243f..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/stackOverflow-icon.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/tekstowo-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/tekstowo-icon.svg deleted file mode 100644 index 1c99147..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/tekstowo-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/tenor-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/tenor-icon.svg deleted file mode 100644 index 0264ede..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/tenor-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/textStorage-icon-light.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/textStorage-icon-light.svg deleted file mode 100644 index 58a3edd..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/textStorage-icon-light.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/textStorage-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/textStorage-icon.svg deleted file mode 100644 index d6073d6..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/textStorage-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/threads-icon-light.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/threads-icon-light.svg deleted file mode 100644 index 809c12d..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/threads-icon-light.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/threads-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/threads-icon.svg deleted file mode 100644 index e99823b..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/threads-icon.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/tiktok-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/tiktok-icon.svg deleted file mode 100644 index 3ed3c6c..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/tiktok-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/translate-icon-light.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/translate-icon-light.svg deleted file mode 100644 index cf1a6da..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/translate-icon-light.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/translate-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/translate-icon.svg deleted file mode 100644 index a79f1ab..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/translate-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/tumblr-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/tumblr-icon.svg deleted file mode 100644 index a7e084a..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/tumblr-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/twitch-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/twitch-icon.svg deleted file mode 100644 index 8b49d5f..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/twitch-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/twitter-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/twitter-icon.svg deleted file mode 100644 index 1f44830..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/twitter-icon.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/ultimateGuitar-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/ultimateGuitar-icon.svg deleted file mode 100644 index 5f587c3..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/ultimateGuitar-icon.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/urbanDictionary-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/urbanDictionary-icon.svg deleted file mode 100644 index 8bf07b0..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/urbanDictionary-icon.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/waybackMachine-icon-light.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/waybackMachine-icon-light.svg deleted file mode 100644 index e3d6ced..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/waybackMachine-icon-light.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/waybackMachine-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/waybackMachine-icon.svg deleted file mode 100644 index f0e6497..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/waybackMachine-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/wikipedia-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/wikipedia-icon.svg deleted file mode 100644 index 9b28a3a..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/wikipedia-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/wolframAlpha-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/wolframAlpha-icon.svg deleted file mode 100644 index a81d803..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/wolframAlpha-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/youtube-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/youtube-icon.svg deleted file mode 100644 index 8570ec0..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/youtube-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/youtubeMusic-icon.svg b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/youtubeMusic-icon.svg deleted file mode 100644 index 76b052f..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/images/youtubeMusic-icon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/javascripts/services.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/javascripts/services.js deleted file mode 100644 index ef9d904..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/javascripts/services.js +++ /dev/null @@ -1,1108 +0,0 @@ -import utils from "./utils.js" - -const isChrome = browser.runtime.getBrowserInfo === undefined -window.browser = window.browser || window.chrome - -let config, options - -async function init() { - options = await utils.getOptions() - config = await utils.getConfig() -} - -init() -browser.storage.onChanged.addListener(init) - -function all(service, frontend, options, config) { - let instances = [] - if (!frontend) { - for (const frontend in config.services[service].frontends) { - if (options[frontend]) { - instances.push(...options[frontend]) - } - } - } else if (options[frontend]) { - instances = options[frontend] - } - return instances -} - -/** - * @param {string} service - * @param {URL} url - * @param {{}} config - * @param {{}} options - * @param {string} frontend - */ -function regexArray(service, url, config, options, frontend) { - let targetList = config.services[service].targets - if (frontend) { - if ( - "excludeTargets" in config.services[service].frontends[frontend] && - (service !== "search" || !options["search"].redirectGoogle) - ) { - targetList = targetList.filter( - val => !config.services[service].frontends[frontend].excludeTargets.includes(targetList.indexOf(val)) - ) - } - if (service === "twitter" && options["twitter"].disableTwimg) { - targetList.splice(2, 1) - } - } - for (const targetString in targetList) { - const target = new RegExp(targetList[targetString]) - if (target.test(url.href)) return true - } - return false -} - -/** - * @param {URL} url - * @param {string} frontend - * @param {string} randomInstance - * @param {string} type - * @returns {undefined|string} - */ -function rewrite(url, originUrl, frontend, randomInstance, type) { - switch (frontend) { - case "hyperpipe": - for (const key of [...url.searchParams.keys()]) if (key !== "q") url.searchParams.delete(key) - return `${randomInstance}${url.pathname}${url.search}`.replace(/\/search\?q=.*/, searchQuery => - searchQuery.replace("?q=", "/") - ) - case "searx": - case "searxng": - for (const key of [...url.searchParams.keys()]) if (key !== "q") url.searchParams.delete(key) - return `${randomInstance}/${url.search}` - case "websurfx": - case "whoogle": - for (const key of [...url.searchParams.keys()]) if (key !== "q") url.searchParams.delete(key) - return `${randomInstance}/search${url.search}` - case "4get": { - const s = url.searchParams.get("q") - if (s !== null) return `${randomInstance}/web?s=${encodeURIComponent(s)}` - return randomInstance - } - case "librey": - for (const key in url.searchParams.keys()) if (key != "q") url.searchParams.delete(key) - return `${randomInstance}/search.php${url.search}` - case "yattee": - url.searchParams.delete("si") - return url.href.replace(/^https?:\/{2}/, "yattee://") - case "freetube": - url.searchParams.delete("si") - return "freetube://" + url.href - case "freetubePwa": - url.searchParams.delete("si") - return "freetube://" + url.href - case "poketube": { - url.searchParams.delete("si") - if (url.pathname.startsWith("/channel")) { - const reg = /\/channel\/(.*)\/?$/.exec(url.pathname) - if (reg) { - const id = reg[1] - return `${randomInstance}/channel?id=${id}${url.search}` - } - } - if (/\/@[a-z]+\//.exec(url.pathname)) return randomInstance - return `${randomInstance}${url.pathname}${url.search}` - } - case "small": - case "libMedium": - case "freedium": - case "scribe": { - const regex = url.hostname.match(/^(link|cdn-images-\d+|.*)\.medium\.com/) - if (regex && regex.length > 1) { - const subdomain = regex[1] - if (subdomain != "link" || !subdomain.startsWith("cdn-images")) { - return `${randomInstance}/@${subdomain}${url.pathname}${url.search}` - } - } - return `${randomInstance}${url.pathname}${url.search}` - } - case "translite": - case "simplyTranslate": - return `${randomInstance}/${url.search}` - case "send": - case "mozhi": - return randomInstance - case "libreTranslate": - return `${randomInstance}/${url.search.replace("sl", "source").replace("tl", "target").replace("text", "q")}` - case "osm": { - if (originUrl && originUrl.host === "earth.google.com") return randomInstance - - let prefs = { layers: "mapnik" } - - let mapCentre = "#" - const mapCentreData = utils.convertMapCentre(url) - if (mapCentreData.zoom && mapCentreData.lon && mapCentreData.lat) { - mapCentre = `#map=${mapCentreData.zoom}/${mapCentreData.lon}/${mapCentreData.lat}` - } - - if (url.pathname.includes("/embed")) { - // https://www.google.com/maps/embed/v1/place?key=AIzaSyD4iE2xVSpkLLOXoyqT-RuPwURN3ddScAI&q=Eiffel+Tower,Paris+France - const query = utils.getQuery(url) - let { coordinate, boundingbox } = utils.addressToLatLng(query) - prefs.bbox = boundingbox - prefs.marker = coordinate - return `${randomInstance}/export/embed.html?${utils.prefsEncoded(prefs)}` - } - - if (url.pathname.includes("/dir")) { - if (url.searchParams.has("travelmode")) { - const travelModes = { - driving: "fossgis_osrm_car", - walking: "fossgis_osrm_foot", - bicycling: "fossgis_osrm_bike", - transit: "fossgis_osrm_car", // not implemented on OSM, default to car. - } - prefs.engine = travelModes[url.searchParams.get("travelmode")] - } - const regex1 = /\/dir\/([^@/]+)\/([^@/]+)\/@-?\d[0-9.]*,-?\d[0-9.]*,\d{1,2}[.z]/.exec(url.pathname) - const regex2 = /\/dir\/([^@/]+)\//.exec(url.pathname) - if (regex1) { - // https://www.google.com/maps/dir/92+Rue+Moncey,+69003+Lyon,+France/M%C3%A9dip%C3%B4le+Lyon-Villeurbanne/@45.760254,4.8486298,13z?travelmode=bicycling - const origin = utils.addressToLatLng(decodeURIComponent(regex1[1])).coordinate ?? "" - const destination = utils.addressToLatLng(decodeURIComponent(regex1[2])).coordinate ?? "" - prefs.route = `${origin};${destination}` - } else if (regex2) { - // https://www.google.com/maps/dir/92+Rue+Moncey,+69003+Lyon,+France/@45.760254,4.8486298,13z?travelmode=bicycling - const origin = utils.addressToLatLng(decodeURIComponent(regex2[1])).coordinate ?? "" - prefs.route = `${origin};` - } else { - // https://www.google.com/maps/dir/?api=1&origin=Space+Needle+Seattle+WA&destination=Pike+Place+Market+Seattle+WA&travelmode=bicycling - const origin = utils.addressToLatLng(url.searchParams.get("origin")).coordinate ?? "" - const destination = utils.addressToLatLng(url.searchParams.get("destination")).coordinate ?? "" - prefs.route = `${origin};${destination}` - } - return `${randomInstance}/directions?${utils.prefsEncoded(prefs)}${mapCentre}` - } - - const placeRegex = /\/place\/(.*?)\// - if (url.pathname.match(placeRegex)) { - // https://www.google.com/maps/place/H%C3%B4tel+de+Londres+Eiffel/@40.9845265,28.7081268,14z - const query = url.pathname.match(placeRegex)[1] - return `${randomInstance}/search?query=${query}${mapCentre}` - } - - if (url.searchParams.has("ll")) { - // https://maps.google.com/?ll=38.882147,-76.99017 - const [mlat, mlon] = url.searchParams.get("ll").split(",") - return `${randomInstance}/search?query=${mlat}%2C${mlon}` - } - - if (url.searchParams.has("viewpoint")) { - // https://www.google.com/maps/@?api=1&map_action=pano&viewpoint=48.857832,2.295226&heading=-45&pitch=38&fov=80 - const [mlat, mlon] = url.searchParams.get("viewpoint").split(",") - return `${randomInstance}/search?query=${mlat}%2C${mlon}` - } - - const query = utils.getQuery(url) - if (query) return `${randomInstance}/search?query=${query}${mapCentre}&${utils.prefsEncoded(prefs)}` - return `${randomInstance}/${mapCentre}&${utils.prefsEncoded(prefs)}` - } - case "phantom": - case "breezeWiki": { - let wiki, - urlpath = "" - if (url.hostname.match(/^[a-zA-Z0-9-]+\.(?:fandom|wikia)\.com/)) { - wiki = url.hostname.match(/^[a-zA-Z0-9-]+(?=\.(?:fandom|wikia)\.com)/) - if (wiki == "www" || !wiki) wiki = "" - else wiki = `/${wiki}` - urlpath = url.pathname - } else { - wiki = url.pathname.match(/(?<=wiki\/w:c:)[a-zA-Z0-9-]+(?=:)/) - if (!wiki) wiki = "" - else { - wiki = "/" + wiki + "/wiki/" - urlpath = url.pathname.match(/(?<=wiki\/w:c:[a-zA-Z0-9-]+:).+/) - } - } - if (url.href.search(/Special:Search\?query/) > -1) { - return `${randomInstance}${wiki}${urlpath}${url.search}` - .replace(/Special:Search\?query/, "search?q") - .replace(/\/wiki/, "") - } - return `${randomInstance}${wiki}${urlpath}${url.search}` - } - case "rimgo": - if (url.href.search(/^https?:\/{2}(?:[im]\.)?stack\./) > -1) - return `${randomInstance}/stack${url.pathname}${url.search}` - return `${randomInstance}${url.pathname}${url.search}` - case "redlib": - case "libreddit": { - const subdomain = url.hostname.match(/^(?:((?:external-)?preview|i)\.)?redd\.it/) - if (!subdomain) return `${randomInstance}${url.pathname}${url.search}` - switch (subdomain[1]) { - case "preview": - return `${randomInstance}/preview/pre${url.pathname}${url.search}` - case "external-preview": - return `${randomInstance}/preview/external-pre${url.pathname}${url.search}` - case "i": - return `${randomInstance}/img${url.pathname}` - } - return `${randomInstance}/comments${url.pathname}` - } - case "teddit": - if (/^(?:(?:external-)?preview|i)\.redd\.it/.test(url.hostname)) { - if (url.search == "") return `${randomInstance}${url.pathname}?teddit_proxy=${url.hostname}` - else return `${randomInstance}${url.pathname}${url.search}&teddit_proxy=${url.hostname}` - } - return `${randomInstance}${url.pathname}${url.search}` - case "troddit": - case "eddrit": - if (/^(?:(?:external-)?preview|i)\.redd\.it/.test(url.hostname)) return randomInstance - return `${randomInstance}${url.pathname}${url.search}` - case "neuters": { - const p = url.pathname - if (p.startsWith("/article/") || p.startsWith("/pf/") || p.startsWith("/arc/") || p.startsWith("/resizer/")) { - return randomInstance - } - return `${randomInstance}${p}` - } - case "dumb": - if (url.pathname.endsWith("-lyrics")) return `${randomInstance}${url.pathname}` - return `${randomInstance}${url.pathname}${url.search}` - case "intellectual": - return `${randomInstance}${url.pathname}${url.search}` - case "ruralDictionary": - if (!url.pathname.includes("/define.php") && !url.pathname.includes("/random.php") && url.pathname != "/") - return randomInstance - return `${randomInstance}${url.pathname}${url.search}` - case "anonymousOverflow": { - if (url.hostname == "stackoverflow.com") { - const threadID = /^\/a\/(\d+)\/?/.exec(url.pathname) - if (threadID) return `${randomInstance}/questions/${threadID[1]}${url.search}` - return `${randomInstance}${url.pathname}${url.search}` - } - if (url.pathname == "/" || url.pathname == "") { - // https://stackexchange.com or https://superuser.com - return `${randomInstance}${url.pathname}${url.search}` - } - const regex = url.href.match(/https?:\/{2}(?:([a-zA-Z0-9-]+)\.(meta\.)?)?stackexchange\.com\//) - if (regex && regex.length > 1) { - if (regex[2]) { - return `${randomInstance}/exchange/${url.hostname}${url.pathname}${url.search}` - } - const subdomain = regex[1] - return `${randomInstance}/exchange/${subdomain}${url.pathname}${url.search}` - } - const notExchangeRegex = url.hostname.match( - /(?:[a-zA-Z]+\.)?(?:askubuntu\.com|mathoverflow\.net|serverfault\.com|stackapps\.com|superuser\.com|stackoverflow\.com)/ - ) - if (notExchangeRegex) { - return `${randomInstance}/exchange/${notExchangeRegex[0]}${url.pathname}${url.search}` - } - return `${randomInstance}${url.pathname}${url.search}` - } - case "biblioReads": - return `${randomInstance}${url.pathname}${url.search}` - case "wikimore": { - let hostSplit = url.host.split(".") - // wikiless doesn't have mobile view support yet - if (hostSplit[0] != "wikipedia" && hostSplit[0] != "www") { - const lang = url.hostname.split(".")[0] - return `${randomInstance}/wiki/${lang}${url.pathname}${url.search}${url.hash}` - } - return `${randomInstance}${url.pathname}${url.search}${url.hash}` - } - case "wikiless": { - let hostSplit = url.host.split(".") - // wikiless doesn't have mobile view support yet - if (hostSplit[0] != "wikipedia" && hostSplit[0] != "www") { - if (hostSplit[0] == "m") url.searchParams.append("mobileaction", "toggle_view_mobile") - else url.searchParams.append("lang", hostSplit[0]) - if (hostSplit[1] == "m") url.searchParams.append("mobileaction", "toggle_view_mobile") - } - return `${randomInstance}${url.pathname}${url.search}${url.hash}` - } - case "offtiktok": - case "proxiTok": - if (url.pathname.startsWith("/email")) return randomInstance - return `${randomInstance}${url.pathname}${url.search}` - case "waybackClassic": { - const regex = /^\/\web\/(?:[0-9]+)?\*\/(.*)/.exec(url.pathname) - if (regex) { - const link = regex[1] - return `${randomInstance}/cgi-bin/history.cgi?utf8=✓&q=${encodeURIComponent(link)}` - } - const regex2 = /(^\/\web\/([0-9]+)\/.*)/.exec(url.pathname) - if (regex2) { - let link = regex2[1] - link = link.replace(regex2[2], regex2[2] + "if_") - return `https://web.archive.org${link}` - } - return - } - case "gothub": - if (url.hostname == "gist.github.com") return `${randomInstance}/gist${url.pathname}${url.search}` - if (url.hostname == "raw.githubusercontent.com") return `${randomInstance}/raw${url.pathname}${url.search}` - return `${randomInstance}${url.pathname}${url.search}` - case "mikuInvidious": - if (url.hostname == "bilibili.com" || url.hostname == "www.bilibili.com" || url.hostname == "b23.tv") - return `${randomInstance}${url.pathname}${url.search}` - if (url.hostname == "space.bilibili.com") return `${randomInstance}/space${url.pathname}${url.search}` - case "tent": { - if (url.hostname == "bandcamp.com" && url.pathname == "/search") { - const query = url.searchParams.get("q") - return `${randomInstance}/search.php?query=${encodeURIComponent(query)}` - } - if (url.hostname.endsWith("bandcamp.com")) { - const regex = /^(.*)\.bandcamp\.com/.exec(url.hostname) - const artist = regex[1] - if (url.pathname == "/" || url.pathname == "/music") { - return `${randomInstance}/artist.php?name=${artist}` - } else { - const regex = /^\/(.*)\/(.*)/.exec(url.pathname) - if (regex) { - const type = regex[1] - const name = regex[2] - return `${randomInstance}/release.php?artist=${artist}&type=${type}&name=${name}` - } - } - } - if (url.hostname == "f4.bcbits.com") { - const regex = /\/img\/(.*)/.exec(url.pathname) - const image = regex[1] - return `${randomInstance}/image.php?file=${image}` - } - if (url.hostname == "t4.bcbits.com") { - const regex = /\/stream\/(.*)\/(.*)\/(.*)/.exec(url.pathname) - if (regex) { - const directory = regex[1] - const format = regex[2] - const file = regex[3] - const token = url.searchParams.get("token") - return `${randomInstance}/audio.php/?directory=${directory}&format=${format}&file=${file}&token=${encodeURIComponent(token)}` - } - } - } - case "binternet": - if (url.hostname == "i.pinimg.com") return `${randomInstance}/image_proxy.php?url=${encodeURIComponent(url.href)}` - return `${randomInstance}${url.pathname}${url.search}` - case "painterest": - if (url.hostname == "i.pinimg.com") return `${randomInstance}/_/proxy?url=${encodeURIComponent(url.href)}` - const regex = /^\/pin\/[^\/]+/.exec(url.pathname) - if (regex) return `${randomInstance}${regex[0]}` - return `${randomInstance}${url.pathname}${url.search}` - case "laboratory": { - let path = url.pathname - if (path == "/") path = "" - return `${randomInstance}/${url.hostname}${path}${url.search}` - } - case "quetre": { - const regex = /([a-z]+)\.quora\.com/.exec(url.hostname) - if (regex) { - const lang = regex[1] - url.searchParams.append("lang", lang) - return `${randomInstance}${url.pathname}${url.search}` - } - return `${randomInstance}${url.pathname}${url.search}` - } - case "pixivViewer": - case "liteXiv": - case "pixivFe": { - const regex = /\/[a-z]{1,3}\/(.*)/.exec(url.pathname) - if (regex) { - const path = regex[1] - return `${randomInstance}/${path}${url.search}` - } - return `${randomInstance}${url.pathname}${url.search}` - } - case "vixipy": { - const regex = /\/[a-z]{1,3}\/(.*)/.exec(url.pathname) - if (regex) { - let path = regex[1] - if (path.startsWith("tags/")) path = path.replace(/tags/, "tag") - return `${randomInstance}/${path}${url.search}` - } - return `${randomInstance}${url.pathname}${url.search}` - } - case "invidious": { - // tracker - url.searchParams.delete("si") - - if (type == "sub_frame") url.searchParams.append("autoplay", "0") - - if (url.hostname == "youtu.be" || (url.hostname.endsWith("youtube.com") && url.pathname.startsWith("/live"))) { - const watch = url.pathname.substring(url.pathname.lastIndexOf("/") + 1) - return `${randomInstance}/watch?v=${watch}&${url.search.substring(1)}` - } - if (url.hostname.endsWith("youtube.com") && url.pathname.startsWith("/redirect?")) return url.href - return `${randomInstance}${url.pathname}${url.search}` - } - case "freetubeMusic": { - if (url.hostname == "youtu.be" || (url.hostname.endsWith("youtube.com") && url.pathname.startsWith("/live"))) { - const watch = url.pathname.substring(url.pathname.lastIndexOf("/") + 1) - return `freetube://youtube.com/watch?v=${watch}` - } - return "freetube://" + url.href - } - case "invidiousMusic": { - if (url.hostname == "youtu.be" || (url.hostname.endsWith("youtube.com") && url.pathname.startsWith("/live"))) { - const watch = url.pathname.substring(url.pathname.lastIndexOf("/") + 1) - return `${randomInstance}/watch?v=${watch}` - } - return `${randomInstance}${url.pathname}${url.search}` - } - case "materialious": { - url.searchParams.delete("si") - if (url.hostname == "youtu.be" || (url.hostname.endsWith("youtube.com") && url.pathname.startsWith("/live"))) { - const watch = url.pathname.substring(url.pathname.lastIndexOf("/") + 1) - return `${randomInstance}/watch/${watch}${url.search.replace("?", "&")}` - } - if (url.hostname.endsWith("youtube.com")) { - if (url.pathname.startsWith("/watch")) { - if (url.searchParams.has("v")) { - const watch = url.searchParams.get("v") - url.searchParams.delete("v") - return `${randomInstance}/watch/${watch}${url.search.replace("?", "&")}` - } - return `${randomInstance}/watch/${url.search.replace("?", "&")}` - } - if (url.pathname.startsWith("/results")) { - if (url.searchParams.has("search_query")) { - const search = url.searchParams.get("search_query") - url.searchParams.delete("search_query") - return `${randomInstance}/search/${search}${url.search.replace("?", "&")}` - } - return `${randomInstance}/search/${url.search.replace("?", "&")}` - } - if (url.pathname.startsWith("/redirect?")) { - return url.href - } - } - return `${randomInstance}${url.pathname}${url.search}` - } - case "libremdb": { - if (/\/((?:name|title)\/\w+)\/?$/.exec(url.pathname)) { - return `${randomInstance}${url.pathname}${url.search}` - } - return randomInstance - } - case "tuboYoutube": - url.searchParams.delete("si") - if (url.pathname.startsWith("/channel")) return `${randomInstance}/channel?url=${encodeURIComponent(url.href)}` - if (url.pathname.startsWith("/watch")) return `${randomInstance}/stream?url=${encodeURIComponent(url.href)}` - return randomInstance - case "tuboSoundcloud": - if (url.pathname == "/") return `${randomInstance}?kiosk?serviceId=1` - if (url.pathname.match(/^\/[^\/]+(\/$|$)/)) return `${randomInstance}/channel?url=${encodeURIComponent(url.href)}` - if (url.pathname.match(/^\/[^\/]+\/[^\/]+/)) return `${randomInstance}/stream?url=${encodeURIComponent(url.href)}` - return randomInstance - case "twineo": - case "safetwitch": - if (url.hostname.startsWith("clips.")) return `${randomInstance}/clip${url.pathname}${url.search}` - return `${randomInstance}${url.pathname}${url.search}` - - case "tekstoLibre": - return `${randomInstance}/?${url.pathname.slice(1)}` - case "skyview": - if (url.pathname == "/") return randomInstance - return `${randomInstance}?url=${encodeURIComponent(url.href)}` - case "nitter": { - let search = new URLSearchParams(url.search) - - search.delete("ref_src") - search.delete("ref_url") - search.delete("s") // type of device that shared the link - search.delete("t") // some sort of tracking ID - - search = search.toString() - if (search !== "") search = `?${search}` - - if (url.host.split(".")[0] === "pbs" || url.host.split(".")[0] === "video") { - try { - const [, id, format, extra] = search.match(/(.*)\?format=(.*)&(.*)/) - const query = encodeURIComponent(`${id}.${format}?${extra}`) - return `${randomInstance}/pic${url.pathname}${query}` - } catch { - return `${randomInstance}/pic${url.pathname}${search}` - } - } - if (url.pathname.split("/").includes("tweets")) - return `${randomInstance}${url.pathname.replace("/tweets", "")}${search}` - if (url.host == "t.co") return `${randomInstance}/t.co${url.pathname}` - return `${randomInstance}${url.pathname}${search}#m` - } - case "priviblur": { - if (url.hostname == "www.tumblr.com") return `${randomInstance}${url.pathname}${url.search}` - if (url.hostname.startsWith("assets")) return `${randomInstance}/tblr/assets${url.pathname}${url.search}` - if (url.hostname.startsWith("static")) return `${randomInstance}/tblr/static${url.pathname}${url.search}` - - const reg = /^([0-9]+)\.media\.tumblr\.com/.exec(url.hostname) // *.media.tumblr.com - if (reg) return `${randomInstance}/tblr/media/${reg[1]}${url.pathname}${url.search}` - - const blogregex = /^(?:www\.)?([a-z\d-]+)\.tumblr\.com/.exec(url.hostname) // .tumblr.com - if (blogregex) { - const blog_name = blogregex[1] - // Under the .tumblr.com domain posts are under a /post path - if (url.pathname.startsWith("/post")) - return `${randomInstance}/${blog_name}${url.pathname.slice(5)}${url.search}` - else return `${randomInstance}/${blog_name}${url.pathname}${url.search}` - } - return `${randomInstance}${url.pathname}${url.search}` - } - case "ultimateTab": - case "freetar": - if (url.pathname.startsWith("/search.php")) { - url.searchParams.set("search_term", url.searchParams.get("value")) - url.searchParams.delete("value") - url.searchParams.delete("search_type") - return `${randomInstance}/search${url.search}` - } - if (url.pathname.startsWith("/artist")) return - return `${randomInstance}${url.pathname}${url.search}` - case "ratAintTieba": - url.searchParams.delete("ie") - return `${randomInstance}${url.pathname}${url.search}` - case "shoelace": { - const reg = /^\/(?:(?:(?:[^\/])?\/post)|t)\/([^\/])/.exec(url.pathname) - if (reg) return `${randomInstance}/t/${reg[1]}${url.search}` - return `${randomInstance}${url.pathname}${url.search}` - } - case "skunkyArt": { - if (url.pathname.startsWith("/search")) return `${randomInstance}${url.pathname}${url.search}&type=all` - - const artReg = /^\/(.*?)\/art\/(.*)\/?/.exec(url.pathname) - if (artReg) return `${randomInstance}/post/${artReg[1]}/${artReg[2]}${url.search}` - - const userReg = /^\/([^\/]+)$/.exec(url.pathname) - if (userReg) return `${randomInstance}/group_user?q=${userReg[1]}&type=about` - - const galleryReg = /^\/(.*?)\/gallery(\/$|$)$/.exec(url.pathname) - if (galleryReg) return `${randomInstance}/group_user?q=${galleryReg[1]}&type=gallery` - - return `${randomInstance}${url.pathname}${url.search}` - } - case "ytifyMusic": - case "ytify": { - if (url.pathname.startsWith("/watch")) - return `${randomInstance}/?s=${encodeURIComponent(url.searchParams.get("v"))}` - - const channelReg = /\/channel\/([^\/]+)/.exec(url.pathname) - if (channelReg) return `${randomInstance}/list?channel=${channelReg[1]}` - - if (url.pathname.startsWith("/playlist")) - return `${randomInstance}/list?playlists=${encodeURIComponent(url.searchParams.get("list"))}` - return `${randomInstance}${url.pathname}${url.search}` - } - case "koub": { - if (url.pathname.startsWith("/view/") || url.pathname.startsWith("/stories/")) { - return `${randomInstance}${url.pathname}${url.search}` - } - const accountReg = /^\/([^\/]+)\/?$/.exec(url.pathname) - if (accountReg) return `${randomInstance}/account${url.pathname}${url.search}` - return randomInstance - } - case "duckDuckGoAiChat": - return "https://duckduckgo.com/?q=DuckDuckGo+AI+Chat&ia=chat&duckai=1" - - case "protonLumo": - return "https://lumo.proton.me/" - - case "soundcloak": - if (url.pathname.startsWith("/feed") || url.pathname.startsWith("/stream")) { - // this feature requires authentication and is unsupported, so just redirect to main page - return randomInstance - } - - if (url.pathname.startsWith("/search")) { - if (!url.search) { - return randomInstance - } - - let type = "" - if (url.pathname.startsWith("/search/sounds")) { - type = "tracks" - } else if (url.pathname.startsWith("/search/people")) { - type = "users" - } else if (url.pathname.startsWith("/search/albums") || url.pathname.startsWith("/search/sets")) { - type = "playlists" - } - - if (type) { - type = "&type=" + type - } else { - return randomInstance // fallback for unsupported search types (searching for anything for example) - } - - return `${randomInstance}/search${url.search}${type}` - } - - if (url.host == "on.soundcloud.com") { - return `${randomInstance}/on${url.pathname}` - } - - return `${randomInstance}${url.pathname}${url.search}` - case "piped": - case "pipedMaterial": - case "cloudtube": - case "lightTube": - case "viewtube": - url.searchParams.delete("si") - default: - return `${randomInstance}${url.pathname}${url.search}` - } -} - -/** - * @param {URL} url - * @param {string} type - * @param {URL} originUrl - * @param {URL} documentUrl - * @param {boolean} incognito - * @param {boolean} forceRedirection - * @returns {string | undefined} - */ -function redirect(url, type, originUrl, documentUrl, incognito, forceRedirection) { - if (type != "main_frame" && type != "sub_frame" && type != "image") return - let randomInstance - let frontend - if (!forceRedirection && options.redirectOnlyInIncognito == true && !incognito) return - for (const service in config.services) { - if (!forceRedirection && !options[service].enabled) continue - if (!forceRedirection && options[service].redirectOnlyInIncognito == true && !incognito) continue - - frontend = options[service].frontend - - if ( - config.services[service].frontends[frontend].desktopApp && - type != "main_frame" && - options[service].redirectType != "main_frame" - ) - frontend = options[service].embedFrontend - - if (!regexArray(service, url, config, options, frontend)) { - frontend = null - continue - } - - if (type != "main_frame" && documentUrl && options[service].redirectType == "sub_frame") { - if (regexArray(service, documentUrl, config, options, frontend)) { - return - } - } - - if ( - config.services[service].embeddable && - type != options[service].redirectType && - options[service].redirectType != "both" - ) { - if (options[service].unsupportedUrls == "block") return "CANCEL" - return - } - - let instanceList = options[frontend] - if (instanceList === undefined) break // should not happen if settings are correct - - if (config.services[service].frontends[frontend].localhost && options[service].instance == "localhost") { - randomInstance = `http://${frontend}.localhost:8080` - } else if (instanceList.length === 0) { - return `https://no-instance.libredirect.invalid?frontend=${encodeURIComponent(frontend)}&url=${encodeURIComponent(url.href)}` - } else { - randomInstance = utils.getRandomInstance(instanceList) - } - - if (originUrl && instanceList.includes(originUrl.origin)) { - if (type == "main_frame") return "BYPASSTAB" - else return null - } - break - } - if (!frontend) return - - return rewrite(url, originUrl, frontend, randomInstance, type) -} - -/** - * @param {URL} url - * @param {string} type - * @param {URL} originUrl - * @param {URL} documentUrl - * @param {boolean} incognito - * @param {boolean} forceRedirection - * @returns {Promise} - */ -async function redirectAsync(url, type, originUrl, documentUrl, incognito, forceRedirection) { - await init() - return redirect(url, type, originUrl, documentUrl, incognito, forceRedirection) -} - -/** - * @param {URL} url - */ -async function computeServiceFrontend(url) { - const config = await utils.getConfig() - const options = await utils.getOptions() - for (const service in config.services) { - if (regexArray(service, url, config, options)) { - return { service, frontend: null } - } else { - for (const frontend in config.services[service].frontends) { - const instances = all(service, frontend, options, config) - const i = instances.findIndex(instance => url.href.startsWith(instance)) - if (i >= 0) { - return { service, frontend } - } - } - } - } -} - -/** - * @param {URL} url - * @param {string} customService - */ -function switchInstance(url, customService) { - return new Promise(async resolve => { - let options = await utils.getOptions() - let config = await utils.getConfig() - - const protocolHost = utils.protocolHost(url) - if (customService) { - const instancesList = options[options[customService].frontend] - if (instancesList !== undefined) { - const newInstance = utils.getNextInstance(url.origin, instancesList) - if (newInstance) { - return resolve(`${newInstance}${url.pathname}${url.search}`) - } - } - } else { - for (const service in config.services) { - let instancesList = options[options[service].frontend] - if (instancesList === undefined) continue - const index = instancesList.findIndex(instance => url.href.startsWith(instance)) - if (index < 0) continue - instancesList.splice(index, 1) - if (instancesList.length === 0) return resolve() - const newInstance = utils.getNextInstance(url.origin, instancesList) - if (newInstance) { - return resolve(`${newInstance}${url.pathname}${url.search}`) - } - } - } - resolve() - }) -} - -/** - * @param {URL} url - */ -async function reverse(url) { - let options = await utils.getOptions() - let config = await utils.getConfig() - for (const service in config.services) { - let frontend = options[service].frontend - if (options[frontend] == undefined) continue - if ( - options[frontend].findIndex(instance => url.href.startsWith(instance)) < 0 && - !url.href.startsWith(`http://${frontend}.localhost:8080`) - ) - continue - switch (service) { - case "youtube": - case "imdb": - case "imgur": - case "tiktok": - case "reddit": - case "imdb": - case "snopes": - case "urbanDictionary": - case "quora": - case "twitter": - case "medium": - case "pinterest": - return `${config.services[service].url}${url.pathname}${url.search}` - case "fandom": { - let regex = url.pathname.match(/^\/([a-zA-Z0-9-]+)\/wiki\/(.*)/) - if (regex) return `https://${regex[1]}.fandom.com/wiki/${regex[2]}` - return - } - case "wikipedia": { - const lang = url.searchParams.get("lang") - if (lang != null) { - return `https://${lang}.wikipedia.org${url.pathname}${url.search}${url.hash}` - } - return `https://wikipedia.org${url.pathname}${url.search}${url.hash}` - } - case "stackOverflow": { - if (url.pathname.startsWith("/questions/")) { - return `https://stackoverflow.com${url.pathname}${url.search}` - } - if (url.pathname.startsWith("/exchange/")) { - const regex = /\/exchange\/(.*?)(\/.*)/.exec(url.pathname) - if (regex) { - if (regex[1].includes(".")) { - return `https://${regex[1]}${regex[2]}` - } else { - return `https://${regex[1]}.stackexchange.com${regex[2]}` - } - } - } - return - } - case "tekstowo": - return `${config.services[service].url}/${url.search.slice(1)}` - case "goodreads": - return `https://goodreads.com${url.pathname}${url.search}` - case "soundcloud": - if (frontend == "soundcloak") { - if (url.pathname.includes("/_/")) { - // soundcloak-specific pages - return `${config.services[service].url}${url.pathname.split("/_/")[0]}` - } - - if (url.pathname == "/search") { - let type = url.searchParams.get("type") - switch (type) { - case "playlists": - type = "sets" - break - case "tracks": - type = "sounds" - break - case "users": - type = "people" - break - default: - type = "" - } - - url.searchParams.delete("type") - if (!type) { - return `${config.services[service].url}/search?${url.searchParams.toString()}` - } else { - return `${config.services[service].url}/search/${type}?${url.searchParams.toString()}` - } - } - - return `${config.services[service].url}${url.pathname}` - } - default: - return - } - } - return -} - -const defaultInstances = { - materialious: ["https://app.materialio.us"], - viewtube: ["https://viewtube.io"], - piped: ["https://pipedapi-libre.kavin.rocks"], - pipedMaterial: ["https://piped-material.xn--17b.net"], - cloudtube: ["https://tube.cadence.moe"], - lightTube: ["https://tube.kuylar.dev"], - poketube: ["https://poketube.fun"], - proxiTok: ["https://proxitok.pabloferreiro.es"], - offtiktok: ["https://www.offtiktok.com"], - redlib: ["https://safereddit.com"], - eddrit: ["https://eddrit.com"], - troddit: ["https://www.troddit.com"], - scribe: ["https://scribe.rip"], - libMedium: ["https://md.vern.cc"], - small: ["https://small.bloat.cat"], - freedium: ["https://freedium.cfd"], - quetre: ["https://quetre.iket.me"], - libremdb: ["https://libremdb.iket.me"], - simplyTranslate: ["https://simplytranslate.org"], - translite: ["https://tl.bloat.cat"], - mozhi: ["https://mozhi.aryak.me"], - searxng: ["https://nyc1.sx.ggtyler.dev"], - "4get": ["https://4get.ca"], - websurfx: ["https://alamin655-spacex.hf.space"], - rimgo: ["https://rimgo.vern.cc"], - hyperpipe: ["https://hyperpipe.surge.sh"], - osm: ["https://www.openstreetmap.org"], - breezeWiki: ["https://breezewiki.com"], - neuters: ["https://neuters.de"], - dumb: ["https://dm.vern.cc"], - intellectual: ["https://intellectual.insprill.net"], - ruralDictionary: ["https://rd.vern.cc"], - anonymousOverflow: ["https://code.whatever.social"], - suds: ["https://sd.vern.cc"], - unfunny: ["https://uf.vern.cc"], - soprano: ["https://sp.vern.cc"], - meme: ["https://mm.vern.cc"], - waybackClassic: ["https://wayback-classic.net"], - tent: ["https://tent.sny.sh"], - laboratory: ["https://lab.vern.cc"], - binternet: ["https://bn.bloat.cat"], - painterest: ["https://pt.bloat.cat"], - pixivFe: ["https://pixiv.perennialte.ch"], - liteXiv: ["https://litexiv.465321.best", "https://litexiv.bloat.cat"], - pixivViewer: ["https://pixiv.pictures"], - vixipy: ["https://vx.maid.zone"], - indestructables: ["https://indestructables.private.coffee"], - destructables: ["https://ds.vern.cc"], - structables: ["https://structables.private.coffee"], - safetwitch: ["https://safetwitch.drgns.space"], - twineo: ["https://twineo.exozy.me"], - kittygram: ["https://kittygram.irelephant.net/"], - proxigram: ["https://ig.opnxng.com"], - tuboYoutube: ["https://tubo.media"], - tuboSoundcloud: ["https://tubo.media"], - tekstoLibre: ["https://davilarek.github.io/TekstoLibre"], - skyview: ["https://skyview.social"], - skylib: ["https://skylib.coffee"], - priviblur: ["https://pb.bloat.cat"], - nitter: ["https://nitter.privacydev.net"], - pasted: ["https://pasted.drakeerv.com"], - pasty: ["https://pasty.lus.pm"], - freetar: ["https://freetar.de"], - ultimateTab: ["https://ultimate-tab.com"], - ratAintTieba: ["https://rat.fis.land"], - shoelace: ["https://shoelace.mint.lgbt"], - skunkyArt: ["https://skunky.bloat.cat"], - ytify: ["https://ytify.pp.ua"], - ytifyMusic: ["https://ytify.pp.ua"], - nerdsForNerds: ["https://nn.vern.cc"], - ducksForDucks: ["https://ducksforducks.private.coffee"], - koub: ["https://koub.clovius.club"], - soundcloak: ["https://soundcloak.fly.dev"], - gocook: ["https://cook.adminforge.de"], - wikimore: ["https://wikimore.private.coffee"], - libreTranslate: ["https://libretranslate.com"], - cryptPad: ["https://cryptpad.org"], - phantom: ["https://phantom.kuuro.net"] -} - -async function getDefaults() { - let config = await utils.getConfig() - let options = {} - for (const service in config.services) { - options[service] = {} - for (const defaultOption in config.services[service].options) { - options[service][defaultOption] = config.services[service].options[defaultOption] - } - for (const frontend in config.services[service].frontends) { - if (config.services[service].frontends[frontend].instanceList) { - options[frontend] = [] - } - } - } - options.exceptions = { - url: [], - regex: [], - } - options.theme = "detect" - options.popupServices = ["youtube", "tiktok", "imgur", "reddit", "quora", "translate", "maps"] - options.fetchInstances = "github" - options.redirectOnlyInIncognito = false - options = { ...options, ...defaultInstances } - return options -} - -function initDefaults() { - return new Promise(resolve => { - browser.storage.local.clear(async () => { - options = await getDefaults() - browser.storage.local.set({ options }, () => resolve()) - }) - }) -} - -function processUpdate(_options) { - return new Promise(async resolve => { - const config = await utils.getConfig() - let options = _options ?? (await utils.getOptions()) - - const defaults = await getDefaults() - - // Remove any unknown option or subOption - for (const optionName in options) { - if (!(optionName in defaults)) delete options[optionName] - else if (typeof optionName === "object" && optionName !== null) { - for (const subOptionName in options[optionName]) { - if (!(subOptionName in defaults[optionName])) delete options[optionName][subOptionName] - } - } - } - - // Remove any unknwon popupService - options.popupServices = options.popupServices.filter(service => service in config.services) - - // Add missing options - for (const [defaultName, defaultValue] of Object.entries(defaults)) { - if (!(defaultName in options)) { - options[defaultName] = defaultValue - } - } - - for (const [serviceName, serviceValue] of Object.entries(config.services)) { - // Reset service options if selected frontend is deprecated - if (!(options[serviceName].frontend in serviceValue.frontends)) { - options[serviceName] = serviceValue.options - } - - // Add a default service option if it's not present - for (const optionName in serviceValue.options) { - if (!(optionName in options[serviceName])) { - options[serviceName][optionName] = serviceValue.options[optionName] - } - } - } - - browser.storage.local.clear(() => browser.storage.local.set({ options }, () => resolve())) - }) -} - -/** - * @param {URL} url - */ -async function copyRaw(url) { - const newUrl = await reverse(url) - if (newUrl) { - if (!isChrome) { - navigator.clipboard.writeText(newUrl) - } else { - var copyFrom = document.createElement("textarea") - copyFrom.textContent = newUrl - document.body.appendChild(copyFrom) - copyFrom.select() - document.execCommand("copy") - copyFrom.blur() - document.body.removeChild(copyFrom) - } - } -} - -/** - * @param {URL} url - */ -function isException(url) { - if (!options) return false - if (!options.exceptions) return false - let exceptions = options.exceptions - if (exceptions && url) { - if (exceptions.url) { - for (let item of exceptions.url) { - item = new URL(item) - item = item.href.replace(/^http:\/\//, "https://") - if (item == url.href) { - return true - } - } - } - if (exceptions.regex) { - for (const item of exceptions.regex) { - if (new RegExp(item).test(url.href)) { - return true - } - } - } - } - return false -} - -export default { - redirect, - redirectAsync, - computeServiceFrontend, - reverse, - initDefaults, - processUpdate, - copyRaw, - switchInstance, - isException, -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/javascripts/utils.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/javascripts/utils.js deleted file mode 100644 index 1f5db8d..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/assets/javascripts/utils.js +++ /dev/null @@ -1,297 +0,0 @@ -window.browser = window.browser || window.chrome - -/** - * @param {Array.} instances - * @returns {T} - */ -function getRandomInstance(instances) { - return instances[~~(instances.length * Math.random())] -} - -/** - * @param {string} currentInstanceUrl - * @param {Array.} instances - * @returns {T} - */ -function getNextInstance(currentInstanceUrl, instances) { - const currentInstanceIndex = instances.indexOf(currentInstanceUrl) - if (currentInstanceIndex === -1) return getRandomInstance(instances) - const nextInstanceIndex = (currentInstanceIndex + 1) % instances.length - return instances[nextInstanceIndex] -} - -/** - * @param {URL} url - */ -function protocolHost(url) { - const pathname = url.pathname.replace(/\/$/, "") - - // workaround - if (pathname == "/TekstoLibre" && url.host.endsWith("github.io")) - return `${url.protocol}//${url.host}${pathname.slice(0, -1)}` - - if (url.username && url.password) return `${url.protocol}//${url.username}:${url.password}@${url.host}${pathname}` - - return `${url.protocol}//${url.host}${pathname}` -} - -/** - * @typedef FrontendInfo - * @prop {boolean} instanceList - * @prop {string} name - * @prop {string} url - */ - -/** - * @typedef {Object} Service - * @prop {Object.} frontends - * @prop {Object} options - */ - -/** - * @typedef {Object} Config - * @prop {Object.} services - */ - -/** - * @returns {Promise} - */ -function getConfig() { - return new Promise(resolve => { - fetch("/config.json") - .then(response => response.text()) - .then(json => { - resolve(JSON.parse(json)) - return - }) - }) -} - -/** - * @typedef {Object} Option - * @prop {string} frontend - */ - -/** - * @returns {Promise>} - */ -function getOptions() { - return new Promise(resolve => browser.storage.local.get("options", r => resolve(r.options))) -} - -function getPingCache() { - return new Promise(resolve => browser.storage.local.get("pingCache", r => resolve(r.pingCache ?? {}))) -} - -function getBlacklist(options) { - return new Promise(resolve => { - let url - if (options.fetchInstances == "github") - url = "https://raw.githubusercontent.com/libredirect/instances/main/blacklist.json" - else if (options.fetchInstances == "codeberg") - url = "https://codeberg.org/LibRedirect/instances/raw/branch/main/blacklist.json" - else return resolve("disabled") - const http = new XMLHttpRequest() - http.open("GET", url, true) - http.onreadystatechange = () => { - if (http.status === 200 && http.readyState == XMLHttpRequest.DONE) resolve(JSON.parse(http.responseText)) - } - http.onerror = () => resolve() - http.ontimeout = () => resolve() - http.send(null) - }) -} - -function getList(options) { - return new Promise(resolve => { - let url - if (options.fetchInstances == "github") - url = "https://raw.githubusercontent.com/libredirect/instances/main/data.json" - else if (options.fetchInstances == "codeberg") - url = "https://codeberg.org/LibRedirect/instances/raw/branch/main/data.json" - else return resolve("disabled") - const http = new XMLHttpRequest() - http.open("GET", url, true) - http.onreadystatechange = () => { - if (http.status === 200 && http.readyState == XMLHttpRequest.DONE) return resolve(JSON.parse(http.responseText)) - } - http.onerror = () => resolve() - http.ontimeout = () => resolve() - http.send(null) - }) -} - -/** - * @param {string} href - */ -function pingOnce(href) { - return new Promise(async resolve => { - let started - let http = new XMLHttpRequest() - http.timeout = 5000 - http.ontimeout = () => resolve(5000) - http.onerror = () => resolve() - http.onreadystatechange = () => { - if (http.readyState == 2) { - if (http.status == 200) { - let ended = new Date().getTime() - http.abort() - resolve(ended - started) - } else { - resolve(5000 + http.status) - } - } - } - http.open("GET", `${href}?_=${new Date().getTime()}`, true) - started = new Date().getTime() - http.send(null) - }) -} - -/** - * @param {string} href - */ -function ping(href) { - return new Promise(async resolve => { - let average = 0 - let time - for (let i = 0; i < 3; i++) { - time = await pingOnce(href) - if (i == 0) continue - if (time >= 5000) { - resolve(time) - return - } - average += time - } - average = parseInt(average / 3) - resolve(average) - }) -} - -function addressToLatLng(address) { - const http = new XMLHttpRequest() - http.open( - "GET", - `https://nominatim.openstreetmap.org/search?q=${encodeURIComponent(address)}&format=json&limit=1`, - false - ) - http.send() - if (http.status == 200) { - const json = JSON.parse(http.responseText)[0] - if (json) { - return { - coordinate: `${json.lat},${json.lon}`, - boundingbox: `${json.boundingbox[2]},${json.boundingbox[1]},${json.boundingbox[3]},${json.boundingbox[0]}`, - } - } - return {} - } -} - -function getQuery(url) { - let query = "" - if (url.searchParams.has("q")) query = url.searchParams.get("q") - else if (url.searchParams.has("query")) query = url.searchParams.has("query") - return query -} -function prefsEncoded(prefs) { - return new URLSearchParams(prefs).toString() -} - -function convertMapCentre(url) { - let [lat, lon, zoom] = [null, null, null] - const reg = url.pathname.match(/@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/) - if (reg) { - ;[, lon, lat, zoom] = reg - } else if (url.searchParams.has("center")) { - // Set map centre if present - ;[lat, lon] = url.searchParams.get("center").split(",") - zoom = url.searchParams.get("zoom") ?? "17" - } - return { zoom, lon, lat } -} - -export function randomInstances(clearnet, n) { - let instances = [] - if (n > clearnet.length) n = clearnet.length - for (let i = 0; i < n; i++) { - const randomNumber = Math.floor(Math.random() * clearnet.length) - const randomInstance = clearnet[randomNumber] - instances.push(randomInstance) - } - return instances -} - -async function autoPickInstance(clearnet, url) { - if (url) { - const i = clearnet.findIndex(instance => url.href.startsWith(instance)) - if (i >= 0) clearnet.splice(i, 1) - } - const random = randomInstances(clearnet, 5) - const pings = await Promise.all([ - ...random.map(async instance => { - return [instance, await ping(instance)] - }), - ]) - pings.sort((a, b) => a[1] - b[1]) - return pings[0][0] -} - -export function style(options, window) { - const vars = cssVariables(options, window) - return `--text: ${vars.text}; - --bg-main: ${vars.bgMain}; - --bg-secondary: ${vars.bgSecondary}; - --active: ${vars.active}; - --danger: ${vars.danger}; - --light-grey: ${vars.lightGrey};` -} - -function cssVariables(options, window) { - const dark = { - text: "#fff", - bgMain: "#121212", - bgSecondary: "#202020", - active: "#fbc117", - danger: "#f04141", - lightGrey: "#c3c3c3", - } - - const light = { - text: "black", - bgMain: "white", - bgSecondary: "#e4e4e4", - active: "#fb9817", - danger: "#f04141", - lightGrey: "#c3c3c3", - } - if (options.theme == "dark") { - return dark - } else if (options.theme == "light") { - return light - } else if (window.matchMedia("(prefers-color-scheme: dark)").matches) { - return dark - } else { - return light - } -} - -export default { - getRandomInstance, - getNextInstance, - protocolHost, - getList, - getBlacklist, - getConfig, - getOptions, - getPingCache, - ping, - addressToLatLng, - getQuery, - prefsEncoded, - convertMapCentre, - randomInstances, - style, - autoPickInstance, -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/config.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/config.json deleted file mode 100644 index 5db9fb9..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/config.json +++ /dev/null @@ -1,1526 +0,0 @@ -{ - "networks": { - "clearnet": { - "tld": "org", - "name": "Clearnet" - }, - "tor": { - "tld": "onion", - "name": "Tor" - }, - "i2p": { - "tld": "i2p", - "name": "I2P" - }, - "loki": { - "tld": "loki", - "name": "Lokinet" - } - }, - "services": { - "youtube": { - "frontends": { - "invidious": { - "name": "Invidious", - "embeddable": true, - "instanceList": true, - "url": "https://invidious.io/" - }, - "materialious": { - "name": "Materialious", - "embeddable": true, - "instanceList": true, - "url": "https://materialio.us/" - }, - "piped": { - "excludeTargets": [ - 2, - 3 - ], - "name": "Piped", - "embeddable": true, - "instanceList": true, - "url": "https://github.com/TeamPiped/Piped" - }, - "pipedMaterial": { - "excludeTargets": [ - 2, - 3 - ], - "name": "Piped-Material", - "embeddable": false, - "instanceList": true, - "url": "https://github.com/mmjee/Piped-Material" - }, - "poketube": { - "excludeTargets": [ - 2, - 3 - ], - "name": "Poke", - "embeddable": true, - "instanceList": true, - "url": "https://codeberg.org/ashley/poke" - }, - "cloudtube": { - "name": "CloudTube", - "embeddable": false, - "instanceList": true, - "url": "https://sr.ht/~cadence/tube", - "excludeTargets": [ - 2, - 3 - ] - }, - "lightTube": { - "name": "LightTube", - "embeddable": false, - "instanceList": true, - "url": "https://github.com/lighttube-org/LightTube" - }, - "tuboYoutube": { - "name": "Tubo", - "embeddable": false, - "instanceList": true, - "url": "https://github.com/migalmoreno/tubo", - "excludeTargets": [ - 2, - 3 - ] - }, - "freetube": { - "excludeTargets": [ - 2, - 3 - ], - "name": "FreeTube", - "embeddable": false, - "desktopApp": true, - "instanceList": false, - "url": "https://github.com/FreeTubeApp/FreeTube" - }, - "yattee": { - "excludeTargets": [ - 2, - 3 - ], - "name": "Yattee", - "embeddable": false, - "desktopApp": true, - "instanceList": false, - "url": "https://github.com/yattee/yattee" - }, - "freetubePwa": { - "excludeTargets": [ - 2, - 3 - ], - "name": "FreeTube PWA", - "embeddable": false, - "instanceList": false, - "url": "https://github.com/MarmadileManteater/FreeTubeCordova" - }, - "viewtube": { - "name": "ViewTube", - "embeddable": true, - "instanceList": true, - "url": "https://github.com/ViewTube/viewtube" - }, - "ytify": { - "name": "ytify", - "embeddable": false, - "instanceList": true, - "url": "https://github.com/n-ce/ytify/" - } - }, - "targets": [ - "^https?:\\/{2}(www\\.|m\\.)?youtube.com(\\/|$)(?!iframe_api\\/|redirect\\/)", - "^https?:\\/{2}img\\.youtube.com\\/vi\\/.*\\/..*", - "^https?:\\/{2}(i|s)\\.ytimg.com\\/vi\\/.*\\/..*", - "^https?:\\/{2}(www\\.)?youtube.com\\/watch?v=..*", - "^https?:\\/{2}(www\\.)?youtu\\.be\\/..*", - "^https?:\\/{2}(www\\.)?(youtube|youtube-nocookie)\\.com\\/embed\\/..*" - ], - "name": "YouTube", - "options": { - "enabled": true, - "redirectType": "main_frame", - "frontend": "invidious", - "embedFrontend": "invidious", - "unsupportedUrls": "bypass", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "embeddable": true, - "url": "https://youtube.com" - }, - "youtubeMusic": { - "frontends": { - "ytifyMusic": { - "name": "ytify", - "embeddable": false, - "instanceList": true, - "url": "https://github.com/n-ce/ytify/" - }, - "hyperpipe": { - "name": "Hyperpipe", - "instanceList": true, - "url": "https://codeberg.org/Hyperpipe/Hyperpipe" - }, - "invidiousMusic": { - "name": "Invidious", - "embeddable": true, - "instanceList": true, - "url": "https://invidious.io/" - }, - "freetubeMusic": { - "name": "FreeTube", - "embeddable": false, - "desktopApp": true, - "instanceList": false, - "url": "https://github.com/FreeTubeApp/FreeTube" - } - }, - "targets": [ - "^https?:\\/{2}music\\.youtube\\.com\\/" - ], - "name": "YT Music", - "options": { - "enabled": false, - "frontend": "hyperpipe", - "unsupportedUrls": "bypass", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://music.youtube.com" - }, - "twitter": { - "frontends": { - "nitter": { - "name": "Nitter", - "embeddable": true, - "instanceList": true, - "url": "https://github.com/zedeus/nitter", - "localhost": true - } - }, - "targets": [ - "^https?:\\/{2}(www\\.|mobile\\.)?twitter\\.com\\/", - "^https?:\\/{2}(www\\.|mobile\\.)?x\\.com\\/", - "^https?:\\/{2}(pbs\\.|video\\.)twimg\\.com\\/", - "^https?:\\/{2}platform\\.x\\.com/embed\\/", - "^https?:\\/{2}platform\\.twitter\\.com/embed\\/", - "^https?:\\/{2}t\\.co\\/" - ], - "name": "Twitter", - "options": { - "enabled": false, - "redirectType": "main_frame", - "unsupportedUrls": "bypass", - "frontend": "nitter", - "instance": "public", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "embeddable": true, - "url": "https://twitter.com" - }, - "chatGpt": { - "frontends": { - "duckDuckGoAiChat": { - "name": "DuckDuckGo AI Chat", - "instanceList": false, - "url": "https://duckduckgo.com/duckduckgo-help-pages/aichat/" - }, - "protonLumo": { - "name": "Lumo by Proton", - "instanceList": false, - "url": "https://lumo.proton.me/" - } - }, - "targets": ["^https?:\\/{2}chatgpt\\.com"], - "name": "ChatGPT", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "duckDuckGoAiChat", - "redirectOnlyInIncognito": false - }, - "imageType": "svgMono", - "url": "https://chatgpt.com/" - }, - "bluesky": { - "frontends": { - "skyview": { - "name": "Skyview", - "instanceList": true, - "url": "https://github.com/badlogic/skyview" - }, - "skylib": { - "name": "Skylib", - "instanceList": true, - "url": "https://codeberg.org/bg443/skylib-backend" - } - }, - "targets": [ - "^https?:\\/{2}bsky\\.app\\/" - ], - "name": "Bluesky", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "skyview", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://bsky.app/" - }, - "reddit": { - "frontends": { - "libreddit": { - "name": "Libreddit", - "instanceList": true, - "url": "https://github.com/spikecodes/libreddit", - "localhost": true - }, - "redlib": { - "name": "Redlib", - "instanceList": true, - "url": "https://github.com/redlib-org/redlib", - "localhost": false - }, - "teddit": { - "name": "Teddit", - "instanceList": true, - "url": "https://codeberg.org/teddit/teddit", - "localhost": false - }, - "eddrit": { - "name": "Eddrit", - "instanceList": true, - "url": "https://github.com/corenting/eddrit", - "localhost": false - }, - "troddit": { - "name": "Troddit", - "instanceList": false, - "url": "https://github.com/burhan-syed/troddit", - "localhost": false - } - }, - "targets": [ - "^https?:\\/{2}(www\\.|old\\.|np\\.|new\\.|amp\\.)?(reddit|reddittorjg6rue252oqsxryoxengawnmo46qy4kyii5wtqnwfj4ooad)\\.(com|onion)(?=\\/u(ser)?\\/|\\/r\\/|\\/search|\\/new|\\/comments|\\/?$)", - "^https?:\\/{2}((i|(external-)?preview)\\.)?redd\\.it" - ], - "name": "Reddit", - "options": { - "enabled": false, - "frontend": "redlib", - "unsupportedUrls": "bypass", - "instance": "public", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://reddit.com" - }, - "tumblr": { - "frontends": { - "priviblur": { - "name": "Priviblur", - "embeddable": true, - "instanceList": true, - "url": "https://github.com/syeopite/priviblur", - "localhost": true - } - }, - "targets": [ - "^https?:\\/{2}(media\\.|assets\\.|static\\.)?tumblr\\.com\\/", - "^https?:\\/{2}[0-9]+\\.media\\.tumblr\\.com\\/", - "^https?:\\/{2}(www\\.)?(.*)\\.tumblr.com\\/" - ], - "name": "Tumblr", - "options": { - "enabled": false, - "redirectType": "main_frame", - "unsupportedUrls": "bypass", - "frontend": "priviblur", - "instance": "public", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "embeddable": true, - "url": "https://tumblr.com" - }, - "twitch": { - "frontends": { - "safetwitch": { - "name": "SafeTwitch", - "embeddable": true, - "instanceList": true, - "url": "https://codeberg.org/dragongoose/safetwitch", - "localhost": false - }, - "twineo": { - "name": "Twineo", - "embeddable": true, - "instanceList": true, - "url": "https://codeberg.org/CloudyyUw/twineo", - "localhost": false - } - }, - "targets": [ - "^https?:\\/{2}(www\\.|clips\\.)?twitch\\.(tv|com)\\/" - ], - "name": "Twitch", - "options": { - "enabled": false, - "redirectType": "main_frame", - "unsupportedUrls": "bypass", - "frontend": "safetwitch", - "instance": "public", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "embeddable": true, - "url": "https://twitch.tv" - }, - "tiktok": { - "frontends": { - "proxiTok": { - "name": "ProxiTok", - "instanceList": true, - "url": "https://github.com/pablouser1/ProxiTok", - "localhost": true - }, - "offtiktok": { - "name": "Offtiktok", - "instanceList": true, - "url": "https://github.com/MarsHeer/offtiktok", - "localhost": false - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?tiktok\\.com\\/" - ], - "name": "TikTok", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "proxiTok", - "instance": "public", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://tiktok.com" - }, - "instagram": { - "frontends": { - "kittygram": { - "name": "kittygram", - "instanceList": true, - "url": "https://codeberg.org/irelephant/kittygram", - "localhost": true - }, - "proxigram": { - "name": "Proxigram", - "instanceList": true, - "url": "https://codeberg.org/ThePenguinDev/Proxigram", - "localhost": false - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?instagram\\.com" - ], - "name": "Instagram", - "options": { - "enabled": false, - "frontend": "kittygram", - "embedFrontend": "kittygram", - "unsupportedUrls": "bypass", - "instance": "public", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://www.instagram.com" - }, - "imdb": { - "frontends": { - "libremdb": { - "name": "libremdb", - "instanceList": true, - "url": "https://github.com/zyachel/libremdb", - "localhost": true - } - }, - "targets": [ - "^https?:\\/{2}(www\\.|m\\.)?imdb\\.com" - ], - "name": "IMDb", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "libremdb", - "instance": "public", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://imdb.com" - }, - "bilibili": { - "frontends": { - "mikuInvidious": { - "name": "MikuInvidious", - "instanceList": true, - "url": "https://0xacab.org/johnxina/mikuinvidious" - } - }, - "targets": [ - "^https?:\\/{2}(www\\.|space\\.)?bilibili\\.com\\/", - "^https?:\\/{2}b23\\.tv\\/" - ], - "name": "Bilibili", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "mikuInvidious", - "redirectOnlyInIncognito": false - }, - "imageType": "svgMono", - "url": "https://bilibili.com/" - }, - "pixiv": { - "name": "Pixiv", - "frontends": { - "pixivFe": { - "name": "PixivFE", - "instanceList": true, - "url": "https://codeberg.org/VnPower/pixivfe" - }, - "liteXiv": { - "name": "LiteXiv", - "instanceList": true, - "url": "https://codeberg.org/LiteXiv/LiteXiv" - }, - "vixipy": { - "name": "Vixipy", - "instanceList": true, - "url": "https://codeberg.org/vixipy/Vixipy" - }, - "pixivViewer": { - "name": "Pixiv Viewer", - "instanceList": true, - "url": "https://github.com/asadahimeka/pixiv-viewer" - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?pixiv\\.net\\/" - ], - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "pixivFe", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://www.pixiv.net" - }, - "fandom": { - "frontends": { - "breezeWiki": { - "name": "BreezeWiki", - "instanceList": true, - "url": "https://breezewiki.com" - }, - "phantom": { - "name": "Phantom", - "instanceList": true, - "url": "https://codeberg.org/phantom-org/phantom" - } - }, - "targets": [ - "^https?:\\/{2}([a-zA-Z0-9-]+\\.)?(fandom|wikia)\\.com(?=\\/wiki|\\/?$)" - ], - "name": "Fandom", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "instance": "public", - "frontend": "breezeWiki", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://fandom.com" - }, - "imgur": { - "frontends": { - "rimgo": { - "name": "rimgo", - "instanceList": true, - "url": "https://codeberg.org/video-prize-ranch/rimgo", - "localhost": true, - "embeddable": true - } - }, - "targets": [ - "^https?:\\/{2}([im]\\.)?(stack\\.)?imgur\\.(com|io)\\/" - ], - "name": "Imgur", - "options": { - "enabled": false, - "redirectType": "main_frame", - "unsupportedUrls": "bypass", - "frontend": "rimgo", - "instance": "public", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "embeddable": true, - "url": "https://imgur.com" - }, - "pinterest": { - "name": "Pinterest", - "frontends": { - "binternet": { - "name": "Binternet", - "instanceList": true, - "url": "https://github.com/Ahwxorg/Binternet", - "embeddable": true - }, - "painterest": { - "name": "Painterest", - "instanceList": true, - "url": "https://codeberg.org/thirtysix/painterest", - "embeddable": true - } - }, - "targets": [ - "^https?:\\/{2}i\\.pinimg\\.com", - "^https?:\\/{2}((?!api\\.)[a-zA-Z]+\\.)?pinterest\\.com" - ], - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "redirectType": "main_frame", - "frontend": "binternet", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "embeddable": true, - "url": "https://pinterest.com" - }, - "soundcloud": { - "frontends": { - "tuboSoundcloud": { - "name": "Tubo", - "embeddable": false, - "instanceList": true, - "url": "https://github.com/migalmoreno/tubo" - }, - "soundcloak": { - "name": "soundcloak", - "embeddable": false, - "instanceList": true, - "url": "https://git.maid.zone/stuff/soundcloak" - } - }, - "targets": [ - "^https?:\\/{2}soundcloud\\.com" - ], - "name": "SoundCloud", - "options": { - "enabled": false, - "redirectType": "main_frame", - "frontend": "tuboSoundcloud", - "unsupportedUrls": "bypass", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "embeddable": false, - "url": "https://soundcloud.com" - }, - "bandcamp": { - "frontends": { - "tent": { - "name": "Tent", - "instanceList": true, - "url": "https://forgejo.sny.sh/sun/Tent" - } - }, - "targets": [ - "^https?:\\/{2}(.*\\.)?bandcamp\\.com\\/", - "^https?:\\/{2}(f4|t4)\\.bcbits\\.com\\/" - ], - "name": "Bandcamp", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "tent", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://bandcamp.com" - }, - "tekstowo": { - "frontends": { - "tekstoLibre": { - "name": "TekstoLibre", - "instanceList": true, - "url": "https://github.com/Davilarek/TekstoLibre" - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?tekstowo\\.pl\\/" - ], - "name": "Tekstowo.pl", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "tekstoLibre", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://www.tekstowo.pl" - }, - "genius": { - "frontends": { - "dumb": { - "name": "Dumb", - "instanceList": true, - "url": "https://github.com/rramiachraf/dumb", - "localhost": true - }, - "intellectual": { - "name": "Intellectual", - "instanceList": true, - "url": "https://github.com/Insprill/intellectual", - "localhost": false - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?genius\\.com\\/" - ], - "name": "Genius", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "dumb", - "instance": "public", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://genius.com" - }, - "medium": { - "frontends": { - "scribe": { - "name": "Scribe", - "instanceList": true, - "url": "https://sr.ht/~edwardloveall/Scribe" - }, - "libMedium": { - "name": "LibMedium", - "instanceList": true, - "url": "https://github.com/realaravinth/libmedium" - }, - "small": { - "name": "Small", - "instanceList": true, - "url": "https://git.private.coffee/PrivateCoffee/small" - }, - "freedium": { - "name": "Freedium", - "instanceList": true, - "url": "https://codeberg.org/Freedium-cfd" - } - }, - "targets": [ - "^https:\\/{2}([a-zA-Z0-9-]+\\.)?medium\\.com", - "^https?:\\/{2}towardsdatascience\\.com\\/", - "^https?:\\/{2}uxdesign\\.cc\\/", - "^https?:\\/{2}uxplanet\\.org\\/", - "^https?:\\/{2}betterprogramming\\.pub\\/", - "^https?:\\/{2}aninjusticemag\\.com\\/", - "^https?:\\/{2}betterhumans\\.pub\\/", - "^https?:\\/{2}psiloveyou\\.xyz\\/", - "^https?:\\/{2}entrepreneurshandbook\\.co\\/", - "^https?:\\/{2}blog\\.coinbase\\.com\\/", - "^https?:\\/{2}levelup\\.gitconnected\\.com\\/", - "^https?:\\/{2}javascript\\.plainenglish\\.io\\/", - "^https?:\\/{2}blog\\.bitsrc\\.io\\/", - "^https?:\\/{2}itnext\\.io\\/", - "^https?:\\/{2}codeburst\\.io\\/", - "^https?:\\/{2}infosecwriteups\\.com\\/", - "^https?:\\/{2}blog\\.devgenius\\.io\\/", - "^https?:\\/{2}writingcooperative\\.com\\/", - "^https?:\\/{2}proandroiddev\\.com\\/" - ], - "name": "Medium", - "options": { - "frontend": "scribe", - "enabled": false, - "unsupportedUrls": "bypass", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://medium.com" - }, - "quora": { - "frontends": { - "quetre": { - "name": "Quetre", - "instanceList": true, - "url": "https://github.com/zyachel/quetre", - "localhost": true - } - }, - "targets": [ - "^https?:\\/{2}([a-zA-Z0-9-]+\\.)*quora\\.com\\/" - ], - "name": "Quora", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "quetre", - "instance": "public", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://quora.com" - }, - "github": { - "frontends": { - "gothub": { - "name": "Gothub", - "instanceList": true, - "url": "https://codeberg.org/gothub/gothub" - } - }, - "targets": [ - "^https?:\\/{2}github\\.com\\/", - "^https?:\\/{2}gist\\.github\\.com\\/[^\\/]+\\/[^\\/]+\\/?", - "^https?:\\/{2}raw\\.githubusercontent\\.com\\/[^\\/]+\\/[^\\/]+\\/?" - ], - "name": "GitHub", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "gothub", - "redirectOnlyInIncognito": false - }, - "imageType": "svgMono", - "url": "https://github.com" - }, - "gitlab": { - "frontends": { - "laboratory": { - "name": "Laboratory", - "instanceList": true, - "url": "https://git.vitali64.duckdns.org/utils/laboratory.git/about/" - } - }, - "targets": [ - "^https?:\\/{2}gitlab\\.com\\/", - "^https?:\\/{2}gitlab\\.freedesktop\\.com\\/", - "^https?:\\/{2}gitlab\\.archlinux\\.com\\/" - ], - "name": "GitLab", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "laboratory", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://gitlab.com/" - }, - "stackOverflow": { - "frontends": { - "anonymousOverflow": { - "name": "AnonymousOverflow", - "instanceList": true, - "url": "https://github.com/httpjamesm/AnonymousOverflow", - "localhost": true - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?([a-zA-Z]+\\.)?stackoverflow\\.com\\/", - "^https?:\\/{2}((?!(api|data|blog)\\.)[a-zA-Z0-9-]+\\.(meta\\.)?)?stackexchange\\.com\\/", - "^https?:\\/{2}(www\\.)?([a-zA-Z]+\\.)?(askubuntu\\.com|mathoverflow\\.net|serverfault\\.com|stackapps\\.com|superuser\\.com)\\/" - ], - "name": "Stack Overflow", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "anonymousOverflow", - "instance": "public", - "redirectOnlyInIncognito": false - }, - "imageType": "svgMono", - "url": "https://stackoverflow.com/" - }, - "reuters": { - "frontends": { - "neuters": { - "name": "Neuters", - "instanceList": true, - "url": "https://github.com/HookedBehemoth/neuters" - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?reuters\\.com\\/" - ], - "name": "Reuters", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "neuters", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://reuters.com" - }, - "snopes": { - "frontends": { - "suds": { - "name": "Suds", - "instanceList": true, - "url": "https://git.vern.cc/cobra/Suds" - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?snopes\\.com\\/" - ], - "name": "Snopes", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "suds", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://www.snopes.com" - }, - "ifunny": { - "frontends": { - "unfunny": { - "name": "UNfunny", - "instanceList": true, - "url": "https://git.vern.cc/cobra/UNfunny" - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?ifunny\\.co\\/" - ], - "name": "iFunny", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "unfunny", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://ifunny.co" - }, - "tenor": { - "frontends": { - "soprano": { - "name": "Soprano", - "instanceList": true, - "url": "https://git.vern.cc/cobra/Soprano" - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?tenor\\.com\\/" - ], - "name": "Tenor", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "soprano", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://tenor.com" - }, - "knowyourmeme": { - "frontends": { - "meme": { - "name": "MeMe", - "instanceList": true, - "url": "https://git.vern.cc/cobra/MeMe" - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?knowyourmeme\\.com\\/" - ], - "name": "KnowYourMeme", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "meme", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://knowyourmeme.com" - }, - "urbanDictionary": { - "frontends": { - "ruralDictionary": { - "name": "Rural Dictionary", - "instanceList": true, - "url": "https://codeberg.org/cobra/rural-dict" - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?urbandictionary\\.com\\/" - ], - "name": "Urban Dictionary", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "ruralDictionary", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://urbandictionary.com" - }, - "goodreads": { - "frontends": { - "biblioReads": { - "name": "BiblioReads", - "instanceList": true, - "url": "https://github.com/nesaku/BiblioReads", - "localhost": true - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?goodreads\\.com\\/" - ], - "name": "Goodreads", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "biblioReads", - "instance": "public", - "redirectOnlyInIncognito": false - }, - "imageType": "svgMono", - "url": "https://goodreads.com/" - }, - "wolframAlpha": { - "frontends": { - "wolfreeAlpha": { - "name": "WolfreeAlpha", - "instanceList": true, - "url": "https://git.disroot.org/wolfree" - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?wolframalpha\\.com\\/" - ], - "name": "Wolfram Alpha", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "wolfreeAlpha", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://www.wolframalpha.com" - }, - "instructables": { - "name": "Instructables", - "frontends": { - "structables": { - "name": "Structables", - "instanceList": true, - "url": "https://github.com/PrivateCoffee/structables" - }, - "destructables": { - "name": "Destructables", - "instanceList": true, - "url": "https://git.vern.cc/cobra/Destructables" - }, - "indestructables": { - "name": "Indestructables", - "instanceList": true, - "url": "https://indestructables.codeberg.page" - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?instructables\\.com\\/" - ], - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "structables", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://www.instructables.com" - }, - "wikipedia": { - "frontends": { - "wikiless": { - "name": "Wikiless", - "instanceList": true, - "url": "https://wikiless.org" - }, - "wikimore": { - "name": "Wikimore", - "instanceList": true, - "url": "https://git.private.coffee/privatecoffee/wikimore" - } - }, - "targets": [ - "^https?:\\/{2}([a-z]+\\.)*wikipedia\\.org\\/?" - ], - "name": "Wikipedia", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "wikiless", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://wikipedia.org" - }, - "waybackMachine": { - "frontends": { - "waybackClassic": { - "name": "Wayback Classic", - "instanceList": true, - "url": "https://github.com/ticky/wayback-classic" - } - }, - "targets": [ - "^https?:\\/{2}web\\.archive\\.org\\/" - ], - "name": "Wayback Machine", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "waybackClassic", - "redirectOnlyInIncognito": false - }, - "imageType": "svgMono", - "url": "https://web.archive.org" - }, - "pastebin": { - "frontends": { - "pasted": { - "name": "Pasted", - "instanceList": true, - "url": "https://github.com/Dragynfruit/pasted" - } - }, - "targets": [ - "^https?:\\/{2}pastebin\\.com\\/" - ], - "name": "Pastebin", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "pasted", - "instance": "public", - "redirectOnlyInIncognito": false - }, - "imageType": "svgMono", - "embeddable": true, - "url": "https://pastebin.com" - }, - "search": { - "frontends": { - "searxng": { - "name": "SearXNG", - "instanceList": true, - "url": "https://github.com/searxng/searxng", - "localhost": true, - "excludeTargets": [ - 2, - 3 - ] - }, - "searx": { - "name": "SearX", - "instanceList": true, - "url": "https://searx.github.io/searx/", - "excludeTargets": [ - 2, - 3 - ] - }, - "whoogle": { - "name": "Whoogle", - "instanceList": true, - "url": "https://benbusby.com/projects/whoogle-search/", - "excludeTargets": [ - 2, - 3 - ] - }, - "librey": { - "name": "LibreY", - "instanceList": true, - "url": "https://github.com/Ahwxorg/librey/", - "excludeTargets": [ - 2, - 3 - ] - }, - "4get": { - "name": "4get", - "instanceList": true, - "url": "https://git.lolcat.ca/lolcat/4get", - "excludeTargets": [ - 2, - 3 - ] - }, - "websurfx": { - "name": "Websurfx", - "instanceList": true, - "url": "https://github.com/neon-mmd/websurfx", - "excludeTargets": [ - 2, - 3 - ] - } - }, - "targets": [ - "^https?:\\/{2}search\\.libredirect\\.invalid", - "^https?:\\/{2}libredirect\\.github\\.io\\/\\?q", - "^https?:\\/{2}(www\\.)?google\\.com", - "^https?:\\/{2}(www\\.)?bing\\.com" - ], - "name": "Search", - "options": { - "enabled": false, - "frontend": "searxng", - "unsupportedUrls": "bypass", - "redirectGoogle": false, - "instance": "public", - "redirectOnlyInIncognito": false - }, - "imageType": "svgMono", - "url": "https://search.libredirect.invalid" - }, - "translate": { - "frontends": { - "simplyTranslate": { - "name": "SimplyTranslate", - "instanceList": true, - "url": "https://codeberg.org/ManeraKai/simplytranslate", - "localhost": true - }, - "mozhi": { - "name": "Mozhi", - "instanceList": true, - "url": "https://codeberg.org/aryak/mozhi", - "localhost": false, - "imageType": "svg" - }, - "libreTranslate": { - "name": "LibreTranslate", - "instanceList": true, - "url": "https://github.com/LibreTranslate/LibreTranslate" - }, - "translite": { - "name": "Translite", - "instanceList": true, - "url": "https://codeberg.org/gospodin/translite" - } - }, - "targets": [ - "^https?:\\/{2}translate\\.google(\\.[a-z]{2,3}){1,2}\\/", - "^https?:\\/{2}translate\\.libredirect\\.invalid" - ], - "name": "Translate", - "options": { - "enabled": false, - "frontend": "simplyTranslate", - "unsupportedUrls": "bypass", - "instance": "public", - "redirectOnlyInIncognito": false - }, - "imageType": "svgMono", - "url": "https://translate.libredirect.invalid" - }, - "maps": { - "frontends": { - "osm": { - "name": "OpenStreetMap", - "instanceList": true, - "embeddable": true, - "url": "https://www.openstreetmap.org/" - } - }, - "targets": [ - "^https?:\\/{2}maps\\.libredirect\\.invalid", - "^https?:\\/{2}(www\\.)?maps\\.google(\\.[a-z]{2,3}){1,2}\\/", - "^https?:\\/{2}(www\\.)?google(\\.[a-z]{2,3}){1,2}\\/maps\\/?" - ], - "name": "Maps", - "options": { - "redirectType": "main_frame", - "enabled": false, - "frontend": "osm", - "unsupportedUrls": "bypass", - "redirectOnlyInIncognito": false - }, - "imageType": "svgMono", - "url": "https://maps.libredirect.invalid" - }, - "meet": { - "name": "Meet", - "frontends": { - "jitsi": { - "name": "Jitsi", - "instanceList": true, - "url": "https://jitsi.org" - } - }, - "targets": [ - "^https?:\\/{2}meet\\.libredirect\\.invalid\\/" - ], - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "jitsi", - "redirectOnlyInIncognito": false - }, - "imageType": "svgMono", - "url": "https://meet.libredirect.invalid" - }, - "sendFiles": { - "frontends": { - "send": { - "name": "Send", - "instanceList": true, - "url": "https://gitlab.com/timvisee/send" - } - }, - "targets": [ - "^https?:\\/{2}send\\.libredirect\\.invalid", - "^https?:\\/{2}send\\.firefox\\.com\\/?$", - "^https?:\\/{2}sendfiles\\.online\\/?$" - ], - "name": "Send Files", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "send", - "redirectOnlyInIncognito": false - }, - "imageType": "svgMono", - "url": "https://send.libredirect.invalid" - }, - "textStorage": { - "frontends": { - "privateBin": { - "name": "PrivateBin", - "instanceList": true, - "url": "https://privatebin.info" - }, - "pasted": { - "name": "Pasted", - "instanceList": true, - "url": "https://github.com/Dragynfruit/pasted" - }, - "pasty": { - "name": "Pasty", - "instanceList": true, - "url": "https://github.com/lus/pasty" - } - }, - "targets": [ - "^https?:\\/{2}paste\\.libredirect\\.invalid" - ], - "name": "Paste Text", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "privateBin", - "redirectOnlyInIncognito": false - }, - "imageType": "svgMono", - "url": "https://paste.libredirect.invalid" - }, - "office": { - "frontends": { - "cryptPad": { - "name": "CryptPad", - "instanceList": true, - "url": "https://cryptpad.org" - } - }, - "targets": ["^https?:\\/{2}office\\.libredirect\\.invalid"], - "name": "Office", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "cryptPad", - "redirectOnlyInIncognito": false - }, - "imageType": "svgMono", - "url": "https://office.libredirect.invalid" - }, - "ultimateGuitar": { - "frontends": { - "freetar": { - "name": "Freetar", - "instanceList": true, - "url": "https://github.com/kmille/freetar" - }, - "ultimateTab": { - "name": "Ultimate Tab", - "instanceList": false, - "url": "https://github.com/BenoitBellegarde/UltimateTab" - } - }, - "targets": [ - "^https?:\\/{2}(tabs\\.|www\\.)?ultimate-guitar\\.com" - ], - "name": "Ultimate Guitar", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "freetar", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://www.ultimate-guitar.com" - }, - "baiduTieba": { - "frontends": { - "ratAintTieba": { - "name": "Rat Aint Tieba", - "instanceList": true, - "url": "https://0xacab.org/johnxina/rat" - } - }, - "targets": [ - "^https?:\\/{2}tieba\\.baidu\\.com" - ], - "name": "Baidu Tieba", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "ratAintTieba", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://tieba.baidu.com" - }, - "threads": { - "frontends": { - "shoelace": { - "name": "Shoelace", - "instanceList": true, - "url": "https://git.sr.ht/~nixgoat/shoelace" - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?threads\\.(net|com)" - ], - "name": "Threads", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "shoelace", - "redirectOnlyInIncognito": false - }, - "imageType": "svgMono", - "url": "https://threads.net" - }, - "deviantArt": { - "frontends": { - "skunkyArt": { - "name": "SkunkyArt", - "instanceList": true, - "url": "https://codeberg.org/skunky/skunkyart" - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?deviantart\\.com" - ], - "name": "DeviantArt", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "skunkyArt", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://deviantart.com" - }, - "geeksForGeeks": { - "frontends": { - "nerdsForNerds": { - "name": "NerdsforNerds", - "instanceList": true, - "url": "https://git.vern.cc/cobra/NerdsforNerds" - }, - "ducksForDucks": { - "name": "Ducks for Ducks", - "instanceList": true, - "url": "https://git.private.coffee/PrivateCoffee/ducksforducks" - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?geeksforgeeks\\.org" - ], - "name": "GeeksforGeeks", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "nerdsForNerds", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://www.geeksforgeeks.org" - }, - "coub": { - "frontends": { - "koub": { - "name": "Koub", - "instanceList": true, - "url": "https://codeberg.org/gospodin/koub" - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?coub\\.com" - ], - "name": "Coub", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "koub", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://coub.com" - }, - "chefkoch": { - "frontends": { - "gocook": { - "name": "GoCook", - "instanceList": true, - "url": "https://github.com/NoUmlautsAllowed/gocook" - } - }, - "targets": [ - "^https?:\\/{2}(www\\.)?chefkoch\\.de" - ], - "name": "Chefkoch", - "options": { - "enabled": false, - "unsupportedUrls": "bypass", - "frontend": "gocook", - "redirectOnlyInIncognito": false - }, - "imageType": "svg", - "url": "https://www.chefkoch.de" - } - } -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/manifest.json b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/manifest.json deleted file mode 100644 index 752750d..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/manifest.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "background": { - "page": "pages/background/background.html", - "persistent": true - }, - "browser_action": { - "browser_style": false, - "default_icon": { - "128": "assets/images/libredirect-128.png", - "16": "assets/images/libredirect-16.png", - "32": "assets/images/libredirect-32.png", - "48": "assets/images/libredirect-48.png", - "64": "assets/images/libredirect-64.png", - "96": "assets/images/libredirect-96.png" - }, - "default_popup": "pages/popup/index.html", - "default_title": "__MSG_extensionName__" - }, - "browser_specific_settings": { - "gecko": { - "id": "7esoorv3@alefvanoon.anonaddy.me", - "strict_min_version": "89.0" - }, - "gecko_android": { - "strict_min_version": "113.0" - } - }, - "chrome_settings_overrides": { - "search_provider": { - "encoding": "UTF-8", - "favicon_url": "https://raw.githubusercontent.com/libredirect/browser_extension/master/src/assets/images/libredirect.svg", - "is_default": false, - "keyword": "@libredirect", - "name": "__MSG_extensionName__", - "search_url": "https://search.libredirect.invalid/?q={searchTerms}" - } - }, - "commands": { - "copyRaw": { - "description": "Copies the original link. Ex: Copies the original twitter link while in the nitter website", - "suggested_key": { - "default": "Alt+Shift+C" - } - }, - "redirect": { - "description": "Redirect link. Ex: Redirects original twitter link to nitter", - "suggested_key": { - "default": "Alt+Shift+R" - } - }, - "reverse": { - "description": "Redirect to the original link. Ex: Redirects to the original twitter link while in the nitter website", - "suggested_key": { - "default": "Alt+Shift+O" - } - }, - "switchInstance": { - "description": "__MSG_switchInstance__", - "suggested_key": { - "default": "Alt+Shift+L" - } - } - }, - "default_locale": "en", - "description": "__MSG_extensionDescription__", - "icons": { - "128": "assets/images/libredirect-128.png", - "16": "assets/images/libredirect-16.png", - "32": "assets/images/libredirect-32.png", - "48": "assets/images/libredirect-48.png", - "64": "assets/images/libredirect-64.png", - "96": "assets/images/libredirect-96.png" - }, - "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAroWDSoSRZ1scj+eJRrvnhJbrqXTKnhQuxs6+AJg16sqr0bsMdFV+MSY4i4xnK+K5WOYkBliWXgUyk/wzicoAjOnSJddrL/Md4FuWHI2NVIkrlsLOrYkygi5OLqGPajRH/w8Cdmg7KzEpXe/OnYV0/qS8li8huEdTzdeLdhfbiVl1j3DOr4OJALQ7mPeeNFHFo/oVQ+OkSezWLezA5jUGfhtzPYV6u1TXzX7lCi8E/BbDbwkvvXOMcjXCv08kjdLOY2djCA2a6zr0xAb3q8DlexAMZ8vMof7AQRFtBKhLc9n9VFoipMMdBOVQQj/eIcRILBrmkcZNnJxFKiHNJ+NcZQIDAQAB", - "manifest_version": 2, - "name": "__MSG_extensionName__", - "optional_permissions": [ "bookmarks" ], - "options_ui": { - "browser_style": false, - "open_in_tab": true, - "page": "pages/options/index.html" - }, - "permissions": [ "webRequest", "webRequestBlocking", "storage", "clipboardWrite", "contextMenus", "\u003Call_urls>" ], - "update_url": "https://raw.githubusercontent.com/libredirect/libredirect/master/src/updates/updates.xml", - "version": "3.3.0" -} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/background/background.html b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/background/background.html deleted file mode 100644 index 787d419..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/background/background.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/background/background.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/background/background.js deleted file mode 100644 index 49bae0b..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/background/background.js +++ /dev/null @@ -1,361 +0,0 @@ -"use strict" - -import utils from "../../assets/javascripts/utils.js" -import servicesHelper from "../../assets/javascripts/services.js" - -const isChrome = browser.runtime.getBrowserInfo === undefined -window.browser = window.browser || window.chrome - -browser.runtime.onInstalled.addListener(async details => { - if (details.previousVersion != browser.runtime.getManifest().version) { - // ^Used to prevent this running when debugging with auto-reload - if (details.reason == "install") { - if (!(await utils.getOptions())) { - await servicesHelper.initDefaults() - } - } else if (details.reason == "update") { - await servicesHelper.processUpdate() - } - } -}) - -// true to redirect, false to bypass -let tabIdRedirects = {} - -// true == Always redirect, false == Never redirect, null/undefined == follow options for services -browser.webRequest.onBeforeRequest.addListener( - details => { - const old_href = details.url - const url = new URL(details.url) - if (new RegExp(/^chrome-extension:\/{2}.*\/instances\/.*.json$/).test(url.href) && details.type == "xmlhttprequest") - return null - - // if url is previously bypassed - if (tabIdRedirects[details.tabId] == false) return null - - // Bypass embeds from excepted urls - if ( - details.frameAncestors && - details.frameAncestors.length >= 1 && - servicesHelper.isException(new URL(details.frameAncestors[0].url)) - ) - return null - - if (servicesHelper.isException(url)) { - if (details.type == "main_frame") { - console.log(`Bypassing ${details.tabId} ${url}`) - tabIdRedirects[details.tabId] = false - } - return null - } - - let originUrl - let documentUrl - try { - if (details.originUrl) originUrl = new URL(details.originUrl) - else if (details.initiator) originUrl = new URL(details.initiator) - if (details.documentUrl) documentUrl = new URL(details.documentUrl) - } catch { - return null - } - - let newUrl = servicesHelper.redirect( - url, - details.type, - originUrl, - documentUrl, - details.incognito, - tabIdRedirects[details.tabId] - ) - - if ( - (newUrl && newUrl.startsWith("https://no-instance.libredirect.invalid")) || - (!newUrl && url.href.startsWith("https://no-instance.libredirect.invalid")) - ) { - if (details.type != "main_frame") return null - newUrl = newUrl ? new URL(newUrl) : url - const frontend = newUrl.searchParams.get("frontend") - const oldUrl = new URL(newUrl.searchParams.get("url")) - const params = new URLSearchParams({ - message: "no_instance", - url: oldUrl, - frontend: frontend, - }) - browser.tabs.update({ - url: browser.runtime.getURL(`/pages/messages/index.html?${params.toString()}`), - }) - return { cancel: true } - } - - if (!newUrl && url.href.match(/^https?:\/{2}(.*\.)?libredirect\.invalid.*/)) { - if (details.type != "main_frame") return null - const params = new URLSearchParams({ - message: "disabled", - url: url.href, - }) - browser.tabs.update({ - url: browser.runtime.getURL(`/pages/messages/index.html?${params.toString()}`), - }) - return { cancel: true } - } - - if (newUrl === "CANCEL") { - console.log(`Cancelling ${url}`) - return { cancel: true } - } - if (newUrl === "BYPASSTAB") { - console.log(`Bypassing ${details.tabId} ${url}`) - tabIdRedirects[details.tabId] = false - return null - } - if (newUrl) { - console.log("Redirecting", old_href, "=>", newUrl) - return { redirectUrl: newUrl } - } - return null - }, - { urls: [""] }, - ["blocking"] -) - -browser.tabs.onRemoved.addListener(tabId => { - if (tabIdRedirects[tabId] != undefined) { - delete tabIdRedirects[tabId] - console.log(`Removed tab ${tabId} from tabIdRedirects`) - } -}) - -browser.runtime.getPlatformInfo(r => { - if (r.os != "fuchsia" && r.os != "ios" && r.os != "android") { - browser.commands.onCommand.addListener(async command => { - browser.tabs.query({ active: true, currentWindow: true }, async tabs => { - const url = new URL(tabs[0].url) - switch (command) { - case "switchInstance": { - const newUrl = await servicesHelper.switchInstance(url) - if (newUrl) browser.tabs.update({ url: newUrl }) - break - } - case "copyRaw": - servicesHelper.copyRaw(url) - break - case "redirect": - browser.tabs.query({ active: true, currentWindow: true }, async tabs => { - if (tabs[0].url) { - const url = new URL(tabs[0].url) - const newUrl = servicesHelper.redirect(url, "main_frame", null, null, false, true) - if (newUrl) { - browser.tabs.update(tabs[0].id, { url: newUrl }, () => { - tabIdRedirects[tabs[0].id] = true - }) - } - } - }) - break - case "reverse": - browser.tabs.query({ active: true, currentWindow: true }, async tabs => { - if (tabs[0].url) { - const url = new URL(tabs[0].url) - const newUrl = await servicesHelper.reverse(url) - if (newUrl) { - browser.tabs.update(tabs[0].id, { url: newUrl }, () => { - tabIdRedirects[tabs[0].id] = false - }) - } - } - }) - break - } - }) - }) - - browser.contextMenus.create({ - id: "settingsTab", - title: browser.i18n.getMessage("settings"), - contexts: ["browser_action"], - }) - browser.contextMenus.create({ - id: "switchInstanceTab", - title: browser.i18n.getMessage("switchInstance"), - contexts: ["browser_action"], - }) - browser.contextMenus.create({ id: "copyReverseTab", title: "Copy Original", contexts: ["browser_action"] }) - browser.contextMenus.create({ id: "redirectTab", title: "Redirect", contexts: ["browser_action"] }) - browser.contextMenus.create({ id: "reverseTab", title: "Redirect To Original", contexts: ["browser_action"] }) - - browser.contextMenus.create({ id: "redirectLink", title: "Redirect", contexts: ["link"] }) - browser.contextMenus.create({ id: "redirectLinkInNewTab", title: "Redirect In New Tab", contexts: ["link"] }) - browser.contextMenus.create({ id: "reverseLink", title: "Redirect To Original", contexts: ["link"] }) - browser.contextMenus.create({ - id: "reverseLinkInNewTab", - title: "Redirect To Original In New Tab", - contexts: ["link"], - }) - browser.contextMenus.create({ id: "copyReverseLink", title: "Copy Original", contexts: ["link"] }) - browser.contextMenus.create({ id: "bypassLink", title: "Bypass", contexts: ["link"] }) - browser.contextMenus.create({ id: "bypassLinkInNewTab", title: "Bypass In New Tab", contexts: ["link"] }) - - if (!isChrome) { - browser.contextMenus.create({ id: "redirectBookmark", title: "Redirect", contexts: ["bookmark"] }) - browser.contextMenus.create({ - id: "redirectBookmarkInNewTab", - title: "Redirect In New Tab", - contexts: ["bookmark"], - }) - browser.contextMenus.create({ id: "reverseBookmark", title: "Redirect To Original", contexts: ["bookmark"] }) - browser.contextMenus.create({ - id: "reverseBookmarkInNewTab", - title: "Redirect To Original In New Tab", - contexts: ["bookmark"], - }) - browser.contextMenus.create({ id: "copyReverseBookmark", title: "Copy Original", contexts: ["bookmark"] }) - browser.contextMenus.create({ id: "bypassBookmark", title: "Bypass", contexts: ["bookmark"] }) - browser.contextMenus.create({ id: "bypassBookmarkInNewTab", title: "Bypass In New Tab", contexts: ["bookmark"] }) - } - - browser.contextMenus.onClicked.addListener(async info => { - switch (info.menuItemId) { - case "switchInstanceTab": { - const url = new URL(info.pageUrl) - const newUrl = await servicesHelper.switchInstance(url) - if (newUrl) browser.tabs.update({ url: newUrl }) - return - } - case "settingsTab": - browser.runtime.openOptionsPage() - return - case "copyReverseTab": - browser.tabs.query({ active: true, currentWindow: true }, async tabs => { - if (tabs[0].url) { - const url = new URL(tabs[0].url) - servicesHelper.copyRaw(url) - } - }) - return - case "reverseTab": - browser.tabs.query({ active: true, currentWindow: true }, async tabs => { - if (tabs[0].url) { - const url = new URL(tabs[0].url) - const newUrl = await servicesHelper.reverse(url) - if (newUrl) { - browser.tabs.update(tabs[0].id, { url: newUrl }, () => { - tabIdRedirects[tabs[0].id] = false - }) - } - } - }) - return - case "redirectTab": - browser.tabs.query({ active: true, currentWindow: true }, async tabs => { - if (tabs[0].url) { - const url = new URL(tabs[0].url) - const newUrl = servicesHelper.redirect(url, "main_frame", null, null, false, true) - if (newUrl) { - browser.tabs.update(tabs[0].id, { url: newUrl }, () => { - tabIdRedirects[tabs[0].id] = true - }) - } - } - }) - return - case "copyReverseLink": { - const url = new URL(info.linkUrl) - await servicesHelper.copyRaw(url) - return - } - case "redirectLink": - case "redirectLinkInNewTab": { - const url = new URL(info.linkUrl) - const newUrl = servicesHelper.redirect(url, "main_frame", null, null, false, true) - if (newUrl) { - if (info.menuItemId == "redirectLink") browser.tabs.update({ url: newUrl }) - else browser.tabs.create({ url: newUrl }) - } - return - } - case "reverseLink": - case "reverseLinkInNewTab": { - const url = new URL(info.linkUrl) - const newUrl = await servicesHelper.reverse(url) - if (newUrl) { - if (info.menuItemId == "reverseLink") { - browser.tabs.update({ url: newUrl }, tab => { - tabIdRedirects[tab.id] = false - }) - } else { - browser.tabs.create({ url: newUrl }, tab => { - tabIdRedirects[tab.id] = false - }) - } - } - return - } - case "bypassLink": - case "bypassLinkInNewTab": { - const url = new URL(info.linkUrl) - if (info.menuItemId == "bypassLink") { - browser.tabs.update({ url: url.href }, tab => { - tabIdRedirects[tab.id] = false - }) - } else { - browser.tabs.create({ url: url.href }, tab => { - tabIdRedirects[tab.id] = false - }) - } - return - } - case "copyReverseBookmark": - browser.bookmarks.get(info.bookmarkId, bookmarks => { - const url = new URL(bookmarks[0].url) - servicesHelper.copyRaw(url) - }) - return - case "redirectBookmark": - case "redirectBookmarkInNewTab": - browser.bookmarks.get(info.bookmarkId, bookmarks => { - const url = new URL(bookmarks[0].url) - const newUrl = servicesHelper.redirect(url, "main_frame", null, null, false, true) - if (newUrl) { - if (info.menuItemId == "redirectBookmark") browser.tabs.update({ url: newUrl }) - else browser.tabs.create({ url: newUrl }) - } - }) - return - case "reverseBookmark": - case "reverseBookmarkInNewTab": - browser.bookmarks.get(info.bookmarkId, async bookmarks => { - const url = new URL(bookmarks[0].url) - const newUrl = await servicesHelper.reverse(url) - if (newUrl) { - if (info.menuItemId == "reverseBookmark") { - browser.tabs.update({ url: newUrl }, tab => { - tabIdRedirects[tab.id] = false - }) - } else { - browser.tabs.create({ url: newUrl }, tab => { - tabIdRedirects[tab.id] = false - }) - } - } - }) - return - case "bypassBookmark": - case "bypassBookmarkInNewTab": - browser.bookmarks.get(info.bookmarkId, async bookmarks => { - const url = new URL(bookmarks[0].url) - if (info.menuItemId == "bypassBookmark") { - browser.tabs.update({ url: url.href }, tab => (tabIdRedirects[tab.id] = false)) - } else { - browser.tabs.create({ url: url.href }, tab => (tabIdRedirects[tab.id] = false)) - } - return - }) - } - }) - } -}) - -browser.runtime.onMessage.addListener(r => { - if (r.message == "reverse") tabIdRedirects[r.tabId] = false - else if (r.message == "redirect") tabIdRedirects[r.tabId] = true -}) diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Button.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Button.svelte deleted file mode 100644 index 6ae2ba6..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Button.svelte +++ /dev/null @@ -1,35 +0,0 @@ - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Checkbox.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Checkbox.svelte deleted file mode 100644 index d42a4f1..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Checkbox.svelte +++ /dev/null @@ -1,52 +0,0 @@ - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Input.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Input.svelte deleted file mode 100644 index 59e584d..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Input.svelte +++ /dev/null @@ -1,46 +0,0 @@ - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Label.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Label.svelte deleted file mode 100644 index d59b943..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Label.svelte +++ /dev/null @@ -1,18 +0,0 @@ - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Row.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Row.svelte deleted file mode 100644 index 09246d9..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Row.svelte +++ /dev/null @@ -1,12 +0,0 @@ -
- -
- - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Select.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Select.svelte deleted file mode 100644 index 7829c53..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/components/Select.svelte +++ /dev/null @@ -1,34 +0,0 @@ - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/fonts/Inter-VariableFont_slnt,wght.ttf b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/fonts/Inter-VariableFont_slnt,wght.ttf deleted file mode 100644 index 969a990..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/fonts/Inter-VariableFont_slnt,wght.ttf and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/fonts/Vazirmatn-VariableFont_wght.ttf b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/fonts/Vazirmatn-VariableFont_wght.ttf deleted file mode 100644 index f4b97c0..0000000 Binary files a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/fonts/Vazirmatn-VariableFont_wght.ttf and /dev/null differ diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/fonts/styles.css b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/fonts/styles.css deleted file mode 100644 index 754543b..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/fonts/styles.css +++ /dev/null @@ -1,13 +0,0 @@ -@font-face { - font-family: "Inter"; - src: url("Inter-VariableFont_slnt,wght.ttf"); - font-weight: normal; - font-style: normal; -} - -@font-face { - font-family: "Vazirmatn"; - src: url("Vazirmatn-VariableFont_wght.ttf"); - font-weight: normal; - font-style: normal; -} \ No newline at end of file diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/AboutIcon.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/AboutIcon.svelte deleted file mode 100644 index e113dd6..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/AboutIcon.svelte +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/AddIcon.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/AddIcon.svelte deleted file mode 100644 index b828f9e..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/AddIcon.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/AutoPickIcon.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/AutoPickIcon.svelte deleted file mode 100644 index 86adfa2..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/AutoPickIcon.svelte +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/CloseIcon.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/CloseIcon.svelte deleted file mode 100644 index 2a4f028..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/CloseIcon.svelte +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/CopyIcon.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/CopyIcon.svelte deleted file mode 100644 index 37c13f9..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/CopyIcon.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/ExportIcon.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/ExportIcon.svelte deleted file mode 100644 index d155e5c..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/ExportIcon.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/GeneralIcon.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/GeneralIcon.svelte deleted file mode 100644 index b942902..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/GeneralIcon.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/ImportIcon.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/ImportIcon.svelte deleted file mode 100644 index f64d0ff..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/ImportIcon.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/PingIcon.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/PingIcon.svelte deleted file mode 100644 index 34c4a37..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/PingIcon.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/RedirectIcon.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/RedirectIcon.svelte deleted file mode 100644 index 9392762..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/RedirectIcon.svelte +++ /dev/null @@ -1,10 +0,0 @@ - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/RedirectToOriginalIcon.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/RedirectToOriginalIcon.svelte deleted file mode 100644 index aad5c48..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/RedirectToOriginalIcon.svelte +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/ResetIcon.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/ResetIcon.svelte deleted file mode 100644 index 6daf57e..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/ResetIcon.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/ServicesIcon.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/ServicesIcon.svelte deleted file mode 100644 index ec24259..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/ServicesIcon.svelte +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/SettingsIcon.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/SettingsIcon.svelte deleted file mode 100644 index 0079828..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/SettingsIcon.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/SwitchInstanceIcon.svelte b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/SwitchInstanceIcon.svelte deleted file mode 100644 index 6a1f96a..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/icons/SwitchInstanceIcon.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - - diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/messages/build/bundle.css b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/messages/build/bundle.css deleted file mode 100644 index 9cb8443..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/messages/build/bundle.css +++ /dev/null @@ -1,2 +0,0 @@ -button.svelte-efu498{color:var(--text);border:none;text-decoration:none;cursor:pointer;font-size:16px;font-weight:bold;transition-duration:0.1s;display:inline-flex;align-items:center;margin:7.5px 0;background-color:var(--bg-secondary);border-radius:5px;padding:10px}button.svelte-efu498:hover:enabled{color:var(--active)}button.svelte-efu498:active:enabled{transform:translateY(1px)}button.svelte-efu498:disabled{cursor:not-allowed;opacity:0.5} -body{width:100vw;height:100vh;margin:0;padding:0}div.main.svelte-14zc8ex{height:100%;display:grid;grid-template-columns:800px;margin:0;padding-top:50px;justify-content:center;font-family:"Inter", sans-serif;box-sizing:border-box;font-size:16px;background-color:var(--bg-main);color:var(--text);overflow:scroll}.margin{margin-right:10px;margin-left:0}.margin_rtl{margin-right:0;margin-left:10px} diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/messages/build/bundle.js b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/messages/build/bundle.js deleted file mode 100644 index 39064ab..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/messages/build/bundle.js +++ /dev/null @@ -1,2 +0,0 @@ -var app=function(){"use strict";function e(){}function t(e,t){for(const n in t)e[n]=t[n];return e}function n(e){return e()}function a(){return Object.create(null)}function r(e){e.forEach(n)}function s(e){return"function"==typeof e}function c(e,t){return e!=e?t==t:e!==t||e&&"object"==typeof e||"function"==typeof e}function o(e,n,a,r){return e[1]&&r?t(a.ctx.slice(),e[1](r(n))):a.ctx}function i(e){const t={};for(const n in e)"$"!==n[0]&&(t[n]=e[n]);return t}function h(e,t){const n={};t=new Set(t);for(const a in e)t.has(a)||"$"===a[0]||(n[a]=e[a]);return n}function u(e,t){e.appendChild(t)}function p(e,t,n){e.insertBefore(t,n||null)}function l(e){e.parentNode&&e.parentNode.removeChild(e)}function m(e){return document.createElement(e)}function $(e){return document.createElementNS("http://www.w3.org/2000/svg",e)}function d(e){return document.createTextNode(e)}function f(){return d(" ")}function g(e,t,n){null==n?e.removeAttribute(t):e.getAttribute(t)!==n&&e.setAttribute(t,n)}const b=["width","height"];function w(e,t){const n=Object.getOwnPropertyDescriptors(e.__proto__);for(const a in t)null==t[a]?e.removeAttribute(a):"style"===a?e.style.cssText=t[a]:"__value"===a?e.value=e[a]=t[a]:n[a]&&n[a].set&&-1===b.indexOf(a)?e[a]=t[a]:g(e,a,t[a])}function y(e,t){for(const n in t)g(e,n,t[n])}function v(e,t,n){e.classList[n?"add":"remove"](t)}let x;function k(e){x=e}function P(){if(!x)throw new Error("Function called outside component initialization");return x}function _(e,t){const n=e.$$.callbacks[t.type];n&&n.slice().forEach((e=>e.call(this,t)))}const I=[],W=[];let C=[];const q=[],L=Promise.resolve();let T=!1;function R(e){C.push(e)}const O=new Set;let S=0;function z(){if(0!==S)return;const e=x;do{try{for(;S{M.delete(e),a&&(n&&e.d(1),a())})),e.o(t)}else a&&a()}function D(e,t){const n={},a={},r={$$scope:1};let s=e.length;for(;s--;){const c=e[s],o=t[s];if(o){for(const e in c)e in o||(a[e]=1);for(const e in o)r[e]||(n[e]=o[e],r[e]=1);e[s]=o}else for(const e in c)r[e]=1}for(const e in a)e in n||(n[e]=void 0);return n}function j(e){e&&e.c()}function Z(e,t,a,c){const{fragment:o,after_update:i}=e.$$;o&&o.m(t,a),c||R((()=>{const t=e.$$.on_mount.map(n).filter(s);e.$$.on_destroy?e.$$.on_destroy.push(...t):r(t),e.$$.on_mount=[]})),i.forEach(R)}function G(e,t){const n=e.$$;null!==n.fragment&&(!function(e){const t=[],n=[];C.forEach((a=>-1===e.indexOf(a)?t.push(a):n.push(a))),n.forEach((e=>e())),C=t}(n.after_update),r(n.on_destroy),n.fragment&&n.fragment.d(t),n.on_destroy=n.fragment=null,n.ctx=[])}function H(e,t){-1===e.$$.dirty[0]&&(I.push(e),T||(T=!0,L.then(z)),e.$$.dirty.fill(0)),e.$$.dirty[t/31|0]|=1<{const r=a.length?a[0]:n;return m.ctx&&o(m.ctx[e],m.ctx[e]=r)&&(!m.skip_bound&&m.bound[e]&&m.bound[e](r),$&&H(t,e)),n})):[],m.update(),$=!0,r(m.before_update),m.fragment=!!c&&c(m.ctx),n.target){if(n.hydrate){const e=function(e){return Array.from(e.childNodes)}(n.target);m.fragment&&m.fragment.l(e),e.forEach(l)}else m.fragment&&m.fragment.c();n.intro&&A(t.$$.fragment),Z(t,n.target,n.anchor,n.customElement),z()}k(p)}class X{$destroy(){G(this,1),this.$destroy=e}$on(t,n){if(!s(n))return e;const a=this.$$.callbacks[t]||(this.$$.callbacks[t]=[]);return a.push(n),()=>{const e=a.indexOf(n);-1!==e&&a.splice(e,1)}}$set(e){var t;this.$$set&&(t=e,0!==Object.keys(t).length)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}function B(e){return e[~~(e.length*Math.random())]}function Y(e){return new Promise((async t=>{let n,a=new XMLHttpRequest;a.timeout=5e3,a.ontimeout=()=>t(5e3),a.onerror=()=>t(),a.onreadystatechange=()=>{if(2==a.readyState)if(200==a.status){let e=(new Date).getTime();a.abort(),t(e-n)}else t(5e3+a.status)},a.open("GET",`${e}?_=${(new Date).getTime()}`,!0),n=(new Date).getTime(),a.send(null)}))}function J(e){return new Promise((async t=>{let n,a=0;for(let r=0;r<3;r++)if(n=await Y(e),0!=r){if(n>=5e3)return void t(n);a+=n}a=parseInt(a/3),t(a)}))}function Q(e,t){let n=[];t>e.length&&(t=e.length);for(let a=0;a{let n;if("github"==e.fetchInstances)n="https://raw.githubusercontent.com/libredirect/instances/main/data.json";else{if("codeberg"!=e.fetchInstances)return t("disabled");n="https://codeberg.org/LibRedirect/instances/raw/branch/main/data.json"}const a=new XMLHttpRequest;a.open("GET",n,!0),a.onreadystatechange=()=>{if(200===a.status&&a.readyState==XMLHttpRequest.DONE)return t(JSON.parse(a.responseText))},a.onerror=()=>t(),a.ontimeout=()=>t(),a.send(null)}))},getBlacklist:function(e){return new Promise((t=>{let n;if("github"==e.fetchInstances)n="https://raw.githubusercontent.com/libredirect/instances/main/blacklist.json";else{if("codeberg"!=e.fetchInstances)return t("disabled");n="https://codeberg.org/LibRedirect/instances/raw/branch/main/blacklist.json"}const a=new XMLHttpRequest;a.open("GET",n,!0),a.onreadystatechange=()=>{200===a.status&&a.readyState==XMLHttpRequest.DONE&&t(JSON.parse(a.responseText))},a.onerror=()=>t(),a.ontimeout=()=>t(),a.send(null)}))},getConfig:function(){return new Promise((e=>{fetch("/config.json").then((e=>e.text())).then((t=>{e(JSON.parse(t))}))}))},getOptions:function(){return new Promise((e=>browser.storage.local.get("options",(t=>e(t.options)))))},getPingCache:function(){return new Promise((e=>browser.storage.local.get("pingCache",(t=>e(t.pingCache??{})))))},ping:J,addressToLatLng:function(e){const t=new XMLHttpRequest;if(t.open("GET",`https://nominatim.openstreetmap.org/search?q=${encodeURIComponent(e)}&format=json&limit=1`,!1),t.send(),200==t.status){const e=JSON.parse(t.responseText)[0];return e?{coordinate:`${e.lat},${e.lon}`,boundingbox:`${e.boundingbox[2]},${e.boundingbox[1]},${e.boundingbox[3]},${e.boundingbox[0]}`}:{}}},getQuery:function(e){let t="";return e.searchParams.has("q")?t=e.searchParams.get("q"):e.searchParams.has("query")&&(t=e.searchParams.has("query")),t},prefsEncoded:function(e){return new URLSearchParams(e).toString()},convertMapCentre:function(e){let[t,n,a]=[null,null,null];const r=e.pathname.match(/@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/);return r?[,n,t,a]=r:e.searchParams.has("center")&&([t,n]=e.searchParams.get("center").split(","),a=e.searchParams.get("zoom")??"17"),{zoom:a,lon:n,lat:t}},randomInstances:Q,style:function(e,t){const n=function(e,t){const n={text:"#fff",bgMain:"#121212",bgSecondary:"#202020",active:"#fbc117",danger:"#f04141",lightGrey:"#c3c3c3"},a={text:"black",bgMain:"white",bgSecondary:"#e4e4e4",active:"#fb9817",danger:"#f04141",lightGrey:"#c3c3c3"};return"dark"==e.theme?n:"light"==e.theme?a:t.matchMedia("(prefers-color-scheme: dark)").matches?n:a}(e,t);return`--text: ${n.text};\n --bg-main: ${n.bgMain};\n --bg-secondary: ${n.bgSecondary};\n --active: ${n.active};\n --danger: ${n.danger};\n --light-grey: ${n.lightGrey};`},autoPickInstance:async function(e,t){if(t){const n=e.findIndex((e=>t.href.startsWith(e)));n>=0&&e.splice(n,1)}const n=Q(e,5),a=await Promise.all([...n.map((async e=>[e,await J(e)]))]);return a.sort(((e,t)=>e[1]-t[1])),a[0][0]}};const K=void 0===browser.runtime.getBrowserInfo;let ee,te;async function ne(){te=await V.getOptions(),ee=await V.getConfig()}function ae(e,t,n,a){let r=[];if(t)n[t]&&(r=n[t]);else for(const t in a.services[e].frontends)n[t]&&r.push(...n[t]);return r}function re(e,t,n,a,r){let s=n.services[e].targets;r&&(!("excludeTargets"in n.services[e].frontends[r])||"search"===e&&a.search.redirectGoogle||(s=s.filter((t=>!n.services[e].frontends[r].excludeTargets.includes(s.indexOf(t))))),"twitter"===e&&a.twitter.disableTwimg&&(s=s.splice(2,1)));for(const e in s){if(new RegExp(s[e]).test(t.href))return!0}return!1}function se(e,t,n,a,r,s){if("main_frame"!=t&&"sub_frame"!=t&&"image"!=t)return;let c,o;if(s||1!=te.redirectOnlyInIncognito||r){for(const i in ee.services){if(!s&&!te[i].enabled)continue;if(!s&&1==te[i].redirectOnlyInIncognito&&!r)continue;if(o=te[i].frontend,ee.services[i].frontends[o].desktopApp&&"main_frame"!=t&&"main_frame"!=te[i].redirectType&&(o=te[i].embedFrontend),!re(i,e,ee,te,o)){o=null;continue}if("main_frame"!=t&&a&&"sub_frame"==te[i].redirectType&&re(i,a,ee,te,o))return;if(ee.services[i].embeddable&&t!=te[i].redirectType&&"both"!=te[i].redirectType)return"block"==te[i].unsupportedUrls?"CANCEL":void 0;let h=te[o];if(void 0===h)break;if(ee.services[i].frontends[o].localhost&&"localhost"==te[i].instance)c=`http://${o}.localhost:8080`;else{if(0===h.length)return`https://no-instance.libredirect.invalid?frontend=${encodeURIComponent(o)}&url=${encodeURIComponent(e.href)}`;c=V.getRandomInstance(h)}if(n&&h.includes(n.origin))return"main_frame"==t?"BYPASSTAB":null;break}if(o)return function(e,t,n,a,r){switch(n){case"hyperpipe":for(const t of[...e.searchParams.keys()])"q"!==t&&e.searchParams.delete(t);return`${a}${e.pathname}${e.search}`.replace(/\/search\?q=.*/,(e=>e.replace("?q=","/")));case"searx":case"searxng":for(const t of[...e.searchParams.keys()])"q"!==t&&e.searchParams.delete(t);return`${a}/${e.search}`;case"websurfx":case"whoogle":for(const t of[...e.searchParams.keys()])"q"!==t&&e.searchParams.delete(t);return`${a}/search${e.search}`;case"4get":{const t=e.searchParams.get("q");return null!==t?`${a}/web?s=${encodeURIComponent(t)}`:a}case"librey":for(const t in e.searchParams.keys())"q"!=t&&e.searchParams.delete(t);return`${a}/search.php${e.search}`;case"yattee":return e.searchParams.delete("si"),e.href.replace(/^https?:\/{2}/,"yattee://");case"freetube":case"freetubePwa":return e.searchParams.delete("si"),"freetube://"+e.href;case"poketube":if(e.searchParams.delete("si"),e.pathname.startsWith("/channel")){const t=/\/channel\/(.*)\/?$/.exec(e.pathname);if(t)return`${a}/channel?id=${t[1]}${e.search}`}return/\/@[a-z]+\//.exec(e.pathname)?a:`${a}${e.pathname}${e.search}`;case"small":case"libMedium":case"freedium":case"scribe":{const t=e.hostname.match(/^(link|cdn-images-\d+|.*)\.medium\.com/);if(t&&t.length>1){const n=t[1];if("link"!=n||!n.startsWith("cdn-images"))return`${a}/@${n}${e.pathname}${e.search}`}return`${a}${e.pathname}${e.search}`}case"translite":case"simplyTranslate":return`${a}/${e.search}`;case"send":case"mozhi":return a;case"libreTranslate":return`${a}/${e.search.replace("sl","source").replace("tl","target").replace("text","q")}`;case"osm":{if(t&&"earth.google.com"===t.host)return a;let n={layers:"mapnik"},r="#";const s=V.convertMapCentre(e);if(s.zoom&&s.lon&&s.lat&&(r=`#map=${s.zoom}/${s.lon}/${s.lat}`),e.pathname.includes("/embed")){const t=V.getQuery(e);let{coordinate:r,boundingbox:s}=V.addressToLatLng(t);return n.bbox=s,n.marker=r,`${a}/export/embed.html?${V.prefsEncoded(n)}`}if(e.pathname.includes("/dir")){if(e.searchParams.has("travelmode")){const t={driving:"fossgis_osrm_car",walking:"fossgis_osrm_foot",bicycling:"fossgis_osrm_bike",transit:"fossgis_osrm_car"};n.engine=t[e.searchParams.get("travelmode")]}const t=/\/dir\/([^@/]+)\/([^@/]+)\/@-?\d[0-9.]*,-?\d[0-9.]*,\d{1,2}[.z]/.exec(e.pathname),s=/\/dir\/([^@/]+)\//.exec(e.pathname);if(t){const e=V.addressToLatLng(decodeURIComponent(t[1])).coordinate??"",a=V.addressToLatLng(decodeURIComponent(t[2])).coordinate??"";n.route=`${e};${a}`}else if(s){const e=V.addressToLatLng(decodeURIComponent(s[1])).coordinate??"";n.route=`${e};`}else{const t=V.addressToLatLng(e.searchParams.get("origin")).coordinate??"",a=V.addressToLatLng(e.searchParams.get("destination")).coordinate??"";n.route=`${t};${a}`}return`${a}/directions?${V.prefsEncoded(n)}${r}`}const c=/\/place\/(.*?)\//;if(e.pathname.match(c))return`${a}/search?query=${e.pathname.match(c)[1]}${r}`;if(e.searchParams.has("ll")){const[t,n]=e.searchParams.get("ll").split(",");return`${a}/search?query=${t}%2C${n}`}if(e.searchParams.has("viewpoint")){const[t,n]=e.searchParams.get("viewpoint").split(",");return`${a}/search?query=${t}%2C${n}`}const o=V.getQuery(e);return o?`${a}/search?query="${o}${r}&${V.prefsEncoded(n)}`:`${a}/${r}&${V.prefsEncoded(n)}`}case"phantom":case"breezeWiki":{let t,n="";return e.hostname.match(/^[a-zA-Z0-9-]+\.(?:fandom|wikia)\.com/)?(t=e.hostname.match(/^[a-zA-Z0-9-]+(?=\.(?:fandom|wikia)\.com)/),t="www"!=t&&t?`/${t}`:"",n=e.pathname):(t=e.pathname.match(/(?<=wiki\/w:c:)[a-zA-Z0-9-]+(?=:)/),t?(t="/"+t+"/wiki/",n=e.pathname.match(/(?<=wiki\/w:c:[a-zA-Z0-9-]+:).+/)):t=""),e.href.search(/Special:Search\?query/)>-1?`${a}${t}${n}${e.search}`.replace(/Special:Search\?query/,"search?q").replace(/\/wiki/,""):`${a}${t}${n}${e.search}`}case"rimgo":return e.href.search(/^https?:\/{2}(?:[im]\.)?stack\./)>-1?`${a}/stack${e.pathname}${e.search}`:`${a}${e.pathname}${e.search}`;case"redlib":case"libreddit":{const t=e.hostname.match(/^(?:((?:external-)?preview|i)\.)?redd\.it/);if(!t)return`${a}${e.pathname}${e.search}`;switch(t[1]){case"preview":return`${a}/preview/pre${e.pathname}${e.search}`;case"external-preview":return`${a}/preview/external-pre${e.pathname}${e.search}`;case"i":return`${a}/img${e.pathname}`}return`${a}/comments${e.pathname}`}case"teddit":return/^(?:(?:external-)?preview|i)\.redd\.it/.test(e.hostname)?""==e.search?`${a}${e.pathname}?teddit_proxy=${e.hostname}`:`${a}${e.pathname}${e.search}&teddit_proxy=${e.hostname}`:`${a}${e.pathname}${e.search}`;case"troddit":case"eddrit":return/^(?:(?:external-)?preview|i)\.redd\.it/.test(e.hostname)?a:`${a}${e.pathname}${e.search}`;case"neuters":{const t=e.pathname;return t.startsWith("/article/")||t.startsWith("/pf/")||t.startsWith("/arc/")||t.startsWith("/resizer/")?a:`${a}${t}`}case"dumb":return e.pathname.endsWith("-lyrics")?`${a}${e.pathname}`:`${a}${e.pathname}${e.search}`;case"intellectual":return`${a}${e.pathname}${e.search}`;case"ruralDictionary":return e.pathname.includes("/define.php")||e.pathname.includes("/random.php")||"/"==e.pathname?`${a}${e.pathname}${e.search}`:a;case"anonymousOverflow":{if("stackoverflow.com"==e.hostname){const t=/^\/a\/(\d+)\/?/.exec(e.pathname);return t?`${a}/questions/${t[1]}${e.search}`:`${a}${e.pathname}${e.search}`}if("/"==e.pathname||""==e.pathname)return`${a}${e.pathname}${e.search}`;const t=e.href.match(/https?:\/{2}(?:([a-zA-Z0-9-]+)\.(meta\.)?)?stackexchange\.com\//);if(t&&t.length>1)return t[2]?`${a}/exchange/${e.hostname}${e.pathname}${e.search}`:`${a}/exchange/${t[1]}${e.pathname}${e.search}`;const n=e.hostname.match(/(?:[a-zA-Z]+\.)?(?:askubuntu\.com|mathoverflow\.net|serverfault\.com|stackapps\.com|superuser\.com|stackoverflow\.com)/);return n?`${a}/exchange/${n[0]}${e.pathname}${e.search}`:`${a}${e.pathname}${e.search}`}case"biblioReads":return`${a}${e.pathname}${e.search}`;case"wikimore":{let t=e.host.split(".");return"wikipedia"!=t[0]&&"www"!=t[0]?`${a}/wiki/${e.hostname.split(".")[0]}${e.pathname}${e.search}${e.hash}`:`${a}${e.pathname}${e.search}${e.hash}`}case"wikiless":{let t=e.host.split(".");return"wikipedia"!=t[0]&&"www"!=t[0]&&("m"==t[0]?e.searchParams.append("mobileaction","toggle_view_mobile"):e.searchParams.append("lang",t[0]),"m"==t[1]&&e.searchParams.append("mobileaction","toggle_view_mobile")),`${a}${e.pathname}${e.search}${e.hash}`}case"offtiktok":case"proxiTok":return e.pathname.startsWith("/email")?a:`${a}${e.pathname}${e.search}`;case"waybackClassic":{const t=/^\/\web\/(?:[0-9]+)?\*\/(.*)/.exec(e.pathname);if(t){const e=t[1];return`${a}/cgi-bin/history.cgi?utf8=✓&q=${encodeURIComponent(e)}`}const n=/(^\/\web\/([0-9]+)\/.*)/.exec(e.pathname);if(n){let e=n[1];return e=e.replace(n[2],n[2]+"if_"),`https://web.archive.org${e}`}return}case"gothub":return"gist.github.com"==e.hostname?`${a}/gist${e.pathname}${e.search}`:"raw.githubusercontent.com"==e.hostname?`${a}/raw${e.pathname}${e.search}`:`${a}${e.pathname}${e.search}`;case"mikuInvidious":if("bilibili.com"==e.hostname||"www.bilibili.com"==e.hostname||"b23.tv"==e.hostname)return`${a}${e.pathname}${e.search}`;if("space.bilibili.com"==e.hostname)return`${a}/space${e.pathname}${e.search}`;case"tent":if("bandcamp.com"==e.hostname&&"/search"==e.pathname){const t=e.searchParams.get("q");return`${a}/search.php?query=${encodeURIComponent(t)}`}if(e.hostname.endsWith("bandcamp.com")){const t=/^(.*)\.bandcamp\.com/.exec(e.hostname)[1];if("/"==e.pathname||"/music"==e.pathname)return`${a}/artist.php?name=${t}`;{const n=/^\/(.*)\/(.*)/.exec(e.pathname);if(n)return`${a}/release.php?artist=${t}&type=${n[1]}&name=${n[2]}`}}if("f4.bcbits.com"==e.hostname)return`${a}/image.php?file=${/\/img\/(.*)/.exec(e.pathname)[1]}`;if("t4.bcbits.com"==e.hostname){const t=/\/stream\/(.*)\/(.*)\/(.*)/.exec(e.pathname);if(t){const n=t[1],r=t[2],s=t[3],c=e.searchParams.get("token");return`${a}/audio.php/?directory=${n}&format=${r}&file=${s}&token=${encodeURIComponent(c)}`}}case"binternet":return"i.pinimg.com"==e.hostname?`${a}/image_proxy.php?url=${encodeURIComponent(e.href)}`:`${a}${e.pathname}${e.search}`;case"painterest":if("i.pinimg.com"==e.hostname)return`${a}/_/proxy?url=${encodeURIComponent(e.href)}`;const n=/^\/pin\/[^\/]+/.exec(e.pathname);return n?`${a}${n[0]}`:`${a}${e.pathname}${e.search}`;case"laboratory":{let t=e.pathname;return"/"==t&&(t=""),`${a}/${e.hostname}${t}${e.search}`}case"quetre":{const t=/([a-z]+)\.quora\.com/.exec(e.hostname);if(t){const n=t[1];return e.searchParams.append("lang",n),`${a}${e.pathname}${e.search}`}return`${a}${e.pathname}${e.search}`}case"pixivViewer":case"liteXiv":case"pixivFe":{const t=/\/[a-z]{1,3}\/(.*)/.exec(e.pathname);return t?`${a}/${t[1]}${e.search}`:`${a}${e.pathname}${e.search}`}case"vixipy":{const t=/\/[a-z]{1,3}\/(.*)/.exec(e.pathname);if(t){let n=t[1];return n.startsWith("tags/")&&(n=n.replace(/tags/,"tag")),`${a}/${n}${e.search}`}return`${a}${e.pathname}${e.search}`}case"invidious":return e.searchParams.delete("si"),"sub_frame"==r&&e.searchParams.append("autoplay","0"),"youtu.be"==e.hostname||e.hostname.endsWith("youtube.com")&&e.pathname.startsWith("/live")?`${a}/watch?v=${e.pathname.substring(e.pathname.lastIndexOf("/")+1)}&${e.search.substring(1)}`:e.hostname.endsWith("youtube.com")&&e.pathname.startsWith("/redirect?")?e.href:`${a}${e.pathname}${e.search}`;case"freetubeMusic":return"youtu.be"==e.hostname||e.hostname.endsWith("youtube.com")&&e.pathname.startsWith("/live")?`freetube://youtube.com/watch?v=${e.pathname.substring(e.pathname.lastIndexOf("/")+1)}`:"freetube://"+e.href;case"invidiousMusic":return"youtu.be"==e.hostname||e.hostname.endsWith("youtube.com")&&e.pathname.startsWith("/live")?`${a}/watch?v=${e.pathname.substring(e.pathname.lastIndexOf("/")+1)}`:`${a}${e.pathname}${e.search}`;case"materialious":if(e.searchParams.delete("si"),"youtu.be"==e.hostname||e.hostname.endsWith("youtube.com")&&e.pathname.startsWith("/live"))return`${a}/watch/${e.pathname.substring(e.pathname.lastIndexOf("/")+1)}${e.search.replace("?","&")}`;if(e.hostname.endsWith("youtube.com")){if(e.pathname.startsWith("/watch")){if(e.searchParams.has("v")){const t=e.searchParams.get("v");return e.searchParams.delete("v"),`${a}/watch/${t}${e.search.replace("?","&")}`}return`${a}/watch/${e.search.replace("?","&")}`}if(e.pathname.startsWith("/results")){if(e.searchParams.has("search_query")){const t=e.searchParams.get("search_query");return e.searchParams.delete("search_query"),`${a}/search/${t}${e.search.replace("?","&")}`}return`${a}/search/${e.search.replace("?","&")}`}if(e.pathname.startsWith("/redirect?"))return e.href}return`${a}${e.pathname}${e.search}`;case"libremdb":return/\/((?:name|title)\/\w+)\/?$/.exec(e.pathname)?`${a}${e.pathname}${e.search}`:a;case"tuboYoutube":return e.searchParams.delete("si"),e.pathname.startsWith("/channel")?`${a}/channel?url=${encodeURIComponent(e.href)}`:e.pathname.startsWith("/watch")?`${a}/stream?url=${encodeURIComponent(e.href)}`:a;case"tuboSoundcloud":return"/"==e.pathname?`${a}?kiosk?serviceId=1`:e.pathname.match(/^\/[^\/]+(\/$|$)/)?`${a}/channel?url=${encodeURIComponent(e.href)}`:e.pathname.match(/^\/[^\/]+\/[^\/]+/)?`${a}/stream?url=${encodeURIComponent(e.href)}`:a;case"twineo":case"safetwitch":return e.hostname.startsWith("clips.")?`${a}/clip${e.pathname}${e.search}`:`${a}${e.pathname}${e.search}`;case"tekstoLibre":return`${a}/?${e.pathname.slice(1)}`;case"skyview":return"/"==e.pathname?a:`${a}?url=${encodeURIComponent(e.href)}`;case"nitter":{let t=new URLSearchParams(e.search);if(t.delete("ref_src"),t.delete("ref_url"),t.delete("s"),t.delete("t"),t=t.toString(),""!==t&&(t=`?${t}`),"pbs"===e.host.split(".")[0]||"video"===e.host.split(".")[0])try{const[,n,r,s]=t.match(/(.*)\?format=(.*)&(.*)/),c=encodeURIComponent(`${n}.${r}?${s}`);return`${a}/pic${e.pathname}${c}`}catch{return`${a}/pic${e.pathname}${t}`}return e.pathname.split("/").includes("tweets")?`${a}${e.pathname.replace("/tweets","")}${t}`:"t.co"==e.host?`${a}/t.co${e.pathname}`:`${a}${e.pathname}${t}#m`}case"priviblur":{if("www.tumblr.com"==e.hostname)return`${a}${e.pathname}${e.search}`;if(e.hostname.startsWith("assets"))return`${a}/tblr/assets${e.pathname}${e.search}`;if(e.hostname.startsWith("static"))return`${a}/tblr/static${e.pathname}${e.search}`;const t=/^([0-9]+)\.media\.tumblr\.com/.exec(e.hostname);if(t)return`${a}/tblr/media/${t[1]}${e.pathname}${e.search}`;const n=/^(?:www\.)?([a-z\d-]+)\.tumblr\.com/.exec(e.hostname);if(n){const t=n[1];return e.pathname.startsWith("/post")?`${a}/${t}${e.pathname.slice(5)}${e.search}`:`${a}/${t}${e.pathname}${e.search}`}return`${a}${e.pathname}${e.search}`}case"ultimateTab":case"freetar":if(e.pathname.startsWith("/search.php"))return e.searchParams.set("search_term",e.searchParams.get("value")),e.searchParams.delete("value"),e.searchParams.delete("search_type"),`${a}/search${e.search}`;if(e.pathname.startsWith("/artist"))return;return`${a}${e.pathname}${e.search}`;case"ratAintTieba":return e.searchParams.delete("ie"),`${a}${e.pathname}${e.search}`;case"shoelace":{const t=/^\/(?:(?:(?:[^\/])?\/post)|t)\/([^\/])/.exec(e.pathname);return t?`${a}/t/${t[1]}${e.search}`:`${a}${e.pathname}${e.search}`}case"skunkyArt":{if(e.pathname.startsWith("/search"))return`${a}${e.pathname}${e.search}&type=all`;const t=/^\/(.*?)\/art\/(.*)\/?/.exec(e.pathname);if(t)return`${a}/post/${t[1]}/${t[2]}${e.search}`;const n=/^\/([^\/]+)$/.exec(e.pathname);if(n)return`${a}/group_user?q=${n[1]}&type=about`;const r=/^\/(.*?)\/gallery(\/$|$)$/.exec(e.pathname);return r?`${a}/group_user?q=${r[1]}&type=gallery`:`${a}${e.pathname}${e.search}`}case"ytifyMusic":case"ytify":{if(e.pathname.startsWith("/watch"))return`${a}/?s=${encodeURIComponent(e.searchParams.get("v"))}`;const t=/\/channel\/([^\/]+)/.exec(e.pathname);return t?`${a}/list?channel=${t[1]}`:e.pathname.startsWith("/playlist")?`${a}/list?playlists=${encodeURIComponent(e.searchParams.get("list"))}`:`${a}${e.pathname}${e.search}`}case"koub":return e.pathname.startsWith("/view/")||e.pathname.startsWith("/stories/")?`${a}${e.pathname}${e.search}`:/^\/([^\/]+)\/?$/.exec(e.pathname)?`${a}/account${e.pathname}${e.search}`:a;case"duckDuckGoAiChat":return"https://duckduckgo.com/?q=DuckDuckGo+AI+Chat&ia=chat&duckai=1";case"protonLumo":return"https://lumo.proton.me/";case"soundcloak":if(e.pathname.startsWith("/feed")||e.pathname.startsWith("/stream"))return a;if(e.pathname.startsWith("/search")){if(!e.search)return a;let t="";return e.pathname.startsWith("/search/sounds")?t="tracks":e.pathname.startsWith("/search/people")?t="users":(e.pathname.startsWith("/search/albums")||e.pathname.startsWith("/search/sets"))&&(t="playlists"),t?(t="&type="+t,`${a}/search${e.search}${t}`):a}return"on.soundcloud.com"==e.host?`${a}/on${e.pathname}`:`${a}${e.pathname}${e.search}`;case"piped":case"pipedMaterial":case"cloudtube":case"lightTube":case"viewtube":e.searchParams.delete("si");default:return`${a}${e.pathname}${e.search}`}}(e,n,o,c,t)}}async function ce(e){let t=await V.getOptions(),n=await V.getConfig();for(const a in n.services){let r=t[a].frontend;if(null!=t[r]&&(!(t[r].findIndex((t=>e.href.startsWith(t)))<0)||e.href.startsWith(`http://${r}.localhost:8080`)))switch(a){case"youtube":case"imdb":case"imgur":case"tiktok":case"reddit":case"imdb":case"snopes":case"urbanDictionary":case"quora":case"twitter":case"medium":case"pinterest":return`${n.services[a].url}${e.pathname}${e.search}`;case"fandom":{let t=e.pathname.match(/^\/([a-zA-Z0-9-]+)\/wiki\/(.*)/);return t?`https://${t[1]}.fandom.com/wiki/${t[2]}`:void 0}case"wikipedia":{const t=e.searchParams.get("lang");return null!=t?`https://${t}.wikipedia.org${e.pathname}${e.search}${e.hash}`:`https://wikipedia.org${e.pathname}${e.search}${e.hash}`}case"stackOverflow":if(e.pathname.startsWith("/questions/"))return`https://stackoverflow.com${e.pathname}${e.search}`;if(e.pathname.startsWith("/exchange/")){const t=/\/exchange\/(.*?)(\/.*)/.exec(e.pathname);if(t)return t[1].includes(".")?`https://${t[1]}${t[2]}`:`https://${t[1]}.stackexchange.com${t[2]}`}return;case"tekstowo":return`${n.services[a].url}/${e.search.slice(1)}`;case"goodreads":return`https://goodreads.com${e.pathname}${e.search}`;case"soundcloud":if("soundcloak"==r){if(e.pathname.includes("/_/"))return`${n.services[a].url}${e.pathname.split("/_/")[0]}`;if("/search"==e.pathname){let t=e.searchParams.get("type");switch(t){case"playlists":t="sets";break;case"tracks":t="sounds";break;case"users":t="people";break;default:t=""}return e.searchParams.delete("type"),t?`${n.services[a].url}/search/${t}?${e.searchParams.toString()}`:`${n.services[a].url}/search?${e.searchParams.toString()}`}return`${n.services[a].url}${e.pathname}`}default:return}}}window.browser=window.browser||window.chrome,ne(),browser.storage.onChanged.addListener(ne);const oe={materialious:["https://app.materialio.us"],viewtube:["https://viewtube.io"],piped:["https://pipedapi-libre.kavin.rocks"],pipedMaterial:["https://piped-material.xn--17b.net"],cloudtube:["https://tube.cadence.moe"],lightTube:["https://tube.kuylar.dev"],poketube:["https://poketube.fun"],proxiTok:["https://proxitok.pabloferreiro.es"],offtiktok:["https://www.offtiktok.com"],redlib:["https://safereddit.com"],eddrit:["https://eddrit.com"],troddit:["https://www.troddit.com"],scribe:["https://scribe.rip"],libMedium:["https://md.vern.cc"],small:["https://small.bloat.cat"],freedium:["https://freedium.cfd"],quetre:["https://quetre.iket.me"],libremdb:["https://libremdb.iket.me"],simplyTranslate:["https://simplytranslate.org"],translite:["https://tl.bloat.cat"],mozhi:["https://mozhi.aryak.me"],searxng:["https://nyc1.sx.ggtyler.dev"],"4get":["https://4get.ca"],websurfx:["https://alamin655-spacex.hf.space"],rimgo:["https://rimgo.vern.cc"],hyperpipe:["https://hyperpipe.surge.sh"],osm:["https://www.openstreetmap.org"],breezeWiki:["https://breezewiki.com"],neuters:["https://neuters.de"],dumb:["https://dm.vern.cc"],intellectual:["https://intellectual.insprill.net"],ruralDictionary:["https://rd.vern.cc"],anonymousOverflow:["https://code.whatever.social"],suds:["https://sd.vern.cc"],unfunny:["https://uf.vern.cc"],soprano:["https://sp.vern.cc"],meme:["https://mm.vern.cc"],waybackClassic:["https://wayback-classic.net"],tent:["https://tent.sny.sh"],laboratory:["https://lab.vern.cc"],binternet:["https://bn.bloat.cat"],painterest:["https://pt.bloat.cat"],pixivFe:["https://pixiv.perennialte.ch"],liteXiv:["https://litexiv.465321.best","https://litexiv.bloat.cat"],pixivViewer:["https://pixiv.pictures"],vixipy:["https://vx.maid.zone"],indestructables:["https://indestructables.private.coffee"],destructables:["https://ds.vern.cc"],structables:["https://structables.private.coffee"],safetwitch:["https://safetwitch.drgns.space"],twineo:["https://twineo.exozy.me"],kittygram:["https://kittygram.irelephant.net/"],proxigram:["https://ig.opnxng.com"],tuboYoutube:["https://tubo.media"],tuboSoundcloud:["https://tubo.media"],tekstoLibre:["https://davilarek.github.io/TekstoLibre"],skyview:["https://skyview.social"],skylib:["https://skylib.coffee"],priviblur:["https://pb.bloat.cat"],nitter:["https://nitter.privacydev.net"],pasted:["https://pasted.drakeerv.com"],pasty:["https://pasty.lus.pm"],freetar:["https://freetar.de"],ultimateTab:["https://ultimate-tab.com"],ratAintTieba:["https://rat.fis.land"],shoelace:["https://shoelace.mint.lgbt"],skunkyArt:["https://skunky.bloat.cat"],ytify:["https://ytify.pp.ua"],ytifyMusic:["https://ytify.pp.ua"],nerdsForNerds:["https://nn.vern.cc"],ducksForDucks:["https://ducksforducks.private.coffee"],koub:["https://koub.clovius.club"],soundcloak:["https://soundcloak.fly.dev"],gocook:["https://cook.adminforge.de"],wikimore:["https://wikimore.private.coffee"],libreTranslate:["https://libretranslate.com"],cryptPad:["https://cryptpad.org"],phantom:["https://phantom.kuuro.net"]};async function ie(){let e=await V.getConfig(),t={};for(const n in e.services){t[n]={};for(const a in e.services[n].options)t[n][a]=e.services[n].options[a];for(const a in e.services[n].frontends)e.services[n].frontends[a].instanceList&&(t[a]=[])}return t.exceptions={url:[],regex:[]},t.theme="detect",t.popupServices=["youtube","tiktok","imgur","reddit","quora","translate","maps"],t.fetchInstances="github",t.redirectOnlyInIncognito=!1,t={...t,...oe},t}var he={redirect:se,redirectAsync:async function(e,t,n,a,r,s){return await ne(),se(e,t,n,a,r,s)},computeServiceFrontend:async function(e){const t=await V.getConfig(),n=await V.getOptions();for(const a in t.services){if(re(a,e,t,n))return{service:a,frontend:null};for(const r in t.services[a].frontends){const s=ae(a,r,n,t).findIndex((t=>e.href.startsWith(t)));if(s>=0)return{service:a,frontend:r}}}},reverse:ce,initDefaults:function(){return new Promise((e=>{browser.storage.local.clear((async()=>{te=await ie(),browser.storage.local.set({options:te},(()=>e()))}))}))},processUpdate:function(e){return new Promise((async t=>{const n=await V.getConfig();let a=e??await V.getOptions();const r=await ie();for(const e in a)if(e in r){if("object"==typeof e&&null!==e)for(const t in a[e])t in r[e]||delete a[e][t]}else delete a[e];a.popupServices=a.popupServices.filter((e=>e in n.services));for(const[e,t]of Object.entries(r))e in a||(a[e]=t);for(const[e,t]of Object.entries(n.services)){a[e].frontend in t.frontends||(a[e]=t.options);for(const n in t.options)n in a[e]||(a[e][n]=t.options[n])}browser.storage.local.clear((()=>browser.storage.local.set({options:a},(()=>t()))))}))},copyRaw:async function(e){const t=await ce(e);if(t)if(K){var n=document.createElement("textarea");n.textContent=t,document.body.appendChild(n),n.select(),document.execCommand("copy"),n.blur(),document.body.removeChild(n)}else navigator.clipboard.writeText(t)},switchInstance:function(e,t){return new Promise((async n=>{let a=await V.getOptions(),r=await V.getConfig();if(V.protocolHost(e),t){const r=a[a[t].frontend];if(void 0!==r){const t=V.getNextInstance(e.origin,r);if(t)return n(`${t}${e.pathname}${e.search}`)}}else for(const t in r.services){let r=a[a[t].frontend];if(void 0===r)continue;const s=r.findIndex((t=>e.href.startsWith(t)));if(s<0)continue;if(r.splice(s,1),0===r.length)return n();const c=V.getNextInstance(e.origin,r);if(c)return n(`${c}${e.pathname}${e.search}`)}n()}))},isException:function(e){if(!te)return!1;if(!te.exceptions)return!1;let t=te.exceptions;if(t&&e){if(t.url)for(let n of t.url)if(n=new URL(n),n=n.href.replace(/^http:\/\//,"https://"),n==e.href)return!0;if(t.regex)for(const n of t.regex)if(new RegExp(n).test(e.href))return!0}return!1}};const ue=[];function pe(t,n=e){let a;const r=new Set;function s(e){if(c(t,e)&&(t=e,a)){const e=!ue.length;for(const e of r)e[1](),ue.push(e,t);if(e){for(let e=0;e{r.delete(i),0===r.size&&a&&(a(),a=null)}}}}const le=pe(null),me=pe(null),$e=pe("general");function de(e){let n,a,r,s;const c=e[3].default,i=function(e,t,n,a){if(e){const r=o(e,t,n,a);return e[0](r)}}(c,e,e[2],null);let h=[e[0],e[1]],u={};for(let e=0;ee.removeEventListener(t,n,a)}(n,"click",e[4]),r=!0)},p(e,[t]){i&&i.p&&(!a||4&t)&&function(e,t,n,a,r,s){if(r){const c=o(t,n,a,s);e.p(c,r)}}(i,c,e,e[2],a?function(e,t,n,a){if(e[2]&&a){const r=e[2](a(n));if(void 0===t.dirty)return r;if("object"==typeof r){const e=[],n=Math.max(t.dirty.length,r.length);for(let a=0;a32){const t=[],n=e.ctx.length/32;for(let e=0;e{a(1,n=t(t({},n),i(e))),a(0,s=h(n,r)),"$$scope"in e&&a(2,o=e.$$scope)},n=i(n),[s,n,o,c,function(t){_.call(this,e,t)}]}class ge extends X{constructor(e){super(),F(this,e,fe,de,c,{})}}function be(n){let a,r,s=[n[0],{xmlns:"http://www.w3.org/2000/svg"},{height:"20px"},{viewBox:"0 -960 960 960"},{width:"20px"},{fill:"currentColor"}],c={};for(let e=0;e{n=t(t({},n),i(e)),a(0,s=h(n,r))},[s]}class ye extends X{constructor(e){super(),F(this,e,we,be,c,{})}}function ve(t){let n;return{c(){n=m("p"),n.textContent="Loading..."},m(e,t){p(e,n,t)},p:e,i:e,o:e,d(e){e&&l(n)}}}function xe(e){let t,n,a,r;const s=[Pe,ke],c=[];return~(n=function(e){return"disabled"==e[5].get("message")?0:"no_instance"==e[5].get("message")?1:-1}(e))&&(a=c[n]=s[n](e)),{c(){t=m("div"),a&&a.c(),g(t,"class","main svelte-14zc8ex"),g(t,"dir","auto"),g(t,"style",e[2])},m(e,a){p(e,t,a),~n&&c[n].m(t,null),r=!0},p(e,n){a&&a.p(e,n),(!r||4&n)&&g(t,"style",e[2])},i(e){r||(A(a),r=!0)},o(e){N(a),r=!1},d(e){e&&l(t),~n&&c[n].d()}}}function ke(e){let t,n,a,r,s;return r=new ge({props:{disabled:e[3],$$slots:{default:[_e]},$$scope:{ctx:e}}}),r.$on("click",e[10]),{c(){t=m("div"),n=m("h1"),n.textContent="You have no instance selected for this frontend",a=f(),j(r.$$.fragment)},m(e,c){p(e,t,c),u(t,n),u(t,a),Z(r,t,null),s=!0},p(e,t){const n={};8&t&&(n.disabled=e[3]),16384&t&&(n.$$scope={dirty:t,ctx:e}),r.$set(n)},i(e){s||(A(r.$$.fragment,e),s=!0)},o(e){N(r.$$.fragment,e),s=!1},d(e){e&&l(t),G(r)}}}function Pe(e){let t,n,a,r,s;return r=new ge({props:{$$slots:{default:[Ie]},$$scope:{ctx:e}}}),r.$on("click",e[9]),{c(){t=m("div"),n=m("h1"),n.textContent="You disabled redirections for this service",a=f(),j(r.$$.fragment)},m(e,c){p(e,t,c),u(t,n),u(t,a),Z(r,t,null),s=!0},p(e,t){const n={};16384&t&&(n.$$scope={dirty:t,ctx:e}),r.$set(n)},i(e){s||(A(r.$$.fragment,e),s=!0)},o(e){N(r.$$.fragment,e),s=!1},d(e){e&&l(t),G(r)}}}function _e(t){let n,a,r,s,c=(t[4].i18n.getMessage("autoPickInstance")||"Auto Pick Instance")+"";return n=new ye({props:{class:"margin margin_"+document.body.dir}}),{c(){j(n.$$.fragment),a=f(),r=d(c)},m(e,t){Z(n,e,t),p(e,a,t),p(e,r,t),s=!0},p:e,i(e){s||(A(n.$$.fragment,e),s=!0)},o(e){N(n.$$.fragment,e),s=!1},d(e){G(n,e),e&&l(a),e&&l(r)}}}function Ie(t){let n,a=(t[4].i18n.getMessage("enable")||"Enable")+"";return{c(){n=d(a)},m(e,t){p(e,n,t)},p:e,d(e){e&&l(n)}}}function We(e){let t,n,a,s;const c=[xe,ve],o=[];function i(e,t){return e[0]&&e[1]?0:1}return t=i(e),n=o[t]=c[t](e),{c(){n.c(),a=d("")},m(e,n){o[t].m(e,n),p(e,a,n),s=!0},p(e,[s]){let h=t;t=i(e),t===h?o[t].p(e,s):(U={r:0,c:[],p:U},N(o[h],1,1,(()=>{o[h]=null})),U.r||r(U.c),U=U.p,n=o[t],n?n.p(e,s):(n=o[t]=c[t](e),n.c()),A(n,1),n.m(a.parentNode,a))},i(e){s||(A(n),s=!0)},o(e){N(n),s=!1},d(e){o[t].d(e),e&&l(a)}}}function Ce(e,t,n){const a=window.browser||window.chrome;let r;const s=le.subscribe((e=>{e&&(n(0,r=e),a.storage.local.set({options:e}))}));let c;const o=me.subscribe((e=>n(1,c=e)));var i;let h;i=()=>{s(),o()},P().$$.on_destroy.push(i),function(e){P().$$.on_mount.push(e)}((async()=>{let e=await V.getOptions();e||(await he.initDefaults(),e=await V.getOptions()),le.set(e),me.set(await V.getConfig())})),$e.subscribe((e=>e));let u=!1;const p=new URLSearchParams(window.location.search),l=new URL(p.get("url"));async function m(){n(3,u=!0);const e=p.get("frontend"),t=(await V.getList(r))[e].clearnet,a=await V.autoPickInstance(t);r[e].push(a),le.set(r),n(3,u=!1)}async function $(){const e=await he.redirectAsync(l,"main_frame",null,null,!1,!0);a.tabs.update({url:e})}return e.$$.update=()=>{1&e.$$.dirty&&r&&n(2,h=V.style(r,window))},[r,c,h,u,a,p,l,m,$,async()=>{const{service:e}=await he.computeServiceFrontend(l);n(0,r[e].enabled=!0,r),le.set(r),await $()},async()=>{await m(),await $()}]}const qe=new class extends X{constructor(e){super(),F(this,e,Ce,We,c,{})}}({target:document.body});return qe}(); -//# sourceMappingURL=bundle.js.map diff --git a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/messages/build/bundle.js.map b/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/messages/build/bundle.js.map deleted file mode 100644 index 3189784..0000000 --- a/net.imput.helium/.config/net.imput.helium/Default/Extensions/oladmjdebphlnjjcnomfhhbfdldiimaf/3.3.0_0/pages/messages/build/bundle.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"bundle.js","sources":["../../../../node_modules/svelte/internal/index.mjs","../../../assets/javascripts/utils.js","../../../assets/javascripts/services.js","../../../../node_modules/svelte/store/index.mjs","../../messages_src/stores.js","../../components/Button.svelte","../../icons/AutoPickIcon.svelte","../../messages_src/App.svelte","../../messages_src/main.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\n// Adapted from https://github.com/then/is-promise/blob/master/index.js\n// Distributed under MIT License https://github.com/then/is-promise/blob/master/LICENSE\nfunction is_promise(value) {\n return !!value && (typeof value === 'object' || typeof value === 'function') && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nlet src_url_equal_anchor;\nfunction src_url_equal(element_src, url) {\n if (!src_url_equal_anchor) {\n src_url_equal_anchor = document.createElement('a');\n }\n src_url_equal_anchor.href = url;\n return element_src === src_url_equal_anchor.href;\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction is_empty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction validate_store(store, name) {\n if (store != null && typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(store, ...callbacks) {\n if (store == null) {\n return noop;\n }\n const unsub = store.subscribe(...callbacks);\n return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\nfunction get_store_value(store) {\n let value;\n subscribe(store, _ => value = _)();\n return value;\n}\nfunction component_subscribe(component, store, callback) {\n component.$$.on_destroy.push(subscribe(store, callback));\n}\nfunction create_slot(definition, ctx, $$scope, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n return definition[1] && fn\n ? assign($$scope.ctx.slice(), definition[1](fn(ctx)))\n : $$scope.ctx;\n}\nfunction get_slot_changes(definition, $$scope, dirty, fn) {\n if (definition[2] && fn) {\n const lets = definition[2](fn(dirty));\n if ($$scope.dirty === undefined) {\n return lets;\n }\n if (typeof lets === 'object') {\n const merged = [];\n const len = Math.max($$scope.dirty.length, lets.length);\n for (let i = 0; i < len; i += 1) {\n merged[i] = $$scope.dirty[i] | lets[i];\n }\n return merged;\n }\n return $$scope.dirty | lets;\n }\n return $$scope.dirty;\n}\nfunction update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) {\n if (slot_changes) {\n const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n slot.p(slot_context, slot_changes);\n }\n}\nfunction update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) {\n const slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn);\n}\nfunction get_all_dirty_from_scope($$scope) {\n if ($$scope.ctx.length > 32) {\n const dirty = [];\n const length = $$scope.ctx.length / 32;\n for (let i = 0; i < length; i++) {\n dirty[i] = -1;\n }\n return dirty;\n }\n return -1;\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction compute_rest_props(props, keys) {\n const rest = {};\n keys = new Set(keys);\n for (const k in props)\n if (!keys.has(k) && k[0] !== '$')\n rest[k] = props[k];\n return rest;\n}\nfunction compute_slots(slots) {\n const result = {};\n for (const key in slots) {\n result[key] = true;\n }\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\nfunction null_to_empty(value) {\n return value == null ? '' : value;\n}\nfunction set_store_value(store, ret, value) {\n store.set(value);\n return ret;\n}\nconst has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nfunction action_destroyer(action_result) {\n return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\nfunction split_css_unit(value) {\n const split = typeof value === 'string' && value.match(/^\\s*(-?[\\d.]+)([^\\s]*)\\s*$/);\n return split ? [parseFloat(split[1]), split[2] || 'px'] : [value, 'px'];\n}\nconst contenteditable_truthy_values = ['', true, 1, 'true', 'contenteditable'];\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = is_client ? cb => requestAnimationFrame(cb) : noop;\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nfunction run_tasks(now) {\n tasks.forEach(task => {\n if (!task.c(now)) {\n tasks.delete(task);\n task.f();\n }\n });\n if (tasks.size !== 0)\n raf(run_tasks);\n}\n/**\n * For testing purposes only!\n */\nfunction clear_loops() {\n tasks.clear();\n}\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n */\nfunction loop(callback) {\n let task;\n if (tasks.size === 0)\n raf(run_tasks);\n return {\n promise: new Promise(fulfill => {\n tasks.add(task = { c: callback, f: fulfill });\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\nconst globals = (typeof window !== 'undefined'\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : global);\n\n/**\n * Resize observer singleton.\n * One listener per element only!\n * https://groups.google.com/a/chromium.org/g/blink-dev/c/z6ienONUb5A/m/F5-VcUZtBAAJ\n */\nclass ResizeObserverSingleton {\n constructor(options) {\n this.options = options;\n this._listeners = 'WeakMap' in globals ? new WeakMap() : undefined;\n }\n observe(element, listener) {\n this._listeners.set(element, listener);\n this._getObserver().observe(element, this.options);\n return () => {\n this._listeners.delete(element);\n this._observer.unobserve(element); // this line can probably be removed\n };\n }\n _getObserver() {\n var _a;\n return (_a = this._observer) !== null && _a !== void 0 ? _a : (this._observer = new ResizeObserver((entries) => {\n var _a;\n for (const entry of entries) {\n ResizeObserverSingleton.entries.set(entry.target, entry);\n (_a = this._listeners.get(entry.target)) === null || _a === void 0 ? void 0 : _a(entry);\n }\n }));\n }\n}\n// Needs to be written like this to pass the tree-shake-test\nResizeObserverSingleton.entries = 'WeakMap' in globals ? new WeakMap() : undefined;\n\n// Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM\n// at the end of hydration without touching the remaining nodes.\nlet is_hydrating = false;\nfunction start_hydrating() {\n is_hydrating = true;\n}\nfunction end_hydrating() {\n is_hydrating = false;\n}\nfunction upper_bound(low, high, key, value) {\n // Return first index of value larger than input value in the range [low, high)\n while (low < high) {\n const mid = low + ((high - low) >> 1);\n if (key(mid) <= value) {\n low = mid + 1;\n }\n else {\n high = mid;\n }\n }\n return low;\n}\nfunction init_hydrate(target) {\n if (target.hydrate_init)\n return;\n target.hydrate_init = true;\n // We know that all children have claim_order values since the unclaimed have been detached if target is not \n let children = target.childNodes;\n // If target is , there may be children without claim_order\n if (target.nodeName === 'HEAD') {\n const myChildren = [];\n for (let i = 0; i < children.length; i++) {\n const node = children[i];\n if (node.claim_order !== undefined) {\n myChildren.push(node);\n }\n }\n children = myChildren;\n }\n /*\n * Reorder claimed children optimally.\n * We can reorder claimed children optimally by finding the longest subsequence of\n * nodes that are already claimed in order and only moving the rest. The longest\n * subsequence of nodes that are claimed in order can be found by\n * computing the longest increasing subsequence of .claim_order values.\n *\n * This algorithm is optimal in generating the least amount of reorder operations\n * possible.\n *\n * Proof:\n * We know that, given a set of reordering operations, the nodes that do not move\n * always form an increasing subsequence, since they do not move among each other\n * meaning that they must be already ordered among each other. Thus, the maximal\n * set of nodes that do not move form a longest increasing subsequence.\n */\n // Compute longest increasing subsequence\n // m: subsequence length j => index k of smallest value that ends an increasing subsequence of length j\n const m = new Int32Array(children.length + 1);\n // Predecessor indices + 1\n const p = new Int32Array(children.length);\n m[0] = -1;\n let longest = 0;\n for (let i = 0; i < children.length; i++) {\n const current = children[i].claim_order;\n // Find the largest subsequence length such that it ends in a value less than our current value\n // upper_bound returns first greater value, so we subtract one\n // with fast path for when we are on the current longest subsequence\n const seqLen = ((longest > 0 && children[m[longest]].claim_order <= current) ? longest + 1 : upper_bound(1, longest, idx => children[m[idx]].claim_order, current)) - 1;\n p[i] = m[seqLen] + 1;\n const newLen = seqLen + 1;\n // We can guarantee that current is the smallest value. Otherwise, we would have generated a longer sequence.\n m[newLen] = i;\n longest = Math.max(newLen, longest);\n }\n // The longest increasing subsequence of nodes (initially reversed)\n const lis = [];\n // The rest of the nodes, nodes that will be moved\n const toMove = [];\n let last = children.length - 1;\n for (let cur = m[longest] + 1; cur != 0; cur = p[cur - 1]) {\n lis.push(children[cur - 1]);\n for (; last >= cur; last--) {\n toMove.push(children[last]);\n }\n last--;\n }\n for (; last >= 0; last--) {\n toMove.push(children[last]);\n }\n lis.reverse();\n // We sort the nodes being moved to guarantee that their insertion order matches the claim order\n toMove.sort((a, b) => a.claim_order - b.claim_order);\n // Finally, we move the nodes\n for (let i = 0, j = 0; i < toMove.length; i++) {\n while (j < lis.length && toMove[i].claim_order >= lis[j].claim_order) {\n j++;\n }\n const anchor = j < lis.length ? lis[j] : null;\n target.insertBefore(toMove[i], anchor);\n }\n}\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction append_styles(target, style_sheet_id, styles) {\n const append_styles_to = get_root_for_style(target);\n if (!append_styles_to.getElementById(style_sheet_id)) {\n const style = element('style');\n style.id = style_sheet_id;\n style.textContent = styles;\n append_stylesheet(append_styles_to, style);\n }\n}\nfunction get_root_for_style(node) {\n if (!node)\n return document;\n const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n if (root && root.host) {\n return root;\n }\n return node.ownerDocument;\n}\nfunction append_empty_stylesheet(node) {\n const style_element = element('style');\n append_stylesheet(get_root_for_style(node), style_element);\n return style_element.sheet;\n}\nfunction append_stylesheet(node, style) {\n append(node.head || node, style);\n return style.sheet;\n}\nfunction append_hydration(target, node) {\n if (is_hydrating) {\n init_hydrate(target);\n if ((target.actual_end_child === undefined) || ((target.actual_end_child !== null) && (target.actual_end_child.parentNode !== target))) {\n target.actual_end_child = target.firstChild;\n }\n // Skip nodes of undefined ordering\n while ((target.actual_end_child !== null) && (target.actual_end_child.claim_order === undefined)) {\n target.actual_end_child = target.actual_end_child.nextSibling;\n }\n if (node !== target.actual_end_child) {\n // We only insert if the ordering of this node should be modified or the parent node is not target\n if (node.claim_order !== undefined || node.parentNode !== target) {\n target.insertBefore(node, target.actual_end_child);\n }\n }\n else {\n target.actual_end_child = node.nextSibling;\n }\n }\n else if (node.parentNode !== target || node.nextSibling !== null) {\n target.appendChild(node);\n }\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction insert_hydration(target, node, anchor) {\n if (is_hydrating && !anchor) {\n append_hydration(target, node);\n }\n else if (node.parentNode !== target || node.nextSibling != anchor) {\n target.insertBefore(node, anchor || null);\n }\n}\nfunction detach(node) {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction element_is(name, is) {\n return document.createElement(name, { is });\n}\nfunction object_without_properties(obj, exclude) {\n const target = {};\n for (const k in obj) {\n if (has_prop(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction comment(content) {\n return document.createComment(content);\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_immediate_propagation(fn) {\n return function (event) {\n event.stopImmediatePropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction self(fn) {\n return function (event) {\n // @ts-ignore\n if (event.target === this)\n fn.call(this, event);\n };\n}\nfunction trusted(fn) {\n return function (event) {\n // @ts-ignore\n if (event.isTrusted)\n fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else if (node.getAttribute(attribute) !== value)\n node.setAttribute(attribute, value);\n}\n/**\n * List of attributes that should always be set through the attr method,\n * because updating them through the property setter doesn't work reliably.\n * In the example of `width`/`height`, the problem is that the setter only\n * accepts numeric values, but the attribute can also be set to a string like `50%`.\n * If this list becomes too big, rethink this approach.\n */\nconst always_set_through_set_attribute = ['width', 'height'];\nfunction set_attributes(node, attributes) {\n // @ts-ignore\n const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n for (const key in attributes) {\n if (attributes[key] == null) {\n node.removeAttribute(key);\n }\n else if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key === '__value') {\n node.value = node[key] = attributes[key];\n }\n else if (descriptors[key] && descriptors[key].set && always_set_through_set_attribute.indexOf(key) === -1) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_svg_attributes(node, attributes) {\n for (const key in attributes) {\n attr(node, key, attributes[key]);\n }\n}\nfunction set_custom_element_data_map(node, data_map) {\n Object.keys(data_map).forEach((key) => {\n set_custom_element_data(node, key, data_map[key]);\n });\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction set_dynamic_element_data(tag) {\n return (/-/.test(tag)) ? set_custom_element_data_map : set_attributes;\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group, __value, checked) {\n const value = new Set();\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.add(group[i].__value);\n }\n if (!checked) {\n value.delete(__value);\n }\n return Array.from(value);\n}\nfunction init_binding_group(group) {\n let _inputs;\n return {\n /* push */ p(...inputs) {\n _inputs = inputs;\n _inputs.forEach(input => group.push(input));\n },\n /* remove */ r() {\n _inputs.forEach(input => group.splice(group.indexOf(input), 1));\n }\n };\n}\nfunction init_binding_group_dynamic(group, indexes) {\n let _group = get_binding_group(group);\n let _inputs;\n function get_binding_group(group) {\n for (let i = 0; i < indexes.length; i++) {\n group = group[indexes[i]] = group[indexes[i]] || [];\n }\n return group;\n }\n function push() {\n _inputs.forEach(input => _group.push(input));\n }\n function remove() {\n _inputs.forEach(input => _group.splice(_group.indexOf(input), 1));\n }\n return {\n /* update */ u(new_indexes) {\n indexes = new_indexes;\n const new_group = get_binding_group(group);\n if (new_group !== _group) {\n remove();\n _group = new_group;\n push();\n }\n },\n /* push */ p(...inputs) {\n _inputs = inputs;\n push();\n },\n /* remove */ r: remove\n };\n}\nfunction to_number(value) {\n return value === '' ? null : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction init_claim_info(nodes) {\n if (nodes.claim_info === undefined) {\n nodes.claim_info = { last_index: 0, total_claimed: 0 };\n }\n}\nfunction claim_node(nodes, predicate, processNode, createNode, dontUpdateLastIndex = false) {\n // Try to find nodes in an order such that we lengthen the longest increasing subsequence\n init_claim_info(nodes);\n const resultNode = (() => {\n // We first try to find an element after the previous one\n for (let i = nodes.claim_info.last_index; i < nodes.length; i++) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n return node;\n }\n }\n // Otherwise, we try to find one before\n // We iterate in reverse so that we don't go too far back\n for (let i = nodes.claim_info.last_index - 1; i >= 0; i--) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n else if (replacement === undefined) {\n // Since we spliced before the last_index, we decrease it\n nodes.claim_info.last_index--;\n }\n return node;\n }\n }\n // If we can't find any matching node, we create a new one\n return createNode();\n })();\n resultNode.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n return resultNode;\n}\nfunction claim_element_base(nodes, name, attributes, create_element) {\n return claim_node(nodes, (node) => node.nodeName === name, (node) => {\n const remove = [];\n for (let j = 0; j < node.attributes.length; j++) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name]) {\n remove.push(attribute.name);\n }\n }\n remove.forEach(v => node.removeAttribute(v));\n return undefined;\n }, () => create_element(name));\n}\nfunction claim_element(nodes, name, attributes) {\n return claim_element_base(nodes, name, attributes, element);\n}\nfunction claim_svg_element(nodes, name, attributes) {\n return claim_element_base(nodes, name, attributes, svg_element);\n}\nfunction claim_text(nodes, data) {\n return claim_node(nodes, (node) => node.nodeType === 3, (node) => {\n const dataStr = '' + data;\n if (node.data.startsWith(dataStr)) {\n if (node.data.length !== dataStr.length) {\n return node.splitText(dataStr.length);\n }\n }\n else {\n node.data = dataStr;\n }\n }, () => text(data), true // Text nodes should not update last index since it is likely not worth it to eliminate an increasing subsequence of actual elements\n );\n}\nfunction claim_space(nodes) {\n return claim_text(nodes, ' ');\n}\nfunction claim_comment(nodes, data) {\n return claim_node(nodes, (node) => node.nodeType === 8, (node) => {\n node.data = '' + data;\n return undefined;\n }, () => comment(data), true);\n}\nfunction find_comment(nodes, text, start) {\n for (let i = start; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 8 /* comment node */ && node.textContent.trim() === text) {\n return i;\n }\n }\n return nodes.length;\n}\nfunction claim_html_tag(nodes, is_svg) {\n // find html opening tag\n const start_index = find_comment(nodes, 'HTML_TAG_START', 0);\n const end_index = find_comment(nodes, 'HTML_TAG_END', start_index);\n if (start_index === end_index) {\n return new HtmlTagHydration(undefined, is_svg);\n }\n init_claim_info(nodes);\n const html_tag_nodes = nodes.splice(start_index, end_index - start_index + 1);\n detach(html_tag_nodes[0]);\n detach(html_tag_nodes[html_tag_nodes.length - 1]);\n const claimed_nodes = html_tag_nodes.slice(1, html_tag_nodes.length - 1);\n for (const n of claimed_nodes) {\n n.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n }\n return new HtmlTagHydration(claimed_nodes, is_svg);\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.data === data)\n return;\n text.data = data;\n}\nfunction set_data_contenteditable(text, data) {\n data = '' + data;\n if (text.wholeText === data)\n return;\n text.data = data;\n}\nfunction set_data_maybe_contenteditable(text, data, attr_value) {\n if (~contenteditable_truthy_values.indexOf(attr_value)) {\n set_data_contenteditable(text, data);\n }\n else {\n set_data(text, data);\n }\n}\nfunction set_input_value(input, value) {\n input.value = value == null ? '' : value;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value, important) {\n if (value == null) {\n node.style.removeProperty(key);\n }\n else {\n node.style.setProperty(key, value, important ? 'important' : '');\n }\n}\nfunction select_option(select, value, mounting) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n if (!mounting || value !== undefined) {\n select.selectedIndex = -1; // no option should be selected\n }\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked');\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\nlet crossorigin;\nfunction is_crossorigin() {\n if (crossorigin === undefined) {\n crossorigin = false;\n try {\n if (typeof window !== 'undefined' && window.parent) {\n void window.parent.document;\n }\n }\n catch (error) {\n crossorigin = true;\n }\n }\n return crossorigin;\n}\nfunction add_iframe_resize_listener(node, fn) {\n const computed_style = getComputedStyle(node);\n if (computed_style.position === 'static') {\n node.style.position = 'relative';\n }\n const iframe = element('iframe');\n iframe.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n 'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;');\n iframe.setAttribute('aria-hidden', 'true');\n iframe.tabIndex = -1;\n const crossorigin = is_crossorigin();\n let unsubscribe;\n if (crossorigin) {\n iframe.src = \"data:text/html,\";\n unsubscribe = listen(window, 'message', (event) => {\n if (event.source === iframe.contentWindow)\n fn();\n });\n }\n else {\n iframe.src = 'about:blank';\n iframe.onload = () => {\n unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n // make sure an initial resize event is fired _after_ the iframe is loaded (which is asynchronous)\n // see https://github.com/sveltejs/svelte/issues/4233\n fn();\n };\n }\n append(node, iframe);\n return () => {\n if (crossorigin) {\n unsubscribe();\n }\n else if (unsubscribe && iframe.contentWindow) {\n unsubscribe();\n }\n detach(iframe);\n };\n}\nconst resize_observer_content_box = /* @__PURE__ */ new ResizeObserverSingleton({ box: 'content-box' });\nconst resize_observer_border_box = /* @__PURE__ */ new ResizeObserverSingleton({ box: 'border-box' });\nconst resize_observer_device_pixel_content_box = /* @__PURE__ */ new ResizeObserverSingleton({ box: 'device-pixel-content-box' });\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, bubbles, cancelable, detail);\n return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n return Array.from(parent.querySelectorAll(selector));\n}\nfunction head_selector(nodeId, head) {\n const result = [];\n let started = 0;\n for (const node of head.childNodes) {\n if (node.nodeType === 8 /* comment node */) {\n const comment = node.textContent.trim();\n if (comment === `HEAD_${nodeId}_END`) {\n started -= 1;\n result.push(node);\n }\n else if (comment === `HEAD_${nodeId}_START`) {\n started += 1;\n result.push(node);\n }\n }\n else if (started > 0) {\n result.push(node);\n }\n }\n return result;\n}\nclass HtmlTag {\n constructor(is_svg = false) {\n this.is_svg = false;\n this.is_svg = is_svg;\n this.e = this.n = null;\n }\n c(html) {\n this.h(html);\n }\n m(html, target, anchor = null) {\n if (!this.e) {\n if (this.is_svg)\n this.e = svg_element(target.nodeName);\n /** #7364 target for